Автор Тема: Prestashop FAQ - как изменить форму контактов  (Прочитано 9846 раз)

05 Март 2015, 16:07:40
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Для Prestashop 1.6

1. Измените шаблон contact-form.tpl в папке /themes/ваша тема/...
Добавьте новое поле:
<p class="form-group">
<label for="myvar">{l s='My var'} : <sup>(*)</sup></label>
<input class="form-control grey" type="text" id="myvar" name="contact_myvar" value="{$contact_myvar}" />
</p>

2.  Измените контроллер /controllers/front/ContactController.php, добавьте новое поле
public function postProcess()
{
if (Tools::isSubmit('submitMessage'))
{
....
        else if (!($contact_myvar = trim(Tools::getValue('contact_myvar'))) || (!($contact_myvar = nl2br2($contact_myvar))))
        $this->errors[] = Tools::displayError('Заполните поле myvar.');
....
        if (!count($this->errors))
{
$var_list = array(
....
'{contact_myvar}' => $contact_myvar,
...
public function initContent()
{
parent::initContent();
....
        $this->context->smarty->assign(array(
'contacts' => Contact::getContacts($this->context->language->id),
'message' => html_entity_decode(Tools::getValue('message')),
                'contact_myvar'=>Tools::getValue('contact_myvar'),
));

3.  Измените шаблоны писем contact.html и contact.txt. в папке /mails/ru/...
Добавьте в шаблоны вывод переменной
MyVar: {contact_myvar}
Cоздание интернет сайтов Webstudio UwK
25 Октябрь 2015, 17:39:20
Ответ #1
  • Новичок
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
как эту форму перенести на главную страницу в поп ап окно?
25 Октябрь 2015, 18:37:50
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Только модулем. Нужем модуль с контоллреом от ContactController.php , тогда можно Ajax запросы обработать.
25 Октябрь 2015, 21:33:53
Ответ #3
  • Новичок
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
03 Февраль 2016, 22:52:02
Ответ #4
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вроде все заполнил как написано. но на почту приходит значение поля: {contact_myvar}.   Подскажите у всех все нормально?
04 Февраль 2016, 11:23:36
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Должно приходить значение этой переменой или ничего не показывать. Если приходит {contact_myvar}, значит переменная не определена в контроллере.
У вас может быть уже переопределен контроллер ContactController.php. Проверьте есть ли файл в /override/controllers/front/ContactController.php.
04 Февраль 2016, 11:31:10
Ответ #6
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В данной папке override/controllers/front/ только index.php
04 Февраль 2016, 11:47:08
Ответ #7
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В данной папке override/controllers/front/ только index.php
Что-то в контролере наверное.
04 Февраль 2016, 12:13:43
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Название файла не правильное. Файл доджен называться как в примере "ContactController.php".
Кирилицу в названии нельзя использовать.
10 Февраль 2016, 11:05:54
Ответ #9
  • Новичок
  • *
  • Сообщений: 1
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В инструкции для контролера маленькая ошибка:
вместо:
'{order_myvar}' => $contact_myvar,нужно:
'{contact_myvar}' => $contact_myvar,
10 Февраль 2016, 11:30:55
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Cоздание интернет сайтов Webstudio UwK
13 Февраль 2016, 13:17:34
Ответ #11
  • Старожил
  • ****
  • Сообщений: 357
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Верно ли я понял, что строка
Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $fileAttachment);
из файла ContactController.php, не только сообщает, что сообщение успешно отправлено, но и отправляет письмо на указанный адрес?
13 Февраль 2016, 13:37:10
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Все так, функция Mail::Send отправляет email.
13 Февраль 2016, 16:24:13
Ответ #13
  • Старожил
  • ****
  • Сообщений: 357
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не смогу я поправить сам данный модуль, платить не хочу. Бесплатных модулей нет?
13 Февраль 2016, 16:32:16
Ответ #14
  • Старожил
  • ****
  • Сообщений: 274
  • Репутация: +3/-0
    • Просмотр профиля
Бесплатных модулей нет. Еще есть темы в которые входит модуль для персонализации страницы контактов. Скачать бесплатно тему и модуль можно на варезных сайтах.