Re: 特定のモジュールページにxpressMEのブロックを表示させる方法
永らくありがとうございました › フォーラム › 使い方全般 › 特定のモジュールページにxpressMEのブロックを表示させる方法 › Re: 特定のモジュールページにxpressMEのブロックを表示させる方法
ky982339さん、こんにちは
お問い合わせの内容を実現する上で下記2点の問題があります。
- ブロックテンプレート内では$xoops_requesturiなどのXOOPS Smarty変数が利用出来ない。
- ブロックの内容が空(含む空白行)であってもブロックが表示される。
1番目の問題に対処するには、$_SERVERをブロック内で利用出来るSmarty変数にassignしておき、それを判定に利用する必要があります。
include/xpress_block_render.phpの168行目あたり
<code>$temp_option = explode(':' , $options[1]);</code>
に$block = $_SERVER;を追加する。
<code>$block['request_uri'] = $_SERVER['REQUEST_URI'];<br /> $temp_option = explode(':' , $options[1]);</code>
2番目の問題に対処するには、
include/xpress_block_render.phpの184,5行目あたり
<code>return $ret ;</code>
を
<code>if(preg_match('/S/',$ret['content'])){<br /> return $ret ;<br /> }else {<br /> return null;<br /> }</code>
に変更する。
(これらは、チケット #372に登録し チェンジセット 656にて変更させていただきました) Ver2.3.4にて対応済みです。
上記の変更を行った上で
ブロックテンプレート側で
<code><{if $block.request_uri == '/cube/modules/pico/index.php?content_id=3'}><br /> <div class="xpress_block"><br /> <{$block.err_message}><br /> <div class="xpress_tag_cloud_block"><br /> <{$block.tag_cloud}><br /> </div><br /> </div><br /> <{/if}></code>
みたいな感じで、$block.request_uriで判定するようにすれば実現できると思います。(タグクラウドブロックの表示先にpicoモジュールを設定することをお忘れ無く)
/cube/modules/pico/index.php?content_id=3の部分は実際に表示したいページのrequest_uriに読み替えてください。
また、
直接サイトテーマファイルに埋め込んで
の方法は、$block smarty変数はブロックをレンダリングする際に利用するもので、テーマテンプレート内では利用出来ないため無理があります。
備考、現在テーマテンプレート内でご利用いただけるXPressMEのsmarty変数は
「XOOPS smartyテンプレート変数」にリストされたものだけです。