同じページでパンくずナビゲーションモジュールを二回表示したいと質問がありました。
パンくずナビゲーションモジュールについては下記のページをご覧ください。
商品一覧ページでパンくずを設置する - SOY Shopを使ってみよう
パンくずは<!-- shop:module="common.breadcrunb_navigation" -->タグを利用して出力しますが、shop:moduleはblock:id="item*"やcms:id="item_name*"のようにID名の後に*で何度も使用することは出来ず、新たに同じ機能のモジュールを作成しなければなりません。
今回はshop:moduleの複製について紹介します。
はじめにshop:moduleをカスタマイズ可能な状態にします。
.
├── cms
│ └── soyshop
│ └── webapp
│ └── src
│ └── module
│ └── site
│ └── common
│ └── breadcrumb_navigation.php
└── shop
└── .module
└── common
└── breadcrumb_navigation.php
上のディレクトリ構造の用に
/soyshop/webapp/src/module/site/common/以下にあるbreadcrumb_navigation.php
を
/ショップID/.module/以下にcommonディレクトリ
を作成して、common以下に同名のファイルをコピーします。
元々は前者のファイルを出力していましたが、後者の位置に同名のファイルを置くと、こちらのファイルを優先して読み込むようになります。
このファイルはバージョンアップ時に上書きされて消えるということはありません。
続いてshop:moduleの複製を行います。
.
└── shop
└── .module
└── common
├── breadcrumb_navigation.php
└── breadcrumb_navigation2.php
先ほど複製したファイルを複製します。この時ファイル名は末尾に2を付けると良いでしょう。
このファイルを開いて、下記のように編集します。
<?php
function soyshop_breadcrumb_navigation2($html, $page){
//shop:module="common.breadcrumb_navigation2"を使用できるようにする
$obj = $page->create("soyshop_breadcrumb_navigation2", "HTMLTemplatePage", array(
"arguments" => array("soyshop_breadcrumb_navigation2", $html)
));
//shop:module="common.breadcrumb_navigation"のファイル内の関数を読み込む
if(!function_exists("soyshop_breadcrumb_navigation")){
include(dirname(__FILE__) . "/breadcrumb_navigation.php");
}
//shop:module="common.breadcrumb_navigation"のファイルを実行する
soyshop_breadcrumb_navigation($html, $page);
}
?>
これで、shop:module="common.breadcrumb_navigation2"が使用できるようになりました。
テンプレートに貼り付けて表示を確認してみましょう。





