商品一覧ページでカテゴリー毎に表示する文言を変更する[要PHP]
パーツモジュールを利用して、
商品一覧ページでカテゴリー毎に表示する文言を替えるモジュールを作成します。
モジュールの追加はこちらを参考に作成してもらい、
新たに追加したモジュールを元に記述を進めていきます。
追加したモジュールを編集する画面を開くと、
<?php
//ここにモジュールとして読み込むHTML・PHPを記述してください。
//使用可能な変数
// $html テンプレートに記述されたHTML
// $htmlObj ページオブジェクト($htmlObj->createAdd()が使えます)
?>
という記述が予め記述されています。
はじめに下記のように記述し、
<?php
$page = $htmlObj->getPageObject()->getObject();
?>
ページオブジェクトを取得します。
$pageの値を見てみると、
object(SOYShop_ListPage)#8 (14) {
["type:private"]=>
string(8) "category"
["categories:private"]=>
array(0) {
}
["defaultCategory:private"]=>
int(1)
["fieldId:private"]=>
NULL
以下略
SOYShop_ListPage(商品一覧ページ)というどのテンプレートを利用しているかわかるオブジェクト名を取得できます。
本件は、商品一覧ページで使用するモジュールなので、
<?php
$page = $htmlObj->getPageObject()->getObject();
if(!($page instanceof SOYShop_ListPage)){
return;
}
?>
SOYShop_ListPage以外はreturnするようにすれば、商品一覧ページのテンプレート専用のモジュールになります。
<?php
$page = $htmlObj->getPageObject()->getObject();
if(!($page instanceof SOYShop_ListPage)){
return;
}
//カテゴリー名を取得します。
$category = $page->getCurrentCategory();
$name = ($category) ? $category->getName() : "";
//カテゴリー名毎に表示する文字列を記述します。
switch($name){
case "カテゴリ1":
echo "カテゴリ1ですよ";
break;
case "カテゴリ2":
echo "カテゴリ2ですよ";
break;
case "カテゴリ3":
echo "カテゴリ3ですよ";
break;
default:
echo "ディフォルトです";
break;
}
?>
あとはカテゴリー名を取得し、カテゴリー名毎に処理を記述すれば表示されるようになります。