Автор Тема: contact-form.tpl как добавить контактную информацию?  (Прочитано 946 раз)

15 Августа 2014, 14:06:16
  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте,

Подскажите, как в PS1.6 добавить на странице обратной связи (contact-form.tpl) контактные данные из back-office (Настройки->Контакты магазина)?
15 Августа 2014, 14:23:11
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Какие адрес, email или еще что-то?
Все можно добавить в шаблон - contact-form.tpl
15 Августа 2014, 14:43:43
Ответ #2
  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Email, телефон, адрес, регистрация и т.д. - все что настроено в Настройки->Контакты магазина.

Цитировать
Все можно добавить в шаблон - contact-form.tpl
Понимаю, что можно добавить, поправив руками шаблон и продублировав текст из настроек CMS. Меня интересует как это можно сделать переменными, чтобы не было необходимости каждый раз редактировать шаблон, если контактная информация поменяется.
15 Августа 2014, 15:03:46
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22215
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
1. Перенесите определение переменных из контроллера
/controllers/front/StoresController.php
/**
 * Assign template vars for simplified stores
 */
protected function assignStoresSimplified()
{
...
в котроллер
/controllers/front/ContactController.php

2. После этого можете использовать эти переменные в шаблоне
/themes/default-bootstrap/contact-form.tpl
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
15 Августа 2014, 15:49:32
Ответ #4
  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не получается.

В контроллер /controllers/front/ContactController.php перед последней '}' добавил код:
/**
* Assign template vars for simplified stores
*/
protected function assignStoresSimplified()
{

    <---cut--->

       $this->context->smarty->assign(array(
'simplifiedStoresDiplay' => true,
'stores' => $stores,
'addresses_formated' => $addresses_formated,
));
}

В контроллере /controllers/front/StoresController.php этот же код должен остаться или его нужно удалить?

В шаблоне /themes/default-bootstrap/contact-form.tpl перед тегом </h1> добавил код:
<li>
   <span>{$addresses_formated|escape:'html':'UTF-8'}</span>
</li>

В итоге выводится пустота, при этом в настройках CMS адрес настроен.
15 Августа 2014, 16:46:41
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 13635
  • Репутация: +14563/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Код функции нужно не только добавить, но и использовать эту функцию.
public function initContent()
{
....$this->assignStoresSimplified();
15 Августа 2014, 17:17:30
Ответ #6
  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
но и использовать эту функцию
Можно получить более подробный ответ?
16 Августа 2014, 12:35:02
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1012
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все что должно выполниться при загрузке страницы, нужно вставить в функцию initContent.
Если вы определили функцию assignStoresSimplified() в контоллере, то добавьте в функцию initContent()
$this->assignStoresSimplified();
18 Августа 2014, 12:30:50
Ответ #8
  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Данные из CMS все-равно не отображаются.

В контроллере /controllers/front/ContactController.php в функцию initContent() добавил $this->assignStoresSimplified():
public function initContent()
{
parent::initContent();

$this->assignOrderList();
                $this->assignStoresSimplified();

       <-----cut----->

$this->context->smarty->assign(array(
'contacts' => Contact::getContacts($this->context->language->id),
'message' => html_entity_decode(Tools::getValue('message'))
));

$this->setTemplate(_PS_THEME_DIR_.'contact-form.tpl');
}
18 Августа 2014, 13:19:02
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 1012
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
18 Августа 2014, 13:33:44
Ответ #10
  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
А в шаблон что добавили?
Цитировать
В шаблоне /themes/default-bootstrap/contact-form.tpl перед тегом </h1> добавил код:
<li>
   <span>{$addresses_formated|escape:'html':'UTF-8'}</span>
</li>
18 Августа 2014, 13:59:36
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 33028
  • Репутация: +26761/-0
    • Просмотр профиля
Включите показ ошибок. Похоже что у вас в коде ошибки.
18 Августа 2014, 14:17:22
Ответ #12
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22215
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Все нормально работает, если не сделали ошибок при добавлении кода. Может быть у вас шаблоны темы изменены.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
18 Августа 2014, 15:39:29
Ответ #13
  • Новичок
  • *
  • Сообщений: 18
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Включите показ ошибок. Похоже что у вас в коде ошибки.
Появляется вот такая ошибка - Warning: htmlspecialchars() expects parameter 1 to be string, array given in ...
Это значит, что вместо строки передается массив?  Может вместо $addresses_formated нужно использовать другую переменную?

Цитировать
Все нормально работает, если не сделали ошибок при добавлении кода. Может быть у вас шаблоны темы изменены.
Вас не затруднит выложить измененные файлы? Вносил изменения несколько раз по рекомендациям из этой темы, так и не получается добиться нужно результата.
18 Августа 2014, 15:51:34
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 13635
  • Репутация: +14563/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Попробуйте в шаблоне сделать вывод для объекта Адрес
{$addresses_formated|var_dump}