バージョン選択

フォーラム

メニュー

オンライン状況

19 人のユーザが現在オンラインです。 (12 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 19
もっと...

サイト内検索

 > プラグイン > 商品ごとに価格の表示・非表示を設定したい

プラグイン

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
chappy
投稿日時: 2016/11/29 21:17
対応状況: 解決済
一人前
登録日: 2011/7/19
居住地:
投稿: 87
Re: 商品ごとに価格の表示・非表示を設定したい
468さん
umebiusさん

助言ありがとうございます。

umebiusさんのおっしゃる通り、HTML化されてから書き換えが出来ませんでした。

468さんのように、
プラグインのEventの修正と
Product/list.twigの書き換えで、思い通りの動作を確認できました。

大変参考になりました。ありがとうございました。
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


public function onRenderProductList(TemplateEvent $event)
{
 $parameters = $event->getParameters();
 $CategoryContent = $this->app['category_content.repository.category_content']
 ->find($Category->getId());
 // twigコードにカテゴリコンテンツを挿入
 $snipet = '<div class="row">{{ CategoryContent.content | raw }}</div>';
 $search = '<div id="result_info_box"';
 $replace = $snipet.$search;
 $source = str_replace($search, $replace, $event->getSource());
 $event->setSource($source);
 // twigパラメータにカテゴリコンテンツを追加
 $parameters['CategoryContent'] = $CategoryContent;
 $event->setParameters($parameters);
}


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

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;

以上、もし、参考になれば幸いです。
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をいじくればいいのかもしれませんが、
それをプラグインで行う方法が分かりません。


どうか助言お願い致します。
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,926名です
総投稿数は110,012件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.