xugj_blockプラグインの使い方
他のモジュールのブロックを利用して,コンテンツを充実させよう
xugj_blockプラグインの活用法
「xugj_blockプラグイン」とは,他のモジュールのブロックを利用できるようにするプラグインです。テンプレートやコンテンツに書くことができるので,自由なカスタマイズができます。
「xugj_blockプラグイン」の入手法やインストールなど詳しいことは,「GIJOEさんのxugj_blockに関する記事」をご覧ください。
基本構文
<{xugj_block file="☆" func="○" opt="□" item="△"}>- ☆:モジュールのブロックphpファイルまでのパスを,modulesから書く。
- ○:ブロックの表示関数名(末尾が「_show」となっている)
- □:オプションの指定(ブロックのオプション設定画面と対応している)
- △:アサインする名前。「block」とすると,テンプレートのコードをそのまま利用できる。
必要な情報の集め方
情報収集のためのキーワードを調べる
- 利用したいブロックの設定画面を開く
- 一部のモジュールをのぞき,ブロック設定画面に,「このブロックのテンプレートを編集する」があるので,これをクリックすると,テンプレート名が分かる。
- xoops_version.phpを開き,先ほどのテンプレート名から先頭の「モジュールディレクトリ名部分+アンダーバー(_)」を除いて検索する。
テンプレート名での検索の例
bulletinの「最新ニュース」ブロック。テンプレート名は「bulletin_block_new.html」。この場合は,「block_new.html」や「_new.html」を検索語とする。
検索結果
$modversion['blocks'][$i]['file'] = "blocks.php";
$modversion['blocks'][$i]['name'] = constant($constpref.'_BNAME4');
$modversion['blocks'][$i]['description'] = constant($constpref.'_BDESC4');
$modversion['blocks'][$i]['show_func'] = "b_bulletin_new_show";
$modversion['blocks'][$i]['edit_func'] = "b_bulletin_new_edit";
$modversion['blocks'][$i]['options'] = "$mydirname|published DESC|10|255|0";
$modversion['blocks'][$i]['template'] = "{$mydirname}_block_new.html";
$modversion['blocks'][$i]['can_clone'] = true ;この結果から,分かること。
- file:"modules/モジュールディレクトリ名/blocks/blocks.php"
- func:"b_bulletin_new_show"
- opt:"$mydirname|published DESC|10|255|0"
「opt」の部分は,「$mydirname」部分を公開側のモジュールディレクトリ名に,「|(縦棒)」を「,(カンマ)」に置き換える。下記のようになる。
opt:"モジュールディレクトリ名,published DESC,10,255,0" - item(またはassign):好きな名前を指定できる。「block」を指定すると,テンプレートコードをそのまま使えるので便利かもしれない。
d3モジュールの場合,xoops_version.phpにテンプレート名が書かれていない場合がある。しかし,ブロックテンプレート名とfunc名に共通点があるので,それを手がかりに探せる。たとえば,
テンプレート名:d3blog_block_latest_entries.html
func名:func名:b_d3blog_latest_entries_show
いまの場合,「latest_entries」が検索語になる。この方法は,テンプレート名が分かっている場合でも使える。
実際の使い方例
使用例を示した方が分かると思うので,いくつか紹介。
picoの最新のコンテンツリストを表示する
公開側のモジュール名を「manual」としてインストールした場合。
- ブロック名:コンテンツ一覧
- モジュールディレクトリ名:manual
- テンプレート名:manual_block_list.html
- 検索語:_list
- 検索ファイル:trust/modules/pico/xoops_version.php
結果
$modversion['blocks'][3] = array(
'file' => 'blocks.php' ,
'name' => constant($constpref.'_BNAME_LIST') ,
'description' => '' ,
'show_func' => 'b_pico_list_show' ,
'edit_func' => 'b_pico_list_edit' ,
'options' => "$mydirname||o.created_time DESC|10||0" ,
'template' => '' , // use "module" template instead
'can_clone' => true ,
) ;検索結果より以下が分かる。
- file="modules/manual/blocks/blocks.php"
- func="b_pico_list_show"
- opt="$mydirname||o.created_time DESC|10||0" → "manual,,o.created_time DESC,10,,0"
- item="block"……好きな名前を付けていい
xugj_blockのコード
<{xugj_block file="modules/manual/blocks/blocks.php" func="b_pico_list_show" opt="manual,,o.created_time DESC,10,,0" item="block"}>表示のためのコード
該当するテンプレートのコードをそのまま流用
<ul class="pico_block_menu">
<{foreach from=$block.contents item=content}>
<li style="line-height:1.2; margin:4px 0px;">
<a href="<{$block.mod_url}>/<{$content.link}>" title="<{$content.cat_title}>(<{$content.created_time_formatted}>)">
<{$content.subject|strip_tags|truncate:"128"}>
(<{$content.cat_title}>)
<{$content.created_time_formatted}>
</a>
<{if $content.body}>
<br />
<{$content.body|strip_tags|truncate:"100"}>
<{/if}>
</li>
<{/foreach}>
</ul>d3blogの最新エントリを表示する
公開側のモジュール名を「leaf」としてインストールした場合
- ブロック名:最新のエントリ
- モジュールディレクトリ名:leaf(d3モジュールなので好きな名前を使える)
- テンプレート名:leaf_block_latest_entries.html
- 検索語:latest_entries
- 検索ファイル:trust/modules/d3blog/xoops_version.php
検索結果
$modversion['blocks'][$m]['file'] = 'blocks.php';
$modversion['blocks'][$m]['name'] = constant($constpref.'_LATEST_ENTRIES');
$modversion['blocks'][$m]['description'] = constant($constpref.'_LATEST_ENTRIES_DESC');
$modversion['blocks'][$m]['show_func'] = 'b_d3blog_latest_entries_show';
$modversion['blocks'][$m]['edit_func'] = 'b_d3blog_latest_entries_edit';
$modversion['blocks'][$m]['template'] = '';
$modversion['blocks'][$m]['options'] = $mydirname.'|5|25|Y/m/d|1|0|0|0|';
$modversion['blocks'][$m]['can_clone'] = true ;検索結果より以下が分かる
- file="modules/leaf/blockx/blocks.php"
- func="b_d3blog_latest_entries_show"
- opt="$mydirname.'|5|25|Y/m/d|1|0|0|0|'" → "leaf,5,25,Y/m/d,1,0,0,0,"
- item="block"……好きな名前を付けていい。
xugj_blockの書き方
<{xugj_block file="modules/leaf/blocks/blocks.php" func="b_d3blog_latest_entries_show" opt="leaf,5,25,Y/m/d,1,0,0,0," item="block"}>表示のためのコード
リスト形式の部分だけを利用する場合
<ul class="<{$block.mydirname}>BlockLatestEntries">
<{foreach item=entry from=$block.entries}>
<li>
<a href="<{$block.mod_url}>/details.php?bid=<{$entry.bid}>">
<{$entry.title}>
</a>
<span>(<{$entry.date}>)</span>
<{if $block.show_contents and $entry.contents}>
<div><{$entry.contents}></div>
<{if $entry.readMore}>
<span class="readMore">
<a href="<{$block.mod_url}>/details.php?bid=<{$entry.bid}>" title="<{$block.lang_readmore}>">
<{$block.lang_readmore}>
</a>
</span>
<{/if}>
<{/if}>
</li>
<{/foreach}>
</ul>myalbumのブロック「最近の画像」を利用する例
- ブロック名:最近の画像
- モジュールディレクトリ名:myalbum
- テンプレート名:myalbum_block_topnews.html
- 検索語:topnews
- 検索ファイル:html/modules/myalbum/xoops_version.php
検索結果
$modversion['blocks'][2]['file'] = "myalbum_topnews.php";
$modversion['blocks'][2]['name'] = _ALBM_BNAME_RECENT . $mydirnumber ;
$modversion['blocks'][2]['description'] = "Shows recently added photos";
$modversion['blocks'][2]['show_func'] = "b_myalbum_topnews_show";
$modversion['blocks'][2]['edit_func'] = "b_myalbum_topnews_edit";
$modversion['blocks'][2]['options'] = "$mydirname|5|20|0|1||1";
$modversion['blocks'][2]['template'] = "myalbum{$mydirnumber}_block_topnews.html" ;
$modversion['blocks'][2]['can_clone'] = true ;上記コードより以下が分かる
- file="modules/myalbum/blocks/myalbum_topnews.php"
- func="b_myalbum_topnews_show"
- opt="$mydirname|5|20|0|1||1" → "myalbum,5,20,0,1,,1"
- item="oyoyo"(一般的なblockでなくoyoyoにしてみた)
xugj_blockの書き方
<{xugj_block file="modules/myalbum/blocks/myalbum_topnews.php" func="b_myalbum_topnews_show" opt="myalbum,5,20,0,1,,1" item="oyoyo"}>表示のためのコード
元のテンプレートコードを参考にしている
<ul>
<{foreach item=photo from=$oyoyo.photo}>
<li>
<a href="<{$oyoyo.mod_url}>/photo.php?lid=<{$photo.lid}>&cid=<{$photo.cid}>">
<{$photo.title}>
</a>
(<{$photo.date}>)
</li>
<{/foreach}>
</ul>※元のコードの「$block」を「$oyoyo」に置き換えている。
コメント
コメント一覧
なーお
投稿日時 2008-7-1 23:38
参考になりました。
xugj_block、初めて使いましたが、とても便利で応用が効きますね!
当方の記事で、リンクしましたので、トラックバック的にコメント残しておきます。
http://www.naaon.com/modules/plactice/index.php?content_id=124
xugj_block、初めて使いましたが、とても便利で応用が効きますね!
当方の記事で、リンクしましたので、トラックバック的にコメント残しておきます。
http://www.naaon.com/modules/plactice/index.php?content_id=124
1件表示
(全1件)
すべてのコメント一覧へ

XoopsUsersプラグインの使い方
Smarty|xoops_block プラグイン
コンテンツの修正時に,日付を更新させない方法
設定ファイルを利用したメタ情報の書き方・表示法(一般的モジュール)
メタ情報の書き方・表示法(一般的モジュール)
ログインユーザーの所属グループを調べる
メタ情報の書き方,表示法(picoの場合)
pico:コンテンツページの改造メモ
画像(写真)が枠からずれる:CSSでどうしたら?
その他のカテゴリー記事をブロックで
モジュールごとのコメント一覧表示法
画像サイズを調べる
