登録日
2018年5月27日

メンバー検索

  

tactusweb

名前(ニックネーム)
jinboucha
自分のconcrete5サイト
ホームページ
自己紹介
concrete5.org のユーザー名
jinboucha
concrete5 Slack Team ID
@jinboucha
Twitterアカウント
フォーラム総投稿数
1

コミュニティバッジ

投稿

1から1までを表示 (計1)

Re: フォームブロックから送られてくるメールの件名をカスタマイズしたい

私の方で試したところ、メールの件名を変える方法が見つかりましたので、その手順を共有いたします。

1つ前のスレッドでやりとりされている下記エラーが発生する件も含めて手順を記載します。
Class 'application\src\Express\Entry\Notifier\Notification\FormBlockSubmissionEmailNotification' not found

<手順>
1. 下記のcoreソースをapplicationディレクトリにコピーします。

(コピー元)
・concrete/src/Express/Entry/Notifier/Notification/FormBlockSubmissionEmailNotification.php
・concrete/src/Express/Entry/Notifier/Notification/FormBlockSubmissionNotification.php
・concrete/src/Express/Entry/Notifier/Notification/AbstractFormBlockSubmissionNotification.php
・concrete/blocks/express_form/controller.php

(コピー先)
・application/src/Concrete/Express/Entry/Notifier/Notification/FormBlockSubmissionEmailNotification.php
・application/src/Concrete/Express/Entry/Notifier/Notification/FormBlockSubmissionNotification.php
・application/src/Concrete/Express/Entry/Notifier/Notification/AbstractFormBlockSubmissionNotification.php
・application/blocks/express_form/controller.php


2. それぞれのソースを以下のように変更します。

2-1. application/src/Concrete/Express/Entry/Notifier/Notification/FormBlockSubmissionEmailNotification.phpの変更

2-1-1. 2行目のnamespaceを以下のように変更します
namespace Concrete\Core\Express\Entry\Notifier\Notification;

namespace Application\Concrete\Express\Entry\Notifier\Notification;

2-1-2. 73行目のnotifyメソッドの内容を変更します。
本当はexpressフォームの設定画面などから指定できればいいと思いますが、取り急ぎベタで直す方法です。

この部分でメール件名を設定しておりますので、変えたい内容に変更します。
$mh->setSubject(t('Website Form Submission – %s', $this->getFormName($entry)));

$mh->setSubject(t('件名を変更 – %s', $this->getFormName($entry)));


2-2. application/src/Concrete/Express/Entry/Notifier/Notification/FormBlockSubmissionNotification.phpの変更

2-2-1. 2行目のnamespaceを以下のように変更します
namespace Concrete\Core\Express\Entry\Notifier\Notification;

namespace Application\Concrete\Express\Entry\Notifier\Notification;

2-2-2. 7行目を以下のように変更します。
use Concrete\Block\ExpressForm\Controller as ExpressFormBlockController;

use Application\Block\ExpressForm\Controller as ExpressFormBlockController;

2-2-3. 15行目を以下のように変更します。
$subject = new EntrySubject($entry);

$subject = new \Concrete\Core\Express\Entry\Notifier\Notification\EntrySubject($entry)


2-3. application/src/Concrete/Express/Entry/Notifier/Notification/AbstractFormBlockSubmissionNotification.phpの変更

2-3-1. 2行目のnamespaceを以下のように変更します
namespace Concrete\Core\Express\Entry\Notifier\Notification;

namespace Application\Concrete\Express\Entry\Notifier\Notification;

2-3-2. 6行目を以下のように変更します。
use Concrete\Block\ExpressForm\Controller as ExpressFormBlockController;

use Application\Block\ExpressForm\Controller as ExpressFormBlockController;


2-4. application/blocks/express_form/controller.phpの変更

2-4-1. 2行目のnamespaceを以下のように変更します
namespace Concrete\Block\ExpressForm;

namespace Application\Block\ExpressForm;

2-4-2. 19行目を以下のように変更します。
use Concrete\Core\Express\Entry\Notifier\Notification\FormBlockSubmissionEmailNotification;

use Application\Concrete\Express\Entry\Notifier\Notification\FormBlockSubmissionEmailNotification;

2-4-3. 20行目を以下のように変更します。
use Concrete\Core\Express\Entry\Notifier\Notification\FormBlockSubmissionNotification;

use Application\Concrete\Express\Entry\Notifier\Notification\FormBlockSubmissionNotification;


<補足>
・application/src以下にConcreteフォルダを作成することで、concrete5のclass autoload処理で読み込みされるようになります。
参考情報:https://documentation.concrete5.org/developers/extending-concrete5-with-custom-code/extending-core-classes-in-the-application-directory

・最初に出ていた
Class 'application\src\Express\Entry\Notifier\Notification\FormBlockSubmissionEmailNotification' not foundのエラーを解消した後に発生するエラーとして、オブジェクト型が合わない、他のクラスが参照できない、といったものが発生し、それらについても対応が必要で、結果として上記のようになりました。

Posted on 5月 27, 2018 at 3:54 午前