バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > その他 > price02を割り算する方法を教えて下さい

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
9-24
投稿日時: 2018/9/19 13:44
対応状況: −−−
新米
登録日: 2018/6/28
居住地:
投稿: 6
price02を割り算する方法を教えて下さい
▼テンプレート
[EC-CUBE] 3,0.16 新規インストール
[レンタルサーバ] ローカル
[OS] WIN10
[PHP] 7.2.4
[データベース] mysql 5.0.12
[WEBサーバ] Apache 2.4.33
[ブラウザ] Edge
[導入プラグインの有無] ありません
[カスタマイズの有無] 初めてのカスタマイズです
[現象]

価格を変更するプラグインを作ろうと思っています
例えば、価格を全て2で割るとして、「・・・Event.php」に商品一覧表示のページ用に
public function onProductIndexSearch(EventArgs $event)
{
$qb = $event->getArgument('qb');
dump($qb);
}
とするとdumpの内容は見れています。ですが、
public function onProductIndexSearch(EventArgs $event)
{
$qb = $event->getArgument('qb');
$qb->addSelect('pc.price02/2 as pc.price02');
}
とするとエラーになります。

どのようにすれば価格を割り算することが出来るでしょうか?
また、このようなやり方でフックポイントを追加していって詳細ページでも行い、購入まで続けたいのですが、この方法は間違っているでしょうか?

また、以前のスレッドを見させて貰って、
ProductClassRepository.phpを拡張してprice02を元から変更出来たらとも考えたのですが、
$qb = $this->createQueryBuilder('pc')
->select('pc.price02/2 as pc.price02');
return $qb;
(上記のSQLが合っているか分かりませんが)と考えてみても、これをどんなメソッド名にして何処でどう活用すれば良いのか分かりません。

考え方自体が間違っているでしょうか?どのような方法を取れば実現出来るか、ご教授、どうかよろしくお願いします
468
投稿日時: 2018/9/20 12:00
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: price02を割り算する方法を教えて下さい
DBから取り出すところで金額を変更する方法でも出来なくはないと思いますが、
取り出したエンティティのProductClass->setPrice02IncTax(), ProductClass->getPrice02IncTax()を利用したほうが良いのではないでしょうか?

購入まで含めた処理の全てで価格を変更する場合、
様々なフックポイントを利用する必要があり、ここで説明できるような内容には収まらないと思います。

https://www.ec-cube.net/products/detail.php?product_id=1244
上記のように一時的に商品価格を変更して、購入まで処理できるプラグインもあります。
有償にはなりますが、こういったプラグインを参考にすれば、
ご要望の機能は実現できるのではないでしょうか?
(このプラグインを利用するのも一つの方法かと思います)


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

9-24
投稿日時: 2018/9/20 15:11
対応状況: −−−
新米
登録日: 2018/6/28
居住地:
投稿: 6
Re: price02を割り算する方法を教えて下さい
シロハチ様、ご回答ありがとうございます。
いつもシロハチ様の記事を見て参考にさせて頂いています!

すみません、また質問になってしまうのですが、一覧表示画面において、

public function onProductIndexSearch(EventArgs $event)
{
$qb = $event->getArgument('qb');
//ここからProductClass->setPrice02IncTax(), ProductClass->getPrice02IncTax()を使うのはどのようにしたら良いのでしょうか?
}

public function onProductDetailInitialize(EventArgs $event)の場合でしたら、$Product = $event->getArgument('Product');からやって何かしら出来そうに思えるのですが、一覧画面での使い方を、出来ましたら教えて頂けたら、と思います。

ご指摘の通り、有償のプラグインを購入して勉強するというのも考えてはいるのですが、もう少し頑張ってみてダメだったら・・・と思っています・・・。

どうか、よろしくお願いします
468
投稿日時: 2018/9/22 7:03
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: price02を割り算する方法を教えて下さい
私の場合、商品一覧のテンプレートフックポイントを使います。

event.yml
Product/list.twig:
- [hogehoge, NORMAL]

public function hogehoge(TemplateEvent $event)
{
$parameters = $event->getParameters();
$Products= $parameters['pagination'];

//ここで$Productsをループして加工

$parameters['pagination'] = $Products;

}

データに変更を加える処理を実装する際、
Entityにデータをセットする所を変更しようとするとエラーが出た時に原因を調査するのが大変だったので、
抽出後のEntityに手を加えるようにしています。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

9-24
投稿日時: 2018/9/25 15:28
対応状況: 解決済
新米
登録日: 2018/6/28
居住地:
投稿: 6
Re: price02を割り算する方法を教えて下さい
シロハチ様、度々の回答ありがとうございます。
また、連休を挟んでしまっていた為、返信が遅くなり大変失礼をしてしまい、申し訳ありませんでした。

twigのフックポイントを使うんですね!
twigのフックポイントはデザイン等を変える為にあるのだと思っていました。
目からウロコです。
詳細での処理も含めて、考え方が全然違ったのかと気づくことが出来ました。
教えて貰った方法で頑張ってみたいと思います。

本当にありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,087名です
総投稿数は109,615件です

投稿数ランキング

1
seasoft
7364
2
468
3217
3
AMUAMU
2712
4
nanasess
2302
5
umebius
2085
6
yuh
1814
7
h_tanaka
1609
8
red
1567
9
mcontact
1229
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.