概要
EC-CUBE のトップページにて、「あるカテゴリの商品リストの一部を抽出」ということを複数のカテゴリに対してやりたかったので、その方法を調べてみた。
PHP 側でリストを作って Smarty 側で整形をする(おすすめ商品とかランキングとかのやり方)というのが筋なのだろうけれど、その方法だと抽出したいカテゴリを指定できないので。
やりたいこと
管理画面のブロックにて、カテゴリID・並び順・抽出件数などを指定すると、そのカテゴリの商品リストを抽出出来るようにする。
PHPプログラマーは一切稼働せず、サイト運営者のみで完結出来るようにする。
できること
トップページに「7月のセール」「8月のセール」「贈答品」などのカテゴリに登録されている商品の一覧を表示させ、そこから各カテゴリページへの誘導を促せる。
できないこと
見せ方に関してはコーディングが必要なので、純粋なサイト運営者だけではそれぞれの用途に適した見せ方にするのは難しい。
ただし、毎回同じ見せ方でいいのであれば、初回だけコーダーが作ってしまえば問題は発生しない。
動作確認バージョン
EC-CUBE 2.13.3
結局のところ・・・
元々の EC-CUBE にその機能があるので、その使い方に気づくのに時間がかかっただけだった・・・。
もっとスマートなやり方があるような気がする・・・。
手順
管理画面にて「セール」「贈答品」などのカテゴリを作成し、該当商品をそのカテゴリに所属させる。
管理画面 -> デザイン管理 -> [PC|スマートフォン] -> ブロックにて新規ブロックを作成する
ブロック名:2015年7月のセール
ファイル名:sale201507
本文:
<!--{php}-->
// SITE_URL に該当の URL を設定
// mode=json にすることで json 形式でデータを取得
// category_id に取得したいカテゴリを指定
// orderby で指定できるのは date(新着順), price(価格の安い順)の2つ
// disp_number で取得したい件数を指定
$arrProducts = json_decode(file_get_contents("https://SITE_URL/products/list.php?mode=json&category_id=1&orderby=date&disp_number=3"), true);
$this->assign('arrProducts', $arrProducts);
<!--{/php}-->
<!--{* 利用できる変数は下記を true にすると確認できる *}-->
<!--{if false}-->
<pre>
<!--{$arrProducts|@var_dump}-->
</pre>
<!--{/if}-->
<!--{* 下記のループ内を好きな形でコーディング *}-->
<!--{foreach from=$arrProducts item=arrProduct name=arrProducts}-->
<!--{* 一緒に productStatus というのが取得されてしまうので、商品情報のみを対象とする *}-->
<!--{if $arrProduct.product_id}-->
<pre>
<!--{$arrProduct.name}--><br />
<!--{$arrProduct.price02_min}--><br />
<!--{$arrProduct.main_list_image}--><br />
</pre>
<!--{/if}-->
<!--{/foreach}-->
<a href="/products/list.php?category_id=1">続きはコチラ</a>