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のエラーを解消した後に発生するエラーとして、オブジェクト型が合わない、他のクラスが参照できない、といったものが発生し、それらについても対応が必要で、結果として上記のようになりました。