Автор Тема: Description + product name  (Прочитано 191 раз)

06 Июня 2016, 12:53:50
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно в чеке сделать так, чтобы с именем еще шло описание товара, в пдф пока так {$order_detail.product_name} не могу найти переменную описания, помогите пожалуйста, если логически думать в OrderDetail.php, но ничего там такого не нашел
06 Июня 2016, 13:24:31
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 2167
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
$product->description
06 Июня 2016, 13:48:28
Ответ #2
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
$product->description
Что-то вообще одна пустота, будто поле пустое, хотя если брать переменные из OrderDetail все ок, из Product и Category не видит их
06 Июня 2016, 14:45:28
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 32991
  • Репутация: +26759/-0
    • Просмотр профиля
1. Сначало в классе OrderDetail.php определяете переменную.
$this->product_description = $product['description'];2. После этого можете использовать ее в шаблоне .
{$order_detail.product_description}
06 Июня 2016, 16:01:00
Ответ #4
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
1. Сначало в классе OrderDetail.php определяете переменную.
$this->product_description = $product['description'];2. После этого можете использовать ее в шаблоне .
{$order_detail.product_description}

Я php почти не знаю, но все же почему не работает так public $product_description = $product['description'];потом я сделал так
public $product_description;
$this->product_description = $product['description'];
Все равно ошибка, окей сделал метод, опять ошибка, забил и вставил $this->product_description = $product['description']; (после определения переменной) в функции которая так же импортирует поля из product и вставляет в ячейки пдф, теперь пдф делает без ошибок, но все равно нет требуемого результата, да параллельно редактировал и tpl пдфа, вообще не понимаю ничего
06 Июня 2016, 16:27:54
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 13139
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Неправильно делаете. В самом начале файла
/** @var string */
public $product_name;
public $product_description;
Читайте тему про то как создавать новые переменные - http://prestashop-forum.ru/index.php/topic,2835.0.html

06 Июня 2016, 16:57:51
Ответ #6
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Неправильно делаете. В самом начале файла
/** @var string */
public $product_name;
public $product_description;
Читайте тему про то как создавать новые переменные - http://prestashop-forum.ru/index.php/topic,2835.0.html
А куда девать $this->product_description = $product['description_short'];переменная то вроде создается, а вот эта часть не работает, нужно метод сделать? Он сам выполниться или его нужно будет еще и вызвать? Просто не понятно это взаимодействие полей, почему так сложно сделать экземпляр в другом файле.
06 Июня 2016, 17:07:40
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 13139
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Структура prestashop такая, класс-контроллер-шаблон. Поэтому и описывать переменные нужно в своем классе.
06 Июня 2016, 17:48:09
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1195
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы показать описание товаров в pdf, нужно изменить в файле /classes/order/OrderInvoice.php функцию getProductsDetail().
В ней sql нет выборки описания. Описание хранится в таблице ps_product_lang
SELECT *, pl.description_short
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl  ON p.id_product = pl.product_id
Тогда можно будет в шаблоне использовать order_detail.description_short
06 Июня 2016, 18:32:50
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 2167
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы показать описание товаров в pdf, нужно изменить в файле /classes/order/OrderInvoice.php функцию getProductsDetail().
В ней sql нет выборки описания. Описание хранится в таблице ps_product_lang
SELECT *, pl.description_short
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl  ON p.id_product = pl.product_id
Тогда можно будет в шаблоне использовать order_detail.description_short
Только как ты id_lang в этом случае определишь?
07 Июня 2016, 09:56:35
Ответ #10
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вы меня вообще запутали  :o
07 Июня 2016, 10:04:40
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85948
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы вывести описание товаров в счете PDF нужно:
1. Добавить новое поле в таблицу order_detail.
2. Добавить новую переменную в класс OrderDetail.php
Сохранять эту переменную при заказе в бд.
После этих действий вы можете использовать ее в шаблонх PDF.
07 Июня 2016, 10:32:03
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 2167
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы вывести описание товаров в счете PDF нужно:
1. Добавить новое поле в таблицу order_detail.
2. Добавить новую переменную в класс OrderDetail.php
Сохранять эту переменную при заказе в бд.
После этих действий вы можете использовать ее в шаблонх PDF.
Вот и я про это писал. Достать можно только сохраненную при заказе информацию. Так как язык определяется при заказе и после ты уже не сможешь достать описание товара на том же языке, точнее не определишь язык клиента. Если сделать как предлагал Mr.Sen, то описание будет на языке админки.

Сохраняй при заказе описание товара. По другому у тебя не получится. Хотя если на сайте один язык, то можешь сделать как писал Mr.Sen.
07 Июня 2016, 10:45:55
Ответ #13
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В общем я так понимаю, нужно создать поле в OrderDetail.php, потом создать поле в бд ps_order_detail и изменить функцию getProductsDetail(), язык у меня один.
07 Июня 2016, 10:52:27
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 2167
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
В общем я так понимаю, нужно создать поле в OrderDetail.php, потом создать поле в бд ps_order_detail и изменить функцию getProductsDetail(), язык у меня один.
Поле создай в табл., переменную в классе OrderDetail.php, а getProductsDetail менять не нужно. Там и так все данные выбираются
SELECT *
FROM `'._DB_PREFIX_.'order_detail` od