要望や症状
管理画面の受注一覧ページで、注文者の会員番号を表示したい場合があります。
表示要件
Shippingループ内で会員番号を表示し、非会員の注文の場合は適切に処理する必要があります。
理由や原因
EC-CUBE標準の受注一覧テンプレートでは、会員番号の表示項目が含まれていません。
受注(Order)エンティティは顧客(Customer)エンティティとリレーションしており、会員番号は Customer.id として取得可能ですが、テンプレート側で明示的に出力する記述が必要となります。また、非会員注文の場合は Customer が null になるため、適切な null チェックも実装する必要があります。
解決策
受注一覧テンプレートをCustomizeディレクトリでオーバーライドし、会員番号表示機能を追加します。
テンプレートファイルの作成
以下のパスにカスタマイズ用のテンプレートファイルを作成してください。
{# app/Customize/Resource/template/admin/Order/index.twig #}
{# 既存のテンプレートをコピーし、会員番号表示部分を追加 #}
{# 該当箇所に以下を追加 #}
{% for Shipping in Order.Shippings %}
{# 既存の表示項目 #}
{# 会員番号の表示 #}
<td>
{{ Order.Customer.id|default('非会員') }}
</td>
{% endfor %}
Twigテンプレートの記述方法
会員番号を表示する際は、以下のいずれかの記述方法を使用してください。
基本的な記述(非会員の場合は空白表示):
{{ Order.Customer.id|default(null) }}
非会員の場合に「非会員」と表示する記述:
{{ Order.Customer.id|default('非会員') }}
重要な注意事項
app/template/admin/Order/index.twig を直接編集することは避けてください。EC-CUBEのアップデート時に変更内容が失われる可能性があります。必ずCustomizeディレクトリ配下にファイルを配置してカスタマイズを行ってください。
また、非会員注文では Order.Customer が null になるため、default フィルタによる null チェックは必須の実装となります。