| ルーティング | ec_product_detail |
| 引数 | 商品ID |
| 例 | {{ path(“ec_product_detail”, {“id”:1}) }} |
商品の詳細ページのためのテンプレートです。
商品情報の他に、商品レビューの登録フォームを表示できます。
Ⅰ 商品レビュー登録フォーム
商品レビュー登録用のフォームを表示するためのタグです。
| form | |||
| product_id | 商品ID | 必須 | |
| title | タイトル | 必須 | |
| description | レビュー本文 | 必須 | |
| nickname | ニックネーム | 必須 | |
| grade | 評価(0~10の数値) | 必須 |
例えばタイトル用のテキストボックスを表示するには、
|
1 |
{{ form_widget(form_product_review.title) }} |
このように記述します。
フロントページのHTMLとしては、以下のように出力されます
|
1 |
<input type="text" id="ec_client_product_review_type_title" name="ec_client_product_review_type[title]" required="required" style="width: 100%;" val ue=""> |
独自にHTMLタグを記述したい場合は、idとnameを合わせた上で、valueに値をセットすれば動作します。
また、それぞれの項目の入力内容にエラーが有った場合はform_errorsを使います。例として、タイトル用のエラー文言を表示するには、
|
1 |
{{ form_errors(form_product_review.title) }} |
このように記述します。データの送信方法は、自ページにpostすると登録されます。
Ⅱ 商品情報
商品名や価格、在庫や商品画像といった全ての商品情報です。
| product | |||||||||
| id | 商品ID | ||||||||
| name | 商品名 | ||||||||
| productType | common:一般商品、regular:定期商品 | ||||||||
| releaseStatus | 0:公開、1:非公開、2:公開日指定 | ||||||||
| releasedAt | 公開開始日 | ||||||||
| availableBefore | 公開終了日 | ||||||||
| description | 商品説明 | ||||||||
| createdAt | 作成日 | ||||||||
| updatedAt | 更新日 | ||||||||
| deletedAt | 削除日 | ||||||||
| getAttribute() | getAttribute(“拡張フィールド名”)で拡張フィールドの 値 | ||||||||
| categories[] | チェックされた全てのカテゴリ | ||||||||
| categories[i] | チェックされたカテゴリのi番目の配列 | ||||||||
| id | カテゴリID | ||||||||
| name | カテゴリ名 | ||||||||
| root | 該当カテゴリが属するトップレベルカテゴリ | ||||||||
| lft | 該当カテゴリの1つ上のカテゴリ | ||||||||
| rgt | 該当カテゴリの1つ下のカテゴリ | ||||||||
| delivery | 配送情報の構造体 | ||||||||
| id | 配送id | ||||||||
| name | 配送方法名 | ||||||||
| serviceName | 配送業者名 | ||||||||
| remark | 説明 | ||||||||
| times[] | 指定可能なお届け時間の一覧 | ||||||||
| times[i] | お届け時間のi番目の配列 | ||||||||
| time | お届け時間 | ||||||||
| fees[] | 送料に関する情報 | ||||||||
| fee[i] | 送料のi番目の配列 | ||||||||
| pref | 都道府県名の英語表記 | ||||||||
| prefTitle | 都道府県名の日本語表記 | ||||||||
| abroads[] | 海外配送方法の一覧 | ||||||||
| abroads[I] | 海外配送方法のi番目の配列 | ||||||||
| id | 海外配送ID | ||||||||
| name | 海外配送名 | ||||||||
| is_valid | 1:有効、0:無効 | ||||||||
| is_enabled | 1:使用可能、0:使用不可 | ||||||||
| is_via | 経由地があるか | ||||||||
| via_address | 経由地の住所 | ||||||||
| via_fee_per_order | 経由地への送料 | ||||||||
| free_shipment_price | 送料無料金額 | ||||||||
| zones[] | ゾーン一覧 | ||||||||
| zones[I] | ゾーン一覧のi番目の配列 | ||||||||
| id | ゾーンID | ||||||||
| name | ゾーン名 | ||||||||
| status | メモ | ||||||||
| countries[] | ゾーンに含まれる国一覧 | ||||||||
| countries[i] | ゾーンに含まれる国一覧のi番目の配列 | ||||||||
| id | 国ID | ||||||||
| status | 1:使用可能、0:使用不可 | ||||||||
| eng_name | 国の英名 | ||||||||
| name | 国の和名 | ||||||||
| weights[] | 重さ一覧 | ||||||||
| weights[I] | 重さ一覧のi番目の配列 | ||||||||
| id | 重さID | ||||||||
| weight | 重さ名 | ||||||||
| fees[] | 送料一覧 | ||||||||
| fees[I] | 送料一覧のi番目の配列 | ||||||||
| id | 送料ID | ||||||||
| zone | ゾーンID | ||||||||
| weight | 重さID | ||||||||
| payments[] | 指定可能な支払方法の一覧 | ||||||||
| payments[i] | 指定可能な支払方法のi番目の配列 | ||||||||
| id | 支払id | ||||||||
| name | 支払方法名 | ||||||||
| displayName | 支払方法表示名 | ||||||||
| details | 金額の制限と手数料 | ||||||||
| charge | 手数料 | ||||||||
| additions[] | 指定可能なオプション商品の一覧 | ||||||||
| additions[i] | 指定可能なオプション商品のi番目の配列 | ||||||||
| title | オプション商品名 | ||||||||
| description | オプション商品説明 | ||||||||
| price | 価格 | ||||||||
| reviews[] | 該当商品に属する商品レビューの一覧 | ||||||||
| reviews[i] | 該当商品に属する商品レビューのi番目の配列 | ||||||||
| title | タイトル | ||||||||
| description | 商品レビュー | ||||||||
| nickname | ニックネーム | ||||||||
| grade | 0~10の評価 | ||||||||
| isApproved | 0:未承認、1:承認 | ||||||||
| createdAt | 作成日 | ||||||||
| deletedAt | 削除日 | ||||||||
| ranks[] | 該当商品に紐づく会員別割引設定と会員ランクの初期値 | ||||||||
| rank[i] | 会員ランクのi番目の配列 | ||||||||
| name | 会員ランク名 | ||||||||
| discounPpercent | ランクの初期値の割引率(整数%) | ||||||||
| pointRate | ランクの初期値のポイント還元率(整数%) | ||||||||
| discountPercent | 会員別割引設定の初期値の割引率(整数%) | ||||||||
| pointRate | 会員別割引設定の初期値のポイント還元率(整数%) | ||||||||
| sku1 | 該当商品に指定されたSKU1 | ||||||||
| sku2 | 該当商品に指定されたSKU2 | ||||||||
| productSku[] | 指定されたSKU1、2の組合せとその情報の一覧 | ||||||||
| productSku[i] | SKU1、2のi番目の組合せの配列 | ||||||||
| skuDetail1 | SKU分類1の構造体 | ||||||||
| sku | SKU分類1が属するSKU | ||||||||
| name | SKU分類1が属するSKUの名前 | ||||||||
| title | 指定されたSKU分類1の名前 | ||||||||
| rank | 指定されたSKU分類1の並び順 | ||||||||
| skuDetail2 | SKU分類2の構造体 | ||||||||
| sku | SKU分類2が属するSKU | ||||||||
| name | SKU分類2が属するSKUの名前 | ||||||||
| title | 指定されたSKU分類2の名前 | ||||||||
| rank | 指定されたSKU分類2の並び順 | ||||||||
| productCode | 商品コード | ||||||||
| stock | 在庫(SKU設定での値が優先されます) | ||||||||
| stockUnlimited | 1:無制限、0無制限ではない | ||||||||
| price | 価格(SKU設定での値が優先されます) | ||||||||
| pointRate | ポイント率(SKU設定での値が優先されます) | ||||||||
| weight | 重さ | ||||||||
| user | 商品を登録したユーザー(管理者)情報の構造体 | ||||||||
| regularInt | 定期商品の配送頻度 | ||||||||
| regularMin | 定期商品の最低利用回数 |
注意点として、商品とSKUの関係性を説明します。
大きなくくりで商品というものがあり、その下にSKUがあります。
SKUは1つの商品あたり、最大で2つまで指定することができます。
例えば、色とサイズ、これで2つです。
色の下にはSKU分類として、赤、白、黄色があり、サイズの下にはS、M、Lがあるとします
この場合、赤のS、赤のM、赤のL、白のS、白のM、、、と 9通りのSKUが存在することになります。
さらに、これらはそれぞれで価格、商品コード、在庫を管理しなければなりません。
これらの情報を持っているのがproductSku[]です。
productSku[0]. skuDetail1. title は赤
productSku[0]. skuDetail2. title は黄色
といった感じです
また、配列からのデータの取得方法について、例えばカテゴリの一覧を出力したい場合は以下のように記述します。
|
1 2 3 |
{% for category in product.categories %} {{ category.name }} {% endfor %} |
Ⅲ カートに入れる
LaunchCartでは、商品をカートに入れるには以下のように記述します。
まず、商品IDをec_client_cart_addの引数として渡し、それをformのactionにセットします。
|
1 2 3 |
<form action="{{ path("ec_client_cart_add", {"product_id":product.id})}}" method="post"> URLを直接指定して記述することも可能です。 <form action="/ec/cart/add/10" method="post"> |
次に、SKUを指定させます。name=”product_sku_id”に対してSKUIDをvalueにセットします。
SKUが無い場合は、
|
1 |
<input type=””” hidden” name=”product_sku_id” value=”1”> |
複数の場合は、ラジオボタンで選択させるなども可能です。
|
1 |
<input type="radio" name="product_sku_id" value="{{ product_sku.id }}" > |
以下は、送信すべきパラメータのまとめです
| キー名 | 説明 | 必須 |
|---|---|---|
| product_sku_id | SKUID | 必須 |
| quantity | 数量 | 1以上の数値でない場合は無視 |
Ⅳ オプション商品
上述のカートに入れる場合と同じformタグの中に、以下のnameを持つ要素を設置します。
| キー名 | 説明 | 必須 |
|---|---|---|
| addition_quantity | 数量 | 1以上の数値でない場合は無視 |
実際には1商品につきオプション商品は複数ありますので、for文でまわしながら以下のように設置します。
|
1 2 3 4 5 |
{% for addition in product.additions %} {{ addition.title }} <!-- オプション商品名 --> {{ addition.price|number_format }}円 <!-- 価格 --> <in put type="text" name="addition_quantity[{{ addition.id }}]"> <!-- 数量 --> {% endfor %} |