質問 > フロント機能 > デフォルトであるブロックのテンプレート内でのPageLayout.page_id指定 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
senchang |
投稿日時: 2010/3/3 18:59
対応状況: −−−
|
半人前 登録日: 2010/3/3 居住地: 東京 投稿: 26 |
デフォルトであるブロックのテンプレート内でのPageLayout.page_id指定 初めまして。いつもここで勉強させて頂いております。
やや急ぎの為、投稿させて頂きました。 デフォルトで存在するブロック(best5.tpl等)の テンプレートファイル内で、 <!--{if $arrPageLayout.page_id == "●"}--> による表示の切り替えが出来ません。 今回、おすすめ商品のブロックを商品詳細ページのみ別のレイアウトで表示させたいと考えております。 具体的には、下記のような事を試してみました。 <!--{if $arrPageLayout.page_id == "3"}--> <div id="recomendarea" style="background:#f00;"> ・ ・ ・ (以下デフォルトのソース) <!--{else}--> <!--▼おすすめ情報ここから--> <!--{if count($arrBestProducts) > 0}--> <div id="recomendarea"> ・ ・ ・ (以下デフォルトのソース) <!--{/if}--> 商品詳細ページでのみ、おすすめ商品のブロック部分の背景が真っ赤になれば成功なのですが、 商品詳細でもそれ以外のページでも変化がありませんでした。 <!--{if $arrPageLayout.page_id == "●"}-->を使っての 表示切替は、以前site_frame.tpl内の<title>〜</title>などで 使用しておりましたが、ブロック内での使用は出来ないのでしょうか? また、 <!--{assign var=sample value="`$smarty.const.URL_DIR`user_data/sample.php"}--> <!--{if $smarty.server.PHP_SELF==$sample}--> 上記のような指定方法であればブロックに対しても有効でした。 さすがに商品詳細ページ一つ一つに名前を付けて指定するのは、 現実的ではないと思っておりますので、 <!--{if $arrPageLayout.page_id == "3"}--> のように 「商品詳細ページのみ」での指定方法がないかと苦悩しております。 どなたか、ブロックについて上記のような使い方をしたことがある方や、 すぐに原因がお分かりになる方がいらっしゃいましたらご助力頂けますと幸いでございます。 何卒、宜しくお願い申し上げます。 EC-CUBEバージョン 2.4.1 PHPバージョン PHP 5.2.11 DBバージョン MySQL 5.0.33 |
seasoft |
投稿日時: 2010/3/5 0:17
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: デフォルトであるブロックのテンプレート内でのPageLayout.page_id指定 Smarty 変数をダンプしてみては?
私のメモですが、参考になると良いのですが・・・ http://seasoft.jp1.cx/ec/tips/smarty
|
senchang |
投稿日時: 2010/3/5 18:26
対応状況: 解決済
|
半人前 登録日: 2010/3/3 居住地: 東京 投稿: 26 |
Re: デフォルトであるブロックのテンプレート内でのPageLayout.page_id指定 seasoft様
アドバイスをありがとうございます。 恥ずかしながら扱える言語がhtmlとcssのみであり、せっかく頂いたアドバイスを有効活用する事が出来ませんでした。 しかしながら、下記のようにする事で目的を果たせました。 <!--{assign var=detail value="`$smarty.const.URL_DIR`products/detail.php"}--> <!--{if $smarty.server.PHP_SELF==$detail}--> 商品詳細でのみ使用するソース <!--{else}--> その他で使用するソース <!--{/if}--> detail.phpという指定方法で、全商品に反映されるという認識がなかった為、初歩的なところに気付けずにおりました。 $arrPageLayout.page_id == "●" を使用しての指定が出来ない、という問題に対しては根本的な解決になっておりませんが、取り急ぎ上記の方法で解決とさせて頂きます。 有難う御座いました。 |
DELIGHT |
投稿日時: 2010/3/6 12:19
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: デフォルトであるブロックのテンプレート内でのPageLayout.page_id指定 ブロック内で変数ダンプしてみましたが、
$arrPageLayout が無かったので、ページIDを取得できるようなPHPを考えてみました。 (あくまで例です。) data/class/pages/products/LC_Page_FrontParts_Block_Best5.php process() $objView->assignobj($this); の手前辺りに
の記述追加で、 <!--{$tpl_page_id}--> にてページIDを取得できると思います。 解決方法となるかは微妙な気がしますが、参考までに。 (間違いがあれば指摘くださると助かります。) 確認環境 -------- EC-CUBEバージョン 2.4.3 PHPバージョン PHP 5.2.9 DBバージョン PostgreSQL 8.3.7
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |