EC-CUBE4 – お問い合わせ項目 追加と削除
EC-CUBE4のお問い合わせページの項目をカスタマイズしました。
復習を兼ねてその手順をシェアします。
ちょっとPHPいじれるレベルの方向けです。
他にもやり方はありますが、一番ハードルが低い方法ではないかと思います。
内容は、「会社名」を追加、「住所」を削除。
直したファイルは4つ。
それと、メールテンプレート。
- /app/Customize/Form/ContactType.php
↑/src/Eccube/Form/Type/Front/ContactType.phpを複製 - /app/Customize/Controller/ContactController.php
↑/src/Eccube/Controller/ContactController.phpを複製 - /app/template/mytpl/Contact/index.twig
- /app/template/mytpl/Contact/confirme.twig
裏の部分
/app/Customize/Form/ContactType.php
(フォームの設定です。必須か否か等。今回は非必須で設定しています。)
<?php
一行修正します。
namespace Eccube\Form\Type\Front;
namespace Customize\Form;
一行追加します。
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
「会社名」分を追加します(削除分は無視)。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(‘company_name’, TextType::class, [
‘required’ => false,
])
このファイルは以上です。
/app/Customize/Controller/ContactController.php
(ログイン時に自動で表示させるため修正します)
「会社名」分を追加します(削除分は無視)。
上記のファイルを元に修正していきます。
一行修正します。
namespace Eccube\Controller;
namespace Customize\Controller;
一行修正します。
use Eccube\Form\Type\Front\ContactType;
use Customize\Form\ContactType;
一行追加します。
use Symfony\Component\Routing\Annotation\Route;
use Eccube\Controller\AbstractController;
「会社名」分を追加します(削除分は無視)。
$builder->setData(
[
‘company_name’ => $user->getCompanyName(),
‘name01’ => $user->getName01(),
このファイルは以上です。
表の部分
/app/template/mytpl/Contact/index.twig
/app/template/mytpl/Contact/confirme.twig
「会社名」分を表示させたいところに記述します(削除分は割愛)。
<!–会社名–>
<dl>
<dt>
{{ form_label(form.company_name, ‘会社名’, { ‘label_attr’: { ‘class’: ‘ec-label’ }}) }}
</dt>
<dd>
<div class=”ec-halfInput{{ has_errors(form.company_name) ? ‘ error’ }}”>
{{ form_widget(form.company_name, {‘attr’: { ‘placeholder’: ‘会社名’ }}) }}
{{ form_errors(form.company_name) }}
</div>
</dd>
</dl>
<!–会社名–>
送信裏の部分
管理画面「設定」-「店舗設定」-「メール設定」-「問合受付メール」
各形式に合わせて表示させたい場所に追記します。
テキスト形式
会社名:{% if data.company_name %} {{ data.company_name }} {% endif %}
HTML形式
<dl style=”display: flex;border-bottom: 1px dotted #ccc;margin: 0;”>
<dt style=”padding-top: 14px;width: 30%;”><label class=”ec-label”>会社名</label></dt>
<dd style=”width: 70%;line-height: 3;”>{{ data.company_name }}</dd>
</dl>
最後の〆
管理画面「コンテンツ管理」-「キャッシュ管理」-「キャッシュ削除」
キャッシュ削除します。
参考サイト
以上です。
当サイトでは何の保証もいたしませんので、十分にテストされてから本番環境に実装してください。
コピペする際にはアポストロフィの形状に気をつけてください。
何か不備を発見の際はご教示いただければ幸いです。