同じページでパンくずナビゲーションモジュールを二回表示したいと質問がありました。
パンくずナビゲーションモジュールについては下記のページをご覧ください。
商品一覧ページでパンくずを設置する - 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"が使用できるようになりました。
テンプレートに貼り付けて表示を確認してみましょう。