XPressME Integration Kit

フォーラム

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

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

#3191
toemon
キーマスター

お問い合わせの内容を実現する上で下記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>

に変更する。

上記の変更を行った上で (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>

のようにすれば実現できると思います。