バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

 > プラグイン > フロント側で商品取得している処理へ、プラグインから介入する方法

プラグイン

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ya50
投稿日時: 2017/1/19 20:23
対応状況: −−−
半人前
登録日: 2016/12/26
居住地:
投稿: 13
フロント側で商品取得している処理へ、プラグインから介入する方法
バージョン:eccube-3.0.12-p1

フロント側の商品取得処理、
ProductRepository.getQueryBuilderBySearchData()の中に、
プラグイン側から
・結合するテーブルの追加
・where条件を追加
するような方法はありますでしょうか。

結合したいテーブルも、whereで使用する項目も、プラグインで追加したものとなります。

可能なのか分かりませんが、
?標準のProductRepositoryをプラグイン側へコピー(とリネーム)して必要な改修を加える
?プラグインのServiceProviderで、既存の$app['eccube.repository.product']を、?のファイルで上書きする
という方法を考えましたが、そのようなことは可能そうでしょうか。

試してみればよいのですが、あまり時間が取れなく、まず質問という形になってしまいました。

そもそも不能、可能だが邪道である(リスクがある)、もっといい方法がある、
など、なんでもいいのでアドバイス頂けるとありがたいです。

よろしくお願いします。
468
投稿日時: 2017/1/19 21:18
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: フロント側で商品取得している処理へ、プラグインから介入する方法
ProductRepository.getQueryBuilderBySearchData()の結果を格納した$qbが個別プラグインに渡されていると思います。

プラグイン側で、その$qbを取り出して、
QueryBuilderクラスのresetDQLPart()メソッドやgetDQLPart()メソッドを使って、部分的にDQLを組み直したりしています。

resetDQLPart()やgetDQLPart()で検索していただくと、利用方法が出てくると思います。


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

ya50
投稿日時: 2017/1/20 11:16
対応状況: −−−
半人前
登録日: 2016/12/26
居住地:
投稿: 13
Re: フロント側で商品取得している処理へ、プラグインから介入する方法
468様いつもご回答ありがとうございます。

フックポイントへの根本的な理解が足りてなかったのですが、

?$app['eccube.event.dispatcher']->dispatch(EccubeEvents::フックポイント名, $event);
などと記載されている箇所は、event.yml定義でプラグイン側で拾うことができる
?$event = new EventArgs()で設定している内容が参照、編集できる

ということで認識はあっていますでしょうか。

重ね重ねの質問で申し訳ありません。
468
投稿日時: 2017/1/20 15:41
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: フロント側で商品取得している処理へ、プラグインから介入する方法
そうです。
>?$app['eccube.event.dispatcher']->dispatch(EccubeEvents::フックポイント名, $event);
は、プラグイン仕様書で、個別フックポイントと呼ばれているフックポイントになります。

第2引数に渡しているEventArgs $eventをプラグイン側で参照する事ができます。

(プラグイン側の参照例)
$qb = $event->getArgument('qb');

$eventの中身は、$event = new EventArgs()で設定している情報になりますので、
>?$event = new EventArgs()で設定している内容が参照、編集できる
の認識で間違いないと思います。

プラグイン側で、$eventから取り出した情報に上書きしてあげれば、
その後のコントローラー側で利用する値にも反映されますので、
プラグイン側で変更を加える事が出来ます。


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

ya50
投稿日時: 2017/1/20 16:13
対応状況: 解決済
半人前
登録日: 2016/12/26
居住地:
投稿: 13
Re: フロント側で商品取得している処理へ、プラグインから介入する方法
あらかじめ検索条件をカスタマイズするための仕込みがされているんですね。

あやうく逸脱した修正を行ってしまうところでした。。。

ご教授頂いた方法で対応できるかと思いますので、
解決済みとさせて頂きます。

ご回答、ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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
1295
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.