Автор Тема: Как показать новое поле из таблицы ps_product в product-list.tpl  (Прочитано 1733 раз)

30 Ноябрь 2015, 18:41:23
Ответ #15
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Prestashop FAQ - как добавить новое поле к товару
Если вы сделали как написано в этой теме, то показ переменной
на странице товара
{$product->csv}на станице категорий
{$product.csv}
30 Ноябрь 2015, 19:20:14
Ответ #16
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Prestashop FAQ - как добавить новое поле к товару
Если вы сделали как написано в этой теме, то показ переменной
на странице товара
{$product->csv}на станице категорий
{$product.csv}

Да-да, делал все, как в этом FAQ за искл. проверки поля if(isset($this->product->csv) && $this->product->csv) т.к. оно не бывает пустым еще на уровне mysql.

Для самое карточки товара работает только, если в блоке:
$this->context->smarty->assign(array(
'stock_management' => Configuration::get('PS_STOCK_MANAGEMENT'),
'customizationFields' => ($this->product->customizable) ? $this->product->getCustomizationFields($this->context->language->id) : false,


'currencySign' => $this->context->currency->sign,
..............................
>>>>>> 'csv' => $this->product->csv,
..................................
'ENT_NOQUOTES' => ENT_NOQUOTES,
'outOfStockAllowed' => (int)Configuration::get('PS_ORDER_OUT_OF_STOCK')
));

Вставляю эту строчку, выделена, как ">>>>>>".

В product-list вставил для проверки:
{$product.csv} {$product->csv} {$csv}

Никакого эффекта..



30 Ноябрь 2015, 21:02:57
Ответ #17
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Если у вас это цифровое поле, то добавлять нужно в таблицу ps_product. Тогда не нужно его отдельно определять
'csv' => $this->product->csv, достаточно в  файле /classes/Product.php добавить
public $cvs;
public static $definition = array(
        'table' => 'product',
        'primary' => 'id_product',
        'multilang' => true,
        'multilang_shop' => true,
        'fields' => array(
            /* Classic fields */
            'cvs' =>   array('type' => self::TYPE_INT),
и можно выводить эту переменную в карточке товара и в списке товаров.
30 Ноябрь 2015, 21:12:03
Ответ #18
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если у вас это цифровое поле, то добавлять нужно в таблицу ps_product. Тогда не нужно его отдельно определять
'csv' => $this->product->csv, достаточно в  файле /classes/Product.php добавить
public $cvs;
public static $definition = array(
        'table' => 'product',
        'primary' => 'id_product',
        'multilang' => true,
        'multilang_shop' => true,
        'fields' => array(
            /* Classic fields */
            'cvs' =>   array('type' => self::TYPE_INT),
и можно выводить эту переменную в карточке товара и в списке товаров.

Да, цифровое, INT(1).. Я уж в 3 таблицы его внес, думал, может сработает.. ))

Добавлял так:
'csv' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
Ну и объявил, разумеется, в начале:

/** @var integer csv  */
public $csv;

Не фурычит.. Собственно, все это я пробовал еще до обращения на форум.
30 Ноябрь 2015, 21:12:40
Ответ #19
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Напротив, в карточке товара (product.tpl) переменная видна, как {$csv}
Только если вы ее определили в контроллере. Если в классе Product, тогда доступ к ней
$product->csv

Делал, как указано в FAQ, ссылку на который скинул следующий комментатор.
Только в файле product.php переопределял в классе ProductCore, там не было его наследника.
30 Ноябрь 2015, 21:17:34
Ответ #20
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Файл product.php в корне сайта от старой версии. В новой он не нужен. Добавьте переменную прямо в классе не переопределяя классс Product.php. Протестируйте, после того, как все будет работать  можно делать с переопределением.
30 Ноябрь 2015, 21:25:40
Ответ #21
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Файл product.php в корне сайта от старой версии. В новой он не нужен. Добавьте переменную прямо в классе не переопределяя классс Product.php. Протестируйте, после того, как все будет работать  можно делать с переопределением.

В корне сайта у меня лежит product.php c кодом:

require(dirname(__FILE__).'/config/config.inc.php');
Tools::displayFileAsDeprecated();

Tools::redirect('index.php?controller=product'.((count($_GET) || count($_POST)) ? '&'.http_build_query(array_merge($_GET, $_POST), '', '&') : ''), __PS_BASE_URI__, null, 'HTTP/1.1 301 Moved Permanently');

Даже закрывающего тэга нет. А правил я тот product.php, что находится в директории /classes/
30 Ноябрь 2015, 21:27:59
Ответ #22
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
30 Ноябрь 2015, 21:33:12
Ответ #23
  • Фрилансер
  • *
  • Сообщений: 113
  • Репутация: +3/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В файл /classes/Product.php добавляете новую переменную (поле в таблице). Название файла с большой буквы.
Закрывающий тег в файле php не нужен.
30 Ноябрь 2015, 22:15:19
Ответ #24
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У вас версия prestashop какая?

Версия 1.5.6.2, согласно надписи снизу в административной части.
30 Ноябрь 2015, 22:17:06
Ответ #25
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В файл /classes/Product.php добавляете новую переменную (поле в таблице). Название файла с большой буквы.
Закрывающий тег в файле php не нужен.

А я там и добавлял. В карточке товара видна, в выдаче поиска тоже, а при выдаче категорий - нет. Мистика какая-то!
01 Декабрь 2015, 11:28:48
Ответ #26
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проверьте product в шаблоне product-list.tpl.
{foreach from=$products item=product name=products}
    {$product|var_dump}
есть в нем csv, какое значение у этой переменной?
01 Декабрь 2015, 17:43:11
Ответ #27
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проверьте product в шаблоне product-list.tpl.
{foreach from=$products item=product name=products}
    {$product|var_dump}
есть в нем csv, какое значение у этой переменной?

["csv"]=> string(1) "0"

Не INТ...
01 Декабрь 2015, 18:02:20
Ответ #28
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У всех товаров одно и тоже значение?
Удалите поле csv из ps_product_shop и ps_product_lang, оставьте только в ps_product. Тоже самое в классе Product.php
01 Декабрь 2015, 19:21:49
Ответ #29
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У всех товаров одно и тоже значение?
Удалите поле csv из ps_product_shop и ps_product_lang, оставьте только в ps_product. Тоже самое в классе Product.php

Из таблиц тоже удалить? В случае, если я не объявляю эти переменные.