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

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

ただいまの
回答率

90.33%

  • PHP

    21391questions

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

  • MySQL

    6203questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • EC-CUBE

    298questions

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

ec-cube2.12.6 のカスタマイズによる規格の追加について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 390

atuYamaY

score 121

前提:
EC-Cube 2.12.6 にて商品に延長保証の項目を追加しております。
(PHP: 5.3.3, MySQL:5.1.73)

追加する項目(延長保証)については商品規格の一つとして扱いたいと考えております。

それに伴い、商品一覧ページ(list.tpl)および商品詳細ページ(detail.tpl)にて
ラジオボタンを表示し、「選択可能な延長保証年数」を確認できるようにしたいです。

例)
dtb_product_class

商品ID 商品ID 名前 ステータス 規格カテゴリID1
1 1 name status X

dtb_classcategory

規格カテゴリID 規格名 規格ID
6 3年 X
7 5年 X
8 6年 X

また、商品の金額に応じて同じ保証でも値段が変わる場合や
保証料金が商品の金額に左右されず一律となる場合もあるため、
新たに以下のようなテーブルを追加しています。

例)
dtb_warranty

商品ID 規格カテゴリID 保証料金 保証料率(%)
1 6 5
1 7 1,500

商品一覧ページ及び商品詳細ページでは、ラジオボタンにより延長保証の項目を表示し、
ラベルとして保証料金を(場合によっては計算して)表示したいと思っております。

上記を踏まえ、以下のようにテンプレート側を変更しました。

①list.tpl

<!--▼規格1-->
    <h2>延長保証</h2>
        <dt><!--{$tpl_class_name1[$id]|h}--></dt>
        <dd>
            <!--{foreach from=$arrProductClass item="kikaku"}-->
                 <!--{html_radios options=$kikaku.classcategory_id1 selected=$arrProduct.classcategory_id1}-->
                     <!--{if $arrErr.classcategory_id1 != ""}-->
                         <p class="attention"><!--{$tpl_class_name1[$id]}-->を入力して下さい。</p>
                     <!--{/if}-->
            <!--{/foreach}-->
        </dd>
<!--▲規格1-->

②detail.tpl

<!--▼規格1-->
    <h2>延長保証</h2>
        <!--{foreach from=$arrProductsClass item="kikaku1" key="key"}-->
             <label/><input type="radio" name="classcategory_id1" value="<!--{$kikaku1.classcategory_id1}-->" /><!--{$kikaku1.classcategory_name1}--></label>
             <!--{$kikaku1.price02}--><!--{/foreach}-->
<!--▲規格1-->

しかし、下図のように現状ではラジオボタンが表示されない状態となっております。

イメージ説明

上記問題の解決にご協力いただけないでしょうか。

よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • asahina1979

    2018/04/25 00:22

    規格商品の機能はないんだっけ?

    キャンセル

回答 1

check解決した方法

0

商品一覧画面(list.tpl)には延長保証の情報は表示せず、商品詳細画面(detail.tpl)にのみ表示させる方法で対応しました。

具体的には、商品企画の有無の判定<!--{if $tpl_stock_find}-->の直前に下のソースを追加した形になります。

 <!--{assign var=productWarranty value=$arrProductWarranty}-->
                <!--{if $warrantyFlag == true}-->
                    <h3>延長保証 : </h3>
                    <!--{foreach from=$arrWarrantyDetails key=warrantyKey item=warrantyPrice}-->
                        <input type="radio" id="<!--{$warrantyKey}-->" name="warranty_name" value="<!--{$warrantyKey}-->">
                        <label for="<!--{$warrantyKey}-->" class="warranty_radio">
                            <!--{$warrantyKey}--><br><!--{$warrantyPrice|number_format}--></label>
                    <!--{/foreach}-->
                <!--{/if}-->

ロジック側から渡ってくる $arrProductWarranty は
{ "延長保証プラン名":"延長保証料金(商品の購入金額に基づいて動的に変更)" }
のKey, Valueを持ったペアの配列になっており、カート用のテーブル(dtb_order_detail)などにも
カラムを追加する必要があったため、商品企画としては扱わず、独立した情報となっています。

以下は例です。

プラン名マスタ

id name
1 3年
2 5年
3 7年

保証プランテーブル(商品ごとに、どの保証プランを持つか)

商品ID プラン1 プラン2
123 0 1

※0=プランなし、1=プランあり

保証率テーブル

プランID 商品カテゴリID 保証料率
1 7 5(%)
2 12 5
3 23 8

保証料計算用の金額算出テーブル

ID min_price max_price
1 4,000 40,000
2 40,001 60,000
3 60,001 80,000
4 80,001 100,000
5 100,001 120,000

計算式
①商品購入金額から、(min_price ≦ 税込価格 ≧ max_price) となる行の max_price を取得
②mx_price * 保証料率 = 保証額 とする
③購入金額+保証額=合計金額

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • PHP

    21391questions

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

  • MySQL

    6203questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • EC-CUBE

    298questions

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