質問 > フロント機能 > [EC-CUBE2.13.3]特定の商品カテゴリでヘッダーやサイドナビのデザインを変更したい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
soc |
投稿日時: 2016/3/1 20:55
対応状況: 開発中
|
常連 登録日: 2015/10/16 居住地: 投稿: 44 |
[EC-CUBE2.13.3]特定の商品カテゴリでヘッダーやサイドナビのデザインを変更したい ------------------------------------------------------------------------------------------
[EC-CUBE] 2.13.3 [レンタルサーバ] CPI [OS] win8.1 [PHP] PHP 5.5.16 [データベース] MySQL 5.5.14 [ブラウザ] Google Chrome [導入プラグインの有無] 複数あり [カスタマイズの有無] ------------------------------------------------------------------------------------------ 商品一覧ページ、商品詳細ページで、 特定の商品カテゴリ(第1階層)でヘッダーやサイドナビのデザインを変更したい と考えております。 <イメージ> カテゴリID:1 に属する以降全てのカテゴリおよび商品 のページで、 ヘッダーおよびサイドナビのデザインを変更したい ★デザインAを適用するページ カテゴリID:1 カテゴリID:1 > カテゴリID:2 > カテゴリID:3 ★デザインBを適用するページ カテゴリID:4 カテゴリID:4 > カテゴリID:5 -------------------------------- 商品一覧ページ では、やりたいことが実現できました。 以下の情報を参考にいたしました。 http://www.moco358.com/archives/2987 見出し「カスタマイズしよう」 変更内容は以下です --------------- 「LC_Page_Products_List_Ex.php」 -------- class LC_Page_Products_Detail_Ex extends LC_Page_Products_Detail { -------- 以下に↓を追記 -------- public function doDefault($objProduct) { parent::doDefault($objProduct); // 第一カテゴリを取得する $db = new SC_Helper_DB_Ex(); $this->rootCategory = $db->sfGetFirstCat($this->arrForm['category_id']); } --------------- 「header.tpl」 -------- <!--{if $rootCategory.id == 9}--> <!--{include file="frontparts/bloc/読み込みたいテンプレートファイル(デザインA)"}--> <!--{else}--> 〜中略〜 デザインB の内容 <!--{/if}--> -------- 上記の変更で、 商品一覧ページでのヘッダー カテゴリID: 1〜3 はデザインAを適用することができました。 しかし、 このままでは カテゴリID: 1〜3 に属する 商品詳細ページにはデザインAが適用されませんでした。 試しに、 「LC_Page_Products_List_Ex.php」 で追記した内容を 「LC_Page_Products_Detail_Ex.php」 に追記してみましたが、何も変わりませんでした。(デザインBの表示のまま) 推測ですが、 $this->rootCategory = $db->sfGetFirstCat($this->arrForm['category_id']); この辺りの記述を、商品詳細ページ用に書き換える必要があるのではないかと思うのです。 または商品詳細ページ関連の何かのファイルに手を加える必要があるのか。。 わずかな情報でもご提供いただけましたら幸いです。 どうぞよろしくお願いいたします。 |
soc |
投稿日時: 2016/3/5 0:01
対応状況: 解決済
|
常連 登録日: 2015/10/16 居住地: 投稿: 44 |
解決 Re: [EC-CUBE2.13.3]特定の商品カテゴリでヘッダーやサイドナビのデザインを変更したい こちら自己解決いたしました。
----------------------- ----------------------- ■変更内容まとめ ----------------------- ★その1 data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php -------- class LC_Page_Products_Detail_Ex extends LC_Page_Products_Detail { -------- 以下に↓を追記 -------- public function doDefault($objProduct) { parent::doDefault($objProduct); // 第一カテゴリを取得する $db = new SC_Helper_DB_Ex(); $this->rootCategory = $db->sfGetFirstCat($this->arrForm['category_id']); } ----------------------- ----------------------- ★その2 Smarty/templates/default/header.tpl -------- -------- <!--▼HEADER--> <!--{strip}--> -------- 以下に↓を入力 -------- <!--{if $rootCategory.id == デザインAを適用する第1階層のカテゴリID}--><!-- 一覧ページ用 分岐条件 --> <!--{include file="frontparts/bloc/デザインA.tpl"}--><!-- デザインA --> <!--{elseif count($arrRelativeCat) > 0}--><!-- 詳細ページ用 分岐条件 --> <!--{if $arrRelativeCat.0.0.category_id == デザインAを適用する第1階層のカテゴリID}--><!-- 詳細ページ用 分岐条件 --> <!--{include file="frontparts/bloc/デザインA.tpl"}--><!-- デザインA --> <!--{else}--> <!--{include file="frontparts/bloc/デザインB.tpl"}--><!-- デザインB --> <!--{/if}--> <!--{else}--><!-- デザインAを適用する以外のページ --> <!--{include file="frontparts/bloc/デザインB.tpl"}--><!-- デザインB --> <!--{/if}--> ----------------------- ----------------------- ↑の詳細ページ用 分岐条件は、以下を参考にしました。 http://sudonon.hotcom-web.com/wordpress/?p=155 構造としては以下です。 ------------- ●一覧ページ用の条件分岐 分岐結果 ------ ○詳細ページ用の条件分岐 分岐結果 ------ ○商品ページ以外のページ(トップページなど)の条件分岐(else)1回目(詳細ページ用の条件分岐以外の条件) 分岐結果 ------ ●商品ページ以外のページ(トップページなど)の条件分岐(else)2回目(一覧ページ用の条件分岐以外の条件) 分岐結果 ------------- デザインA、デザインB のテンプレートファイルを2回ずつ登場させるのがスマートではないかもしれないですが、 ひとまずこれでヘッダーは目的どおりの表示をさせることができました。 ヘッダー以外のブロックでは(サイドナビなど)はこれを応用して作成します。 ご覧いただきありがとうございました。 ------------------------------ ------------------------------ 【 補足 】 以下のプラグインで、条件分岐を自分でかかずにやりたいことを実現できます。 「テンプレートおきにめすままプラグイン」 https://www.ec-cube.net/products/detail.php?product_id=299 しかし、以下のプラグインと競合しました。 「PGマルチペイメントサービス決済コア機能プラグイン」 https://www.ec-cube.net/products/detail.php?product_id=691 競合を起こし、クレジットカード決済が使用不可の状態になったため、 今回の条件分岐を試みました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |