Как показать новое поле из таблицы ps_product в product-list.tpl

Автор Greenslonick, 30 ноября 2015, 13:16:56

« назад - далее »

Greenslonick

Здравствуйте, уважаемые знатоки!

В таблицах, содержащих товар, а точнее ps_produst, ps_product_shop и ps_product_lang, появилось новое числовое поле "csv".
Соответственно, хочу вывести его в списке товаров, результатах поиска и карточке товара. С последними двумя проблем нет,
сделал изменения в classes/Product.php и controllers/front/ProductController.php.

Но вот при выводе в списке товаров категории ничего не помогло, видим ее всегда как ноль.

Подскажите пож-та, в каком направлении копать, облазил инет, но решения так и не нашел..



Adik

Список товаров выводит CategoryController.php
$this->category->getProducts
Класс Category.php метод getProducts.

Greenslonick

#2
$this->context->smarty->assign(array(
'category' => $this->category,
'description_short' => Tools::truncateString($this->category->description),
'products' => (isset($this->cat_products) && $this->cat_products) ? $this->cat_products : null,

                          ...............................................

'suppliers' => Supplier::getSuppliers(),
'csv' => $this->category->getProducts->csv

));


Вставил строчку в categorycontroller. По идее этот блок и должен поставлять переменные в product-list.tpl? Где-же ошибка?

DarinSr


Greenslonick

Судя по началу запроса: $sql = 'SELECT p.*, product_shop.* все поля должны выбираться.

Прошу прощения, первый раз столкнулся я с престашопом..

Но вот в результате поиска новое поле я легко получил в product-list.tpl посредством $product.csv, не изменяя ничего в классах и контроллерах.
А этот темлейт, как я выяснил опытным путем, ответственен за вывод и результатов поиска и товаров по категориям.


PrestaMan

Еще модуль blocklayered может переопределять вывод товаров на странице категории.
Новое поле достаточно описать в классе Product и потом его можно использовать в любом шаблоне tpl.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Greenslonick

Цитата: PrestaMan от 30 ноября 2015, 15:41:51
Еще модуль blocklayered может переопределять вывод товаров на странице категории.
Новое поле достаточно описать в классе Product и потом его можно использовать в любом шаблоне tpl.

Подскажите пож-та, а где именно править? Нашел blocklayered.php, а там 3400 строчек кода, яндекс примеров не дает ((

Миколас

Цитата: Greenslonick от 30 ноября 2015, 15:18:47
Судя по началу запроса: $sql = 'SELECT p.*, product_shop.* все поля должны выбираться.

Прошу прощения, первый раз столкнулся я с престашопом..

Но вот в результате поиска новое поле я легко получил в product-list.tpl посредством $product.csv, не изменяя ничего в классах и контроллерах.
А этот темлейт, как я выяснил опытным путем, ответственен за вывод и результатов поиска и товаров по категориям.
Ты же пишешь что получил поле csv в product-list.tpl. Ну и показывай его в нужном месте
{$product.csv}

Greenslonick

Цитата: Nikola от 30 ноября 2015, 16:34:49
Цитата: Greenslonick от 30 ноября 2015, 15:18:47
Судя по началу запроса: $sql = 'SELECT p.*, product_shop.* все поля должны выбираться.

Прошу прощения, первый раз столкнулся я с престашопом..

Но вот в результате поиска новое поле я легко получил в product-list.tpl посредством $product.csv, не изменяя ничего в классах и контроллерах.
А этот темлейт, как я выяснил опытным путем, ответственен за вывод и результатов поиска и товаров по категориям.
Ты же пишешь что получил поле csv в product-list.tpl. Ну и показывай его в нужном месте
{$product.csv}

Так в том-то и дело, что когда ряд товаров находятся после поиска, то {$product.csv} показывается корректно, а когда жму на категорию (с теми-же самыми товарами) - эта переменная постоянно равна нулю...

Миколас

Это может быть связано с кешированием. Отключи кеширование и проверь.

Greenslonick

Цитата: Nikola от 30 ноября 2015, 16:47:03
Это может быть связано с кешированием. Отключи кеширование и проверь.

Отключил - не помогло ((

PrestaMan

ЦитироватьВ таблицах, содержащих товар, а точнее ps_produst, ps_product_shop и ps_product_lang, появилось новое числовое поле "csv".
Скорее всего связано в тем, что вы добавили несколько повторяющихся полей. Добавьте поле только в 1 таблицу produst, измените класс Produst и сможете его выводить на странице категории.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Greenslonick

Цитата: PrestaMan от 30 ноября 2015, 17:06:05
ЦитироватьВ таблицах, содержащих товар, а точнее ps_produst, ps_product_shop и ps_product_lang, появилось новое числовое поле "csv".
Скорее всего связано в тем, что вы добавили несколько повторяющихся полей. Добавьте поле только в 1 таблицу produst, измените класс Produst и сможете его выводить на странице категории.

Но тогда таким образом шаблон product-list.tpl корректно видит переменную {$product.csv} в случае, если был поиск?

Напротив, в карточке товара (product.tpl) переменная видна, как {$csv}

Когда же я product-list.tpl вставляю их для проверки и вхожу в одну из категорий, то {$product.csv} всегда равен нулю, а {$csv} - вообще ничего не выводит.
Может, это наведет на какие-либо мысли? Помогите, знатоки, я с этим полем три дня сижу ((



Greenslonick

Ведь в списке товаров скрипт каким-то образом берет поля товара самого, цену например или название. Мне-бы найти это место, чтобы вписать это поле насчастное..

tigran

ЦитироватьНапротив, в карточке товара (product.tpl) переменная видна, как {$csv}
Только если вы ее определили в контроллере. Если в классе Product, тогда доступ к ней
$product->csv