Archive   RSS   (Login)

まぁそのまんま備忘録で

Category: スポンサー広告
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Category: 未分類
xoops block
ブロックをどこでも好きなところに表示できるプラグインです。

xoops_block Smarty プラグイン



まず,「下手な考え休むに似たり」同様「下手な説明,拷問に似たり」ということで,説明は後回し。的確な実例での方が,分かりやすいでしょう。
ということで,TinyDのトップページに「TinyDメニュー」ブロックをとりこむ手順を説明します。


はじめに,テキストエディタで新しいファイルを作成し,一番上に,次のコードを記述します。


<{xoops_block mod="mod_dir" func="block_fnc" opt="options" assign="tmpl_assign"}>

次に,利用する「ブロック」のテンプレートを探します。「TinyDメニュー」ブロック右の編集をクリックすると「テンプレートを編集」という項目が見つかります。そこをクリックすると,「tinycontent_nav_block.html」が該当するテンプレートであることが分かります。この方法が使えないModuleもありますが,ブロック名と同じことが多いので,比較的簡単に見つかるでしょう。


そこに書いてあるコードをコピーし,先ほど記述したコードの下に貼り付けます。
ここまでの結果は次のようになります。



CodeList-1

<{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>

赤い字で表示されている部分を,それに該当する文字で置き換えるわけですが,それぞれの意味は次の通りです。



mod_dir

モジュールディレクトリ名


block_fnc

ブロック関数名

options

関数の引数(必要に応じて)

tmpl_assign

テンプレートアサイン名



といわれても,すぐ分かるのは,「モジュールディレクトリ名」くらいのものです。残りの部分には何を入れればいいのでしょう。その情報は,モジュールの「xoops_version.php」にあります。
TinyDの「xoops_version.php」を開いてみましょう。
とはいっても,そのファイルは「260行」ほどのコードが記述されています。どの部分が役立つんでしょうか。先に述べた「ブロックのテンプレートファイル名」の一部などをキーにして検索すると,すぐに見つかります。私はファイル名の一部「block.html」をキーにして探しました。見つかったコードは下記です。


CodeList-2

$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>
&nbsp;&nbsp;[<{$link.date}>]
</li>

<{/foreach}>
</ul>
</div>
<!-- xoops_block Smarty 終了 -->

結果は? ちゃんと表示されていますね。


それにしても,このプラグイン,面白いですね。アイデア次第。面白い使い方ができそうです。
たとえば,piCalのミニカレンダをWeBLOGのトップページに,WeBLOGのカレンダをWordPressのページになど,いろんな使い方ができそうです。


工夫次第で,Xoopsの弱点(?)とされていた,自由なデザイン・レイアウトができるかもしれません。



注意


[2007-02-24 (土) 09:52]


引数に「mod」を使うと,エラーになることがあります。原因は,利用するブロックのモジュールに



  • module/language/japanese/blocks.php

  • module/language/japanese/blocks.php


がないことです。ブロックを作っておいて,上記二つのファイルがない,なんてことはあり得ない,と思っていましたが,実は最近経験しました。また,自作モジュール(もどき)などを作り,利用する場合も,この二つのファイルは必ず用意しましょう。ファイルの中身は「<?php~?>」だけでもいいです。



なお,「mod="☆"」でなく,「file="○"」の場合は,無くてもいいようですね。その代わり,テンプレートで「定数」を使っていれば,当然,そこは表示されませんが。

  « スパム対策  EBS にアタッチしたボリュームを認識させる(ubuntu) »

Comments

Leave a Comment

04 | 03  (2017) | 05
SUN MON TUE WED THU FRI SAT
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
最新コメント
最新トラックバック
プロフィール
QR

Author:F
 
携帯の方はこちら >>

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。