同じページでパンくずナビゲーションモジュールを二回表示したいと質問がありました。

パンくずナビゲーションモジュールについては下記のページをご覧ください。

商品一覧ページでパンくずを設置する - 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"が使用できるようになりました。

テンプレートに貼り付けて表示を確認してみましょう。