商品詳細表示プラグイン内でPHPの記述を利用して商品情報を取得する
2014.06.11
商品詳細表示プラグインでフリーページで詳細ページを作成した時に、
PHPで商品情報を取得して、条件に従っていろいろとしたいんだけど、
商品情報を取得する方法はありますかと質問を受けたので、
今回は商品詳細表示プラグイン内で商品情報の取得方法について説明します。
商品詳細表示プラグインとは、商品詳細ページ以外で商品情報を表示するプラグインです。
フリーページやナビゲーションページを商品詳細ページに変えることができます。
何故、このようなことをする必要があるか?ですが、
登録した商品は詳細表示するページをひとつしか設定できません。
たとえば、PC版、スマホ版と分けた時に仕様ではスマホ版の詳細ページを用意できません。
そこで商品詳細表示プラグインを使ってフリーページでスマホ版の詳細ページを用意する時に利用します。
一つの商品を様々な詳細ページで表示する | SOY Shopマニュアル
SOY Shopでは、テンプレートに直接PHPを書くことで、PHPの処理を追加することができます。
商品情報を取得して、PHPで何かを処理をして表示したいという場合、
<!-- block:id="item" --> <?php var_dump($item); ?> <!-- /block:id="item" -->
のようにblock:id="***"の***の文字列の先頭に$を付けると、
array(133) {
["id"]=>
string(2) "12"
["id_visible"]=>
bool(true)
["item_name"]=>
string(18) "なんかの動画"
["item_name_visible"]=>
bool(true)
["child_item_list"]=>
array(0) {
}
["child_item_list_visible"]=>
bool(true)
["item_price_visible"]=>
bool(true)
["item_price_visible_visible"]=>
bool(true)
["item_price"]=>
string(5) "3,000"
["item_normal_price_visible"]=>
bool(true)
["item_normal_price_visible_visible"]=>
bool(true)
["item_normal_price"]=>
string(5) "3,000"
/** 以下省略 **/
}
配列の形で商品情報を取得できます。
この仕様を利用して、
<!-- block:id="item" -->
<?php if($item["item_name"] == "なんかの動画"){
echo "この商品は動画らしい";
}else{
echo "この商品は動画ではないらしい";
}
<!-- /block:id="item" -->
といった形で、PHPで値を調べて出し分けを行うことができます。
本題に移って、商品詳細表示プラグインで上記のように商品情報を取得する方法を見ていくと
はじめに普通に表示するとして、テンプレートに記述する方法が
<!-- block:id="item_by_alias" --> <h2 cms:id="item_name">商品名</h2> <!-- /block:id="item_by_alias" -->
というようにblock:id="item_by_alias"というタグで囲います。
ということで、PHPで値を取得する時は、
<!-- block:id="item_by_alias" --> <?php var_dump($item_by_alias); ?> <!-- /block:id="item_by_alias" -->
このように、block:idのitem_by_aliasの先頭に$を付けて取得します。