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

30 Ноября 2015, 13:16:56
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте, уважаемые знатоки!

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

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

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


30 Ноября 2015, 13:33:10
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 13118
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Список товаров выводит CategoryController.php
$this->category->getProductsКласс Category.php метод getProducts.
30 Ноября 2015, 14:30:29
Ответ #2
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
$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? Где-же ошибка?
30 Ноября 2015, 14:47:39
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85943
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В методе getProducts есть выборка поля csv?
30 Ноября 2015, 15:18:47
Ответ #4
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Судя по началу запроса: $sql = 'SELECT p.*, product_shop.* все поля должны выбираться.

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

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

30 Ноября 2015, 15:41:51
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Еще модуль blocklayered может переопределять вывод товаров на странице категории.
Новое поле достаточно описать в классе Product и потом его можно использовать в любом шаблоне tpl.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
30 Ноября 2015, 16:08:23
Ответ #6
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Еще модуль blocklayered может переопределять вывод товаров на странице категории.
Новое поле достаточно описать в классе Product и потом его можно использовать в любом шаблоне tpl.

Подскажите пож-та, а где именно править? Нашел blocklayered.php, а там 3400 строчек кода, яндекс примеров не дает ((
30 Ноября 2015, 16:34:49
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 2149
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Судя по началу запроса: $sql = 'SELECT p.*, product_shop.* все поля должны выбираться.

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

Но вот в результате поиска новое поле я легко получил в product-list.tpl посредством $product.csv, не изменяя ничего в классах и контроллерах.
А этот темлейт, как я выяснил опытным путем, ответственен за вывод и результатов поиска и товаров по категориям.
Ты же пишешь что получил поле csv в product-list.tpl. Ну и показывай его в нужном месте
{$product.csv}
30 Ноября 2015, 16:43:08
Ответ #8
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Судя по началу запроса: $sql = 'SELECT p.*, product_shop.* все поля должны выбираться.

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

Но вот в результате поиска новое поле я легко получил в product-list.tpl посредством $product.csv, не изменяя ничего в классах и контроллерах.
А этот темлейт, как я выяснил опытным путем, ответственен за вывод и результатов поиска и товаров по категориям.
Ты же пишешь что получил поле csv в product-list.tpl. Ну и показывай его в нужном месте
{$product.csv}
Так в том-то и дело, что когда ряд товаров находятся после поиска, то {$product.csv} показывается корректно, а когда жму на категорию (с теми-же самыми товарами) - эта переменная постоянно равна нулю...
30 Ноября 2015, 16:47:03
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 2149
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Это может быть связано с кешированием. Отключи кеширование и проверь.
30 Ноября 2015, 16:54:19
Ответ #10
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Это может быть связано с кешированием. Отключи кеширование и проверь.

Отключил - не помогло ((
30 Ноября 2015, 17:06:05
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 20836
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Цитировать
В таблицах, содержащих товар, а точнее ps_produst, ps_product_shop и ps_product_lang, появилось новое числовое поле "csv".
Скорее всего связано в тем, что вы добавили несколько повторяющихся полей. Добавьте поле только в 1 таблицу produst, измените класс Produst и сможете его выводить на странице категории.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
30 Ноября 2015, 17:44:06
Ответ #12
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
В таблицах, содержащих товар, а точнее 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} - вообще ничего не выводит.
Может, это наведет на какие-либо мысли? Помогите, знатоки, я с этим полем три дня сижу ((


30 Ноября 2015, 17:48:26
Ответ #13
  • Новичок
  • *
  • Сообщений: 22
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ведь в списке товаров скрипт каким-то образом берет поля товара самого, цену например или название. Мне-бы найти это место, чтобы вписать это поле насчастное..
30 Ноября 2015, 18:35:42
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 1010
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Напротив, в карточке товара (product.tpl) переменная видна, как {$csv}
Только если вы ее определили в контроллере. Если в классе Product, тогда доступ к ней
$product->csv