質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

2回答

338閲覧

EcCube3系の使用法について

AbcdefgFirst

総合スコア33

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2018/03/23 09:46

お世話になっております。
当方初めてEcCubeの3系の使うことになったのですが、分からない事が多かったので質問させて頂きたいと思います。

実現したいこと

フロントの商品詳細ページにて購入したい数量を入力するフォームがあり、それを特定の商品コードの商品だけ最低販売数を3からに設定したい。(デフォルトでは1から)

環境

EcCube/3.0.15 Webサーバー/Apache PHP/5.6.33
実行したこと

'EcCubeのインストール場所'/src/EcCube/Resource/template/default/Product/detail.twigファイルに以下のコードを追加

<script> $(function (){ $('input[name="quantity"]').attr("min",3); $('input[name="quantity"]').val(3); }); </script>

これだと販売最低数は3から選択できるようにはなったのですが、全ての商品がその設定になってしまったので、例えば商品コード "s-001" "s-002"の商品だけに適用させたい場合はどうしたらいいのでしょうか?

自分なりに調べたのですが、どのファイルに何を書けばよいか分からなかったのでご教授頂きたいです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

フロントの商品詳細ページにて購入したい数量を入力するフォームがあり、それを特定の商品コードの商品だけ最低販売数を3からに設定したい。

該当箇所はAddCartTypeaというSymfonyフォームクラスを利用しているようなので、ここの数値をif文やFormEventsを使って動的に変更すればやりたいことは実現できるかと思います。

追記

Viewだけで完結したいようなのでその方針で回答します。
未検証ですが、以下のようにすればいけると思います。

<script> $(function (){ {% for pc in Product.ProductClasses if pc.code in ["s-001", "s-002"] %} $('input[name="quantity"]').attr("min",3); $('input[name="quantity"]').val(3); {% endfor %} }); </script>

さくっと回答できると思いましたが少し手間取りました。
ソースコード見てるとEC-CUBEって1商品1コードではないんですね。。。
商品に紐づいたバリエーションを表すモデル(エンティティ)があるのでその中で判定するという処理になります。
上記の通りscriptタグ内でtwigのifやforが使用できますので、ご自身で試行錯誤されてみてください。

投稿2018/03/23 13:50

編集2018/03/26 16:50
xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AbcdefgFirst

2018/03/26 08:46

>>該当箇所はAddCartTypeaというSymfonyフォームクラスを利用しているようなので、ここの数値をif文やFormEventsを使って動的に変更すればやりたいことは実現できるかと思います。 ご回答ありがとうございます。 この前半部分の利用しているクラスというのはどこで判断できるのでしょうか? ここの部分が分からないので、もう少し具体的に教えて頂けませんでしょうか。。
xenbeat

2018/03/26 09:18

> この前半部分の利用しているクラスというのはどこで判断できるのでしょうか? https://github.com/EC-CUBE/ec-cube/blob/master/src/Eccube/Controller/ProductController.php#L219 私は上記で判断しました。 Product/detail.twigをレンダリングしているProductController.phpのdetailアクションで当該フォーム生成しているからです。 実際にECCUBEを動かしながら確認しているわけではなく、Githubのソースコードでさくっと確認しただけなので外しているかもしれないですが。。。 このあたりはSilexやSymfonyコンポーネントの知識が必要となります。 なおECCUBEの質問でもソースコードレベルの質問をされるのであれば「Silex」や「Symfony」のタグも追加されると有益な回答も集まりやすいと思います。 これを機会に学習してソースコードをご自身で修正されるのも良いですが、 そのような知識が浅いのであれば、無理にご自身でソースコードをいじらずに要件を満たすプラグインを購入してそちらを導入されるのも良いかと思います!
AbcdefgFirst

2018/03/26 09:44

ちらっと貼って頂いたリンクを拝見しましたが、書いてあることを理解するのに少し時間がかかりそうですのでまた時間のある時に読ませて頂きたいと思います。 追加で質問させて頂きたいのですが上記のスクリプトに、「"s-001"や"s-002"の商品コードの要素をjQueryで読み込んで、その部分だけ条件分としてif文などに起こす」様な書き方はできないのでしょうか?
xenbeat

2018/03/26 16:11

> 追加で質問させて頂きたいのですが上記のスクリプトに、「"s-001"や"s-002"の商品コードの要素をjQueryで読み込んで、その部分だけ条件分としてif文などに起こす」様な書き方はできないのでしょうか? →最終的にデータはViewに渡るので、よろしくはないやり方ですがやろうと思えば出来ますよ。回答欄に追記しますね。
退会済みユーザー

退会済みユーザー

2018/03/26 23:45

まあカート投入時に制限されてもカート画面で減らせばいいわけですが(笑)
AbcdefgFirst

2018/03/28 05:01

上記のコードを加えたところ、なんとか実現したいことを表示できました! 丁寧に教えて頂き、ありがとうございました。 足りない知識や概念などをまた勉強しておこうと思います。 >まあカート投入時に制限されてもカート画面で減らせばいいわけですが(笑) カート画面上での処理はまた他のところを修正する必要がありそうですね;
guest

0

プラグインを作成して各種イベントをフックしてください

追記

うっているな
最低購入数設定プラグイン
このプラグインはカートの中の合計数量用でした。。。

適切な「最低購入数設定プラグイン」はコメントにある方の用です。

投稿2018/03/23 12:40

編集2018/03/23 14:07
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/03/23 14:00

リンク先のプラグインは、『「購入数」は、カートに入っているすべての商品の個数合計で判断します。商品ごと、カテゴリごとに設定する機能は搭載しておりません。』らしいので、https://www.ec-cube.net/products/detail.php?product_id=1521 の方がいいかもね
AbcdefgFirst

2018/03/26 08:59

ご回答ありがとうございます。 プラグインを使う方法もあったのですが、何をしたら実装できるかが知りたかったので質問を投稿しました。 説明不足で申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問