Автор Тема: Вывод вех характеристик товаров  (Прочитано 1837 раз)

13 Сентябрь 2015, 17:40:43
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
На всех форумах решено для карточки товара и страницы категорий. А как вывести на отдельной странице или главной? Просто списком?
13 Сентябрь 2015, 17:48:39
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Также как и на странице товара и категорий. В чем трудности?
13 Сентябрь 2015, 17:50:13
Ответ #2
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вывод всех характеристик товара стандарная функция. Эта функция уже есть в prestashop, никаких дополнительных решений не требуется. 
13 Сентябрь 2015, 18:41:03
Ответ #3
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Пробовал так
    {foreach from=$product.features item=feature name=features}
             {$feature.name|escape:'htmlall':'UTF-8'}{$feature.value|escape:'htmlall':'UTF-8'}
     {/foreach}
и так
             {$feature.name|escape:'htmlall':'UTF-8'}{$feature.value|escape:'htmlall':'UTF-8'}
и так
    {foreach from=features item=feature name=features}
             {$feature.name|escape:'htmlall':'UTF-8'}{$feature.value|escape:'htmlall':'UTF-8'}
     {/foreach}

Не выводит, в карточке товара и на странице категорий выводит отлично. Есть варианты?
13 Сентябрь 2015, 21:50:57
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно определить переменную $products в контроллере. Для этого контроллер главной или своей страницы extends CategoryController.
http://prestashop-forum.ru/index.php/topic,5003.msg30149.html
14 Сентябрь 2015, 15:25:10
Ответ #5
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вообще задача стоит вывести одну из характеристик, например 111 в верхнее меню blocktopmenu и в <li> добавить значения характеристики

попробовал так, но осталась проблема со значениями $feature.value
Значения и ссылки на них не выводятся

{assign var='features' value=Feature::getFeatures($cookie->id_lang)}
{if isset($features) && $features}
    {foreach from=$features item=feature}
{if $feature.name == '111'}
<li>
            <a href="" onclick="return false;">{$feature.name}</a>
<ul>
            <li><a href="#">{$feature.value}</a></li>
</ul>
</li>
{/if}
    {/foreach}
{/if}

Как вывести в выпадающем списке значения со ссылками?
14 Сентябрь 2015, 16:09:50
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Задача какая-то не полная. Вывести характеристики можно, достаточно определить переменную features в модуле blocktopmenu в файле /modules/blocktopmenu/blocktopmenu.php
Толку от этого вывода? Просто показать сколько характеристик есть на сайте? Ссылки куда должны вести?
Чтобы был хоть какой-то смысл, можно выводить характеристики в шаблоне /themes/default-bootstrap/product-sort.tpl для сортировки товара по выбранной характеристике. Но опять же смысла нет, есть модуль /modules/blocklayered/blocklayered.php в нем уже сделан фильтр по характеристикам.
14 Сентябрь 2015, 16:15:49
Ответ #7
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Задача реализовать через верхнее меню. Со ссылками пока можно потерпеть, хотя бы вывести значения требуется. А потом будет видно что делать дальше
14 Сентябрь 2015, 16:25:52
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
В файле модуля /modules/blocktopmenu/blocktopmenu.php
public function hookDisplayTop($param)
{
....
$this->smarty->assign('features',  Feature::getFeatures((int)$this->context->language->id));
Потом эту переменную можно использовать в шаблоне.
14 Сентябрь 2015, 16:28:34
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
В шаблоне /themes/default-bootstrap/modules/blocktopmenu/blocktopmenu.tpl
{foreach from=$features item=feature }
<li><a>{$feature.name}</a></li>
{/foreach}
14 Сентябрь 2015, 16:38:42
Ответ #10
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ну имя характеристики выводится и без правки blocktopmenu.php
Нужно вывести её значения
14 Сентябрь 2015, 16:55:22
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Метод getFeatures не выбирает значения характеристик. Для выборки характеристик + значения нужно писать свой sql запрос.
SELECT name, value
FROM ps_feature_product fp
LEFT JOIN ps_feature_lang fl ON ( fl.id_feature = fp.id_feature AND fl.id_lang =1 )
LEFT JOIN ps_feature_value_lang fvl ON ( fvl.id_feature_value = fp.id_feature_value AND fvl.id_lang =1 )
LEFT JOIN ps_feature f ON ( f.id_feature = fp.id_feature AND fl.id_lang =1 )
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
14 Сентябрь 2015, 17:24:04
Ответ #12
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Весело. Судя по всему со ссылками тоже будет заморочка. Подробнее можно? Какой файл в classes править?
14 Сентябрь 2015, 17:38:09
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Файл все тот-же /modules/blocktopmenu/blocktopmenu.php. Класс менять не нужно. Только создать sql запрос $sql и заменить готовый метод getFeatures на
Db::getInstance()->executeS($sql)
14 Сентябрь 2015, 17:39:01
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
А если еще и ссылки нужны, то сразу в sql запросе и данные по ссылкам добавить.