バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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
居住地: 宮城県(2017/09末引退)
投稿: 156
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
居住地: 宮城県(2017/09末引退)
投稿: 156
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公式 Amazon Payプラグイン

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1283
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.