Автор Тема: Отображение адреса и телефона поставщика в карточке товара  (Прочитано 924 раз)

14 Ноябрь 2015, 10:53:57
  • Пользователь
  • **
  • Сообщений: 81
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте уважаемые форумчане,

нужно чтоб контактные данные поставщика(адрес и номер телефона) отображались в карточке товара, как можно это сделать? версия престы 1.6.1.2, благодарю за внимание
14 Ноябрь 2015, 12:07:52
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В контроллере /controllers/front/ProductController.php определяете данные поставщика товара,
// Наименование постащика
$supplier_name = Supplier::getNameById((int)$this->product->id_supplier);
....
В шаблоне показываете в нужно месте
{$supplier_name}
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
14 Ноябрь 2015, 12:46:48
Ответ #2
  • Пользователь
  • **
  • Сообщений: 81
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере /controllers/front/ProductController.php определяете данные поставщика товара,
// Наименование постащика
$supplier_name = Supplier::getNameById((int)$this->product->id_supplier);
....
В шаблоне показываете в нужно месте
{$supplier_name}

Спасибо за отклик PrestaMan,

я добавил тот код в контроллер, но теперь при попытке входа в карточку товара выдаётся ошибка. Имеет ли значение место расположения этого кода? Я добавил его перед последней фигурной скобкой, закрывающей класс, но всё равно выдало ошибку. И ещё, вы написали $supplier_name , но мне не нужно назваие поставщика, я его уже вывел и логотип тоже, мне нужны контактные данные: адрес и телефон, как иожно их вывезти?
14 Ноябрь 2015, 13:18:21
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В контоллер код добаляется в метод initContent()
$id_address = Address::getAddressIdBySupplierId((int)$this->product->id_supplier);
if ($id_address > 0) {
        $address = new Address((int)$id_address);
}

$this->context->smarty->assign(array(
.....
        'supplier_address' => $address,
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
14 Ноябрь 2015, 13:41:25
Ответ #4
  • Пользователь
  • **
  • Сообщений: 81
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В контоллер код добаляется в метод initContent()
$id_address = Address::getAddressIdBySupplierId((int)$this->product->id_supplier);
if ($id_address > 0) {
        $address = new Address((int)$id_address);
}

$this->context->smarty->assign(array(
.....
        'supplier_address' => $address,

Заработало!!! Спасибо огромное, выручил :)
07 Январь 2016, 16:36:54
Ответ #5
  • Пользователь
  • **
  • Сообщений: 81
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Привет PrestaMan,

опять нужна ваша помощь :)  а как добавить номер телефона поставщика на страницу поставщика(в файл шаблона supplier.tpl) ? Я попробовал добавить  вышеуказанный вами код в SupplierController.php , затем в шаблонной файл вставил этот код
{$supplier_address->phone|escape:'htmlall':'UTF-8'} , но номер телефона не показывается.
07 Январь 2016, 17:39:50
Ответ #6
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В контроллере SupplierController.php нужно определять переменную в методах
для страницы поставщика - assignOne(),
для списка поставщиков - assignAll().
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
07 Январь 2016, 22:21:59
Ответ #7
  • Пользователь
  • **
  • Сообщений: 81
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере SupplierController.php нужно определять переменную в методах
для страницы поставщика - assignOne(),
для списка поставщиков - assignAll().

PrestaMan, спасибо за ответ. Я добавил нижеуказанный код в обе функции assignOne() и assignAll() файла SupplierController.php:

$supplier_name = Supplier::getNameById((int)$this->product->id_supplier);
$id_address = Address::getAddressIdBySupplierId((int)$this->product->id_supplier);
if ($id_address > 0) {
$address = new Address((int)$id_address);
}
$this->context->smarty->assign(
                array(
........
'supplier_address' => $address,
........
}
Затем я добавил переменные {$supplier_name} и {$supplier_address->phone|escape:'htmlall':'UTF-8'} в оба шаблонных файла  supplier.tpl и supplier-list.tpl , но значения не показываются ни на той странице ни на этой.

08 Январь 2016, 13:26:03
Ответ #8
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Если используете переменную
$this->product->id_supplierто ее нужно сначало инициализировать в контроллере SupplierController.php, только зачем вы это делаете через товар? У вас же уже известно ид поставщика в этом контроллере.
$supplier_name = Supplier::getNameById($this->supplier->id);
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
08 Январь 2016, 13:28:38
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В SupplierController.php вообще проще все делается, вот так имя можно узнать
$this->context->smarty->assign(
                array(
                          'supplier_name' =>  $this->supplier->name
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
08 Январь 2016, 13:38:03
Ответ #10
  • Пользователь
  • **
  • Сообщений: 81
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В SupplierController.php вообще проще все делается, вот так имя можно узнать
$this->context->smarty->assign(
                array(
                          'supplier_name' =>  $this->supplier->name

PrestaMan, имя поставщика теперь показывается, а адрес и телефон нет, как их добавить в контроллер и шаблон?
08 Январь 2016, 13:41:11
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Я же написал, нужно заменить
$this->product->id_supplierна
$this->supplier->id
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
08 Январь 2016, 14:39:53
Ответ #12
  • Пользователь
  • **
  • Сообщений: 81
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я же написал, нужно заменить
$this->product->id_supplierна
$this->supplier->id

PrestaMan, но в контроллере нет этого кода $this->product->id_supplier   ?!
08 Январь 2016, 16:16:44
Ответ #13
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
PrestaMan, спасибо за ответ. Я добавил нижеуказанный код в обе функции assignOne() и assignAll() файла SupplierController.php:

$supplier_name = Supplier::getNameById((int)$this->product->id_supplier);
$id_address = Address::getAddressIdBySupplierId((int)$this->product->id_supplier);
if ($id_address > 0) {
$address = new Address((int)$id_address);
}
$this->context->smarty->assign(
                array(
........
'supplier_address' => $address,
........
}
Затем я добавил переменные {$supplier_name} и {$supplier_address->phone|escape:'htmlall':'UTF-8'} в оба шаблонных файла  supplier.tpl и supplier-list.tpl , но значения не показываются ни на той странице ни на этой.

Вы же его добавли?
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
09 Январь 2016, 13:36:34
Ответ #14
  • Пользователь
  • **
  • Сообщений: 81
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
mAgency, ааа да, теперь я понял :) всё заработало, спасибо вам  PrestaMan и mAgency!