まぁそのまんま備忘録で
| 確認キーワード | ※上に表示されているキーワードをご記入下さい。 ({/if}) |
|---|
まず,「下手な考え休むに似たり」同様「下手な説明,拷問に似たり」ということで,説明は後回し。的確な実例での方が,分かりやすいでしょう。
ということで,TinyDのトップページに「TinyDメニュー」ブロックをとりこむ手順を説明します。
はじめに,テキストエディタで新しいファイルを作成し,一番上に,次のコードを記述します。
<{xoops_block mod="mod_dir" func="block_fnc" opt="options" assign="tmpl_assign"}>次に,利用する「ブロック」のテンプレートを探します。「TinyDメニュー」ブロック右の編集をクリックすると「テンプレートを編集」という項目が見つかります。そこをクリックすると,「tinycontent_nav_block.html」が該当するテンプレートであることが分かります。この方法が使えないModuleもありますが,ブロック名と同じことが多いので,比較的簡単に見つかるでしょう。
そこに書いてあるコードをコピーし,先ほど記述したコードの下に貼り付けます。
ここまでの結果は次のようになります。
<{xoops_block mod="mod_dir" func="show_func" opt="options" assign="tmpl_assign"}>
<table cellspacing="0">
<tr>
<td id="mainmenu">
<{foreach item=link from=$block.links}>
<a class="menuMain" href="<{$block.mod_url}>/<{$link.href}>">
<{$link.title}><{* <{$link.date|ryus_date:"new"}> *}>
</a>
<{/foreach}>
</td>
</tr>
</table>赤い字で表示されている部分を,それに該当する文字で置き換えるわけですが,それぞれの意味は次の通りです。
といわれても,すぐ分かるのは,「モジュールディレクトリ名」くらいのものです。残りの部分には何を入れればいいのでしょう。その情報は,モジュールの「xoops_version.php」にあります。
TinyDの「xoops_version.php」を開いてみましょう。
とはいっても,そのファイルは「260行」ほどのコードが記述されています。どの部分が役立つんでしょうか。先に述べた「ブロックのテンプレートファイル名」の一部などをキーにして検索すると,すぐに見つかります。私はファイル名の一部「block.html」をキーにして探しました。見つかったコードは下記です。
$modversion['blocks'][1]['file'] = "tinycontent_navigation.php";
$modversion['blocks'][1]['name'] = sprintf( _MI_TC_BNAME1 , $mydirnumber ) ;
$modversion['blocks'][1]['description'] = _MI_TC_BDESC1 ;
$modversion['blocks'][1]['show_func'] = "tinycontent{$mydirnumber}_block_nav";
$modversion['blocks'][1]['template'] = "tinycontent{$mydirnumber}_nav_block.html";
$modversion['blocks'][1]['can_clone'] = false ;
$modversion['blocks'][1]['options'] = "{$mydirname}";
注目するのは「show_func」,「options」で,それぞれ「CodeList-1」の「show_func」と「options」に対応します。残るは「tmpl_assign」名です。私は,ほとんどの場合,CodeList-1の青字の部分を指定しています。でも,分かりにくいですね。
また,変数も使用していますので,その部分を普通の文字にしなければなりません。「{$mydirnumber}」は番号,「$mydirname」は,モジュールディレクトリ名でしょう。TinyDはモジュール名の後ろに「番号」を振るだけで,複数設置可能なモジュールですから。
「tmpl_assign」については,作者がこう述べています。
assign のところは、適当な名前を入れてください。その名前で、テンプレートにアサインされますので、「TinyDのメニューブロック」のテンプレートをコピーしてきて、$block.のところを、指定した名前に変更してください。
例えば、「assign="hogehoge" 」としたら、「$block.xxxx」を「$hogehoge.xxxx」に変更してください。この場合は、それでOKだと思います。
ということで,次のように記述しました。内容全体に背景色をつけ,リストスタイルに変更しています。
<!-- xoops_block Smarty 開始 -->
<div style="background:#eeebdc; padding:5px 13px 10px 13px;">
<h4>ページ目次一覧</h4>
<{xoops_block mod="tauport" func="tinycontent_block_nav" opt="tauport" assign="block"}>
<ul style="font-size:14px; line-height:140%;">
<{foreach item=link from=$block.links}>
<li style="list-style:none; margin:0px;">
<a class="menuMain" href="<{$block.mod_url}>/<{$link.href}>"><{$link.title}></a>
[<{$link.date}>]
</li>
<{/foreach}>
</ul>
</div>
<!-- xoops_block Smarty 終了 -->
結果は? ちゃんと表示されていますね。
それにしても,このプラグイン,面白いですね。アイデア次第。面白い使い方ができそうです。
たとえば,piCalのミニカレンダをWeBLOGのトップページに,WeBLOGのカレンダをWordPressのページになど,いろんな使い方ができそうです。
工夫次第で,Xoopsの弱点(?)とされていた,自由なデザイン・レイアウトができるかもしれません。
[2007-02-24 (土) 09:52]
引数に「mod」を使うと,エラーになることがあります。原因は,利用するブロックのモジュールに
がないことです。ブロックを作っておいて,上記二つのファイルがない,なんてことはあり得ない,と思っていましたが,実は最近経験しました。また,自作モジュール(もどき)などを作り,利用する場合も,この二つのファイルは必ず用意しましょう。ファイルの中身は「<?php~?>」だけでもいいです。
なお,「mod="☆"」でなく,「file="○"」の場合は,無くてもいいようですね。その代わり,テンプレートで「定数」を使っていれば,当然,そこは表示されませんが。
ServerAdmin webmaster@localhost
DocumentRoot /var/pne3/web
Options FollowSymLinks
AllowOverride All
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /mnt/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /mnt/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
![]() |