バージョン選択

フォーラム

メニュー

オンライン状況

29 人のユーザが現在オンラインです。 (17 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 29
もっと...

サイト内検索

質問 > フロント機能 > デフォルトであるブロックのテンプレート内での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


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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);
の手前辺りに
$url = str_replace(URL_DIR, '', $_SERVER['PHP_SELF']);
$objQuery = new SC_Query();
$result = $objQuery->select("page_id","dtb_pagelayout", "url='$url'");
$page_id = 0;
if(count($result) > 0 ){
    $page_id = $result[0]['page_id'];
}
$this->tpl_page_id = $page_id;

の記述追加で、
<!--{$tpl_page_id}-->
にてページIDを取得できると思います。
解決方法となるかは微妙な気がしますが、参考までに。
(間違いがあれば指摘くださると助かります。)

確認環境
--------
EC-CUBEバージョン 2.4.3
PHPバージョン PHP 5.2.9
DBバージョン PostgreSQL 8.3.7


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,926名です
総投稿数は110,012件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.