XPressME Integration Kit

フォーラム

Re: 特定のモジュールページにxpressMEのブロックを表示させる方法

永らくありがとうございました フォーラム 使い方全般 特定のモジュールページにxpressMEのブロックを表示させる方法 Re: 特定のモジュールページにxpressMEのブロックを表示させる方法

#3192
toemon
キーマスター

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テンプレート変数」にリストされたものだけです。