> プラグイン > 商品ごとに価格の表示・非表示を設定したい |
プラグイン
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
chappy |
投稿日時: 2016/10/10 18:51
対応状況: −−−
|
一人前 登録日: 2011/7/19 居住地: 投稿: 87 |
商品ごとに価格の表示・非表示を設定したい 商品一覧において、商品ごとに価格の表示・非表示を設定したいと考えています。
「ec-cube本体は修正しない」ことを前提としています。 そこで、自作プラグインを制作し、 テーブル:plg_product_customizeに、 product_id cart_flg のデータを管理画面にて登録できるようにしました。 悩んでいる箇所は、フロントの表示部分です。 Product/listにて、価格表示箇所を該当の商品のみ非表示にするというところです。 当初は、該当の箇所だけreplaceすることを考え実装してみましたが、該当の箇所を <dd id="result_list__price02_inc_tax--321" class="item_price"> などと指定することは、読み込みの順番的に不可能なのでは?と思い当たりました。 listのControllerをいじくればいいのかもしれませんが、 それをプラグインで行う方法が分かりません。 どうか助言お願い致します。 |
468 |
投稿日時: 2016/11/23 4:00
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品ごとに価格の表示・非表示を設定したい 商品一覧の価格に対して、加工を加えるプラグインをいくつか作っていますが、
私は、Product/list.twig:のイベントを利用しました。 プラグインのEvent.phpの中で 商品に紐づく子データとtwigの置換を処理しています。 public function onRenderProductList(TemplateEvent $event) { $app = $this->app; $parameters = $event->getParameters(); //商品データの数だけ繰り返す $Entities= array(); foreach ($parameters["pagination"] as $k => $Product) { 〜ここでDBからエンティティを取得〜 $Entities[$product["id"]] = エンティティ; } //商品IDをキーとしたエンティティの配列をtwigに渡す $parameters["Entitys"] = $Entities; $event->setParameters($parameters); //twigファイルを書き換える $source = str_replace($old, $new, $event->getSource()); $event->setSource($source); } twigの置換はProduct/list.twigの中を確認して、強引に書き換えています。 例えば、規格無しの価格を表示する箇所に cart_flg=1以外の場合、価格を表示しないような判定を追加したりしています。 $old= '{{ Product.getPrice02IncTaxMin|price }}'; $new= <<< EOM {% if Entities[Product.id].cart_flg == 1 %} {{ Product.getPrice02IncTaxMin|price }} {% else %} {% endif %} EOM; 以上、もし、参考になれば幸いです。 |
umebius |
投稿日時: 2016/11/23 13:31
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 商品ごとに価格の表示・非表示を設定したい chappyさん
HTML化されてから書き換えようとすると難しいです。 Twigの時点で書き換えれば大丈夫です。 マニュアルのP. 19, 34-35が参考になると思います。 http://downloads.ec-cube.net/src/manual/v3/plugin.pdf
|
chappy |
投稿日時: 2016/11/29 21:17
対応状況: 解決済
|
一人前 登録日: 2011/7/19 居住地: 投稿: 87 |
Re: 商品ごとに価格の表示・非表示を設定したい 468さん
umebiusさん 助言ありがとうございます。 umebiusさんのおっしゃる通り、HTML化されてから書き換えが出来ませんでした。 468さんのように、 プラグインのEventの修正と Product/list.twigの書き換えで、思い通りの動作を確認できました。 大変参考になりました。ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |