Автор Тема: [РЕШЕНО] Как вывести характеристику товара в prestashop?  (Прочитано 3461 раз)

27 Апрель 2016, 11:23:15
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как вывести определенную характеристику товара в prestashop в другом месте?
27 Апрель 2016, 11:58:37
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Вывод характеристики в любом месте шаблона product.tpl
{if isset($features) && $features}
    {foreach from=$features item=feature}
        {if $feature.id_feature == 'id характеристики'}
           <p>{$feature.name} - {$feature.value}</p>
27 Апрель 2016, 15:12:42
Ответ #2
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вставляю код в файл product.tpl
ошибка 500

Ид взял из таблицы ps_feature
версия Prestashop 1.6.1.4

И еще :можно ли вывести этим же кодом нужную характеристику в карточки товаров Product-list.tpl ?
27 Апрель 2016, 15:27:10
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
27 Апрель 2016, 15:28:43
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
А ты теги закрывающие не забыл? Это не полный код?
if isset($features) && $features}
    {foreach from=$features item=feature}
        {if $feature.id_feature == '5'}
           <p>{$feature.name} - {$feature.value}</p>
27 Апрель 2016, 15:35:43
Ответ #5
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вот вставляю этогт код в файл product.list.tpl
<div class="metri">
Кол-во м2 в упаковке:
{foreach $products.features as $feature}
{if $feature.name == 'Количество в упаковке м2' }<p>{$feature.value|escape:'htmlall':'UTF-8'}</p>{/if}
{/foreach}
</div>
не выводится характеристика
27 Апрель 2016, 15:56:33
Ответ #6
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Цитировать
Вот вставляю этогт код в файл product.list.tpl

В product-list.tpl не будет работать, этот код для product.tpl
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
27 Апрель 2016, 16:00:31
Ответ #7
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
этот код выводит в product-list.tpl  все характеристики
{foreach from=$product.features item=feature name=features}
{$feature.value|escape:'htmlall':'UTF-8'}
{/foreach}
но нужна только одна
27 Апрель 2016, 16:04:33
Ответ #8
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
27 Апрель 2016, 16:18:59
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
27 Апрель 2016, 16:23:36
Ответ #10
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
вот получилось сделать вывод характеристики в product.tpl
{if isset($features)}
 <div class="features">
  {foreach from=$features item=feature name=pr_features}
   {if $feature.name == 'Количество элементов в упаковке' }
    <div>
     {$feature.name}: <span>{$feature.value}</span>
    </div>
   {/if}
  {/foreach}
 </div>
{/if}
Но как тогда вывести в product-list.tpl?
27 Апрель 2016, 16:28:20
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
В контроллере /controllers/front/CategoryController.php добавить определение переменной features
$this->context->smarty->assign(array(
    'features' => $this->product->getFrontFeatures($this->context->language->id),
После этого можно выводить характеристики в product-list.tpl.
27 Апрель 2016, 16:40:01
Ответ #12
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
так?
  /**
     * Initializes page content variables
     */
    public function initContent()
    {
        parent::initContent();

        $this->setTemplate(_PS_THEME_DIR_.'category.tpl');

        if (!$this->customer_access) {
            return;
        }

        if (isset($this->context->cookie->id_compare)) {
            $this->context->smarty->assign('compareProducts', CompareProduct::getCompareProducts((int)$this->context->cookie->id_compare));
        }

        // Product sort must be called before assignProductList()
        $this->productSort();

        $this->assignScenes();
        $this->assignSubcategories();
        $this->assignProductList();

        $this->context->smarty->assign(array(
            'category'             => $this->category,
            'description_short'    => Tools::truncateString($this->category->description, 350),
            'products'             => (isset($this->cat_products) && $this->cat_products) ? $this->cat_products : null,
            'id_category'          => (int)$this->category->id,
            'id_category_parent'   => (int)$this->category->id_parent,
            'return_category_name' => Tools::safeOutput($this->category->name),
            'path'                 => Tools::getPath($this->category->id),
            'add_prod_display'     => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
            'categorySize'         => Image::getSize(ImageType::getFormatedName('category')),
            'mediumSize'           => Image::getSize(ImageType::getFormatedName('medium')),
            'thumbSceneSize'       => Image::getSize(ImageType::getFormatedName('m_scene')),
            'homeSize'             => Image::getSize(ImageType::getFormatedName('home')),
            'allow_oosp'           => (int)Configuration::get('PS_ORDER_OUT_OF_STOCK'),
            'comparator_max_item'  => (int)Configuration::get('PS_COMPARATOR_MAX_ITEM'),
            'suppliers'            => Supplier::getSuppliers(),
            'body_classes'         => array($this->php_self.'-'.$this->category->id, $this->php_self.'-'.$this->category->link_rewrite)

           
        ));
        $this->context->smarty->assign(array(
            'features' => $this->product->getFrontFeatures($this->context->language->id)
    }
27 Апрель 2016, 16:42:07
Ответ #13
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Все в один массив
$this->context->smarty->assign(array(
            'category' => $this->category,
            'features'  => $this->product->getFrontFeatures($this->context->language->id),
....
27 Апрель 2016, 16:44:08
Ответ #14
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
До этого нужно будет объект товар инициализировать. Без этого не определит характеристики.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!