バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > フロント機能 > 商品詳細ページに規格に関する情報を表示させたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
sksn
投稿日時: 2017/9/12 15:29
対応状況: −−−
新米
登録日: 2013/9/17
居住地:
投稿: 10
商品詳細ページに規格に関する情報を表示させたい
[EC-CUBE] 3.0.11
[レンタルサーバ] heteml
[OS] Linux
[PHP] 7.0.15
[データベース] MySQL 5.6.13-log
[WEBサーバ] Apache
[現象]

標題について、教えて頂けますでしょうか。

商品詳細ページ(detail.twig)に、規格に関する詳しい情報を掲載したいと思っています。

例えば、

重さ:1kg/2kg(←規格1の情報)
入り数:25本/50本(←規格2の情報)

のようなことを表示させたいです。

「重さ」や「入り数」のような規格名は
{{ Product.className1 }}
で表示することができたのですが、
各規格に登録してある情報はどのように表示させたらよいのか、
他のファイル等も参考にしてみたのですが、上手く行かず、、、。
どなかた教えて頂けるとありがたいです。

よろしくお願いします。
hata
投稿日時: 2017/9/12 18:35
対応状況: −−−
長老
登録日: 2015/8/3
居住地: 宮城県
投稿: 154
Re: 商品詳細ページに規格に関する情報を表示させたい
twig側で処理を作り込むのは良くないとよく(そうでもないか?)目にするのでお奨めはしませんが、
Product.ProductClassesをforで回してProductClass.ClassCategory1.nameと~2.name
を拾い、それぞれ配列にかぶらないように追加します。
forが終わったあとで各配列の中身をProduct.className1と~2と合わせて出力してやる感じで
できると思います。

必要になるのはtwigの知識だと思うのであとは調べながらやってみてください。

で、Controllerでやるのが正しいやりかただと推奨されているようなので、これができたら同じ様な処理を
Controller側に作り込んで、フォームには仕上がりの文字列を渡して表示するようにしてみると良いでしょう。
これでレベルアップだわ。

Controller側で処理を実装してフォームにデータを渡して表示するようなカスタマイズはコミュニティで
探せば色々見つかると思うのでこちらも割愛します。


twigに処理を作り込むのが推奨されないのは、遅くなるという理由からなんでしょうかね。。。
sksn
投稿日時: 2017/9/13 15:00
対応状況: 解決済
新米
登録日: 2013/9/17
居住地:
投稿: 10
Re: 商品詳細ページに規格に関する情報を表示させたい
ご返信ありがとうございます!

>>twig側で処理を作り込むのは良くないとよく(そうでもないか?)目にするのでお奨めはしませんが、

そうなんですね。。。
Controller側の処理を作るというのがよくわからなかったため、
今回はtwig側で処理するようにしました。
思ったような動きになりました、ありがとうございます。
hata
投稿日時: 2017/9/13 16:37
対応状況: −−−
長老
登録日: 2015/8/3
居住地: 宮城県
投稿: 154
Re: 商品詳細ページに規格に関する情報を表示させたい
こんな感じ(行頭+が追加行)でsrc/Eccube/Controller/ProductController.phpに処理をいれてやると、
twigの方でproduct_class_string1とproduct_class_string2が使えるようになります。
             $is_favorite = $app['eccube.repository.customer_favorite_product']->isFavorite($Customer, $Product);
         }

+        $arrCc1 = array();
+        $arrCc2 = array();
+        $product_class_string1 = $Product->getClassName1();
+        $product_class_string2 = $Product->getClassName2();
+        foreach ($Product->getProductClasses() as $ProductClass) {
+            $ClassCategory1 = $ProductClass->getClassCategory1();
+            if ($ClassCategory1) {
+                $cc1name = $ClassCategory1->getName();
+                $cc1id = $ClassCategory1->getId();
+                if (!array_key_exists('key'.$cc1id, $arrCc1)) {
+                    if (empty($arrCc1)) {
+                        $product_class_string1 .= ':'. $cc1name;
+                    } else {
+                        $product_class_string1 .= '/'. $cc1name;
+                    }
+                    $arrCc1 = array_merge($arrCc1, array('key'.$cc1id => $cc1name));
+                }
+                $ClassCategory2 = $ProductClass->getClassCategory2();
+                if ($ClassCategory2) {
+                    $cc2name = $ClassCategory2->getName();
+                    $cc2id = $ClassCategory2->getId();
+                    if (!array_key_exists('key'.$cc2id, $arrCc2)) {
+                        if (empty($arrCc2)) {
+                            $product_class_string2 .= ':'. $cc2name;
+                        } else {
+                            $product_class_string2 .= '/'. $cc2name;
+                        }
+                        $arrCc2 = array_merge($arrCc2, array('key'.$cc2id => $cc2name));
+                    }
+                }
+            }
+        }
         return $app->render('Product/detail.twig', array(
             'title' => $this->title,
             'subtitle' => $Product->getName(),
             'form' => $form->createView(),
             'Product' => $Product,
             'is_favorite' => $is_favorite,
+            'product_class_string1' => $product_class_string1,
+            'product_class_string2' => $product_class_string2,
         ));
     }

twig側
{% if product_class_string1 %}
{{ product_class_string1 }}
{% endif %}
{% if product_class_string2 %}
<br>
{{ product_class_string2 }}
{% endif %}
ざざざっと書いちゃったのでプログラムには改善の余地はあるかも知れませんが、こんな感じっていうイメージが伝わると嬉しいです。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,136名です
総投稿数は82,934件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1644
4
yuh
1392
5
red
1066
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
784
10
468
712
11
umebius
712
12
tao_s
651
13 sumida 638
14
homan
633
15 karin 618
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.