Как указать Пользовательской контактной форме использовать определенный шаблон транзакции


Я создал файл custom_form.phtml и поместил его рядом с обычным form.phtml.

На странице CMS я добавил этот блок:

{{block type="core/template" name="contactForm" form_action="/contacts/index/post" template="contacts/custom_form.phtml"}}

...но теперь я хотел бы, чтобы в этой форме использовался определенный шаблон транзакций, который я создал соответствующим образом, с именем "Custom Transactional" и созданный в разделе Система > Транзакционные письма.

Как я мог бы связать как .phtml, так и шаблон транзакции с несколькими полями, такими как {{var data.address}} {{var data.country}} {{var data.postcode}} и т. Д.?

Большое спасибо за любой вклад.

Author: Peanuts, 2015-08-23

1 answers

Если вы посмотрите на контроллер контактов , используемый в действии формы, вы обнаружите, что

  1. шаблон транзакции взят непосредственно из конфигурации
  2. все данные POST передаются в шаблон (как переменная шаблона data), так что вы можете добавить любые дополнительные поля в шаблон формы и использовать их в шаблоне электронной почты. Но проверка жестко запрограммирована для "имени", "комментария", "электронной почты" и "скрыть".

Итак, если вам нужен полностью другой шаблон электронной почты или дополнительная/измененная проверка ввода, лучше всего создать пользовательский контроллер с измененной копией postAction Mage_Contacts_IndexController.

Но есть другое решение, которое немного ограничено, но без какого-либо пользовательского кода:

  • создайте скрытый ввод, который определяет тип формы. Это может быть просто <input type="hidden" name="custom" value="1" />.
  • В шаблоне электронной почты для транзакций контактов используйте директиву if, чтобы отображать различное содержимое в зависимости от формы тип:

    {{if data.custom}}
        ... custom contact form email ...
    {{else}}
        ... standard contact form email ...
    {{/if}}
    
 4
Author: Fabian Schmengler, 2015-08-23 14:16:16