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

14 Сентябрь 2015, 18:13:09
Ответ #15
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не работает :( Ошибку не даёт, просто не выводит :(

    public function hookDisplayTop($param)
    {
        $this->user_groups = ($this->context->customer->isLogged() ?
            $this->context->customer->getGroups() : array(Configuration::get('PS_UNIDENTIFIED_GROUP')));
        $this->page_name = Dispatcher::getInstance()->getController();
        if (!$this->isCached('blocktopmenu.tpl', $this->getCacheId())) {
            if (Tools::isEmpty($this->_menu)) {
                $this->makeMenu();
            }

            $shop_id = (int)$this->context->shop->id;
            $shop_group_id = Shop::getGroupFromShop($shop_id);

            $this->smarty->assign('MENU_SEARCH', Configuration::get('MOD_BLOCKTOPMENU_SEARCH', null, $shop_group_id, $shop_id));
            $this->smarty->assign('MENU', $this->_menu);
            $this->smarty->assign('this_path', $this->_path);

    $this->smarty->assign('features',  Feature::getFeatures((int)$this->context->language->id));

    $features = Db::getInstance()->ExecuteS('
    SELECT fl.name feature_name, fvl.value feature_value
    FROM '._DB_PREFIX_.'feature_product fp
    LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = fp.id_feature AND fl.id_lang =1 )
    LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = fp.id_feature_value AND fvl.id_lang =1)
    LEFT JOIN '._DB_PREFIX_.'feature` f ON ( f.id_feature = fp.id_feature AND fl.id_lang =1 )');
   
        }
        $html = $this->display(__FILE__, 'blocktopmenu.tpl', $this->getCacheId());
        return $html;
    }
14 Сентябрь 2015, 18:21:50
Ответ #16
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
1. Сначала нужно добавить значение в переменной, потом ее присваивать шаблоной переменной.
$this->smarty->assign('features',$features);после того как была инициализированна переменная $features
2. Ид языка не 1,  у вас может быть 2,3 ...
id_lang = (int)$this->context->language->id)
14 Сентябрь 2015, 18:27:20
Ответ #17
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
14 Сентябрь 2015, 18:29:01
Ответ #18
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Так ты ничего не поменял, как было у тебя
$this->smarty->assign('features',  Feature::getFeatures((int)$this->context->language->id));так и осталось
14 Сентябрь 2015, 18:37:02
Ответ #19
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подправил, не работает

    public function hookDisplayTop($param)
    {
        $this->user_groups = ($this->context->customer->isLogged() ?
            $this->context->customer->getGroups() : array(Configuration::get('PS_UNIDENTIFIED_GROUP')));
        $this->page_name = Dispatcher::getInstance()->getController();
        if (!$this->isCached('blocktopmenu.tpl', $this->getCacheId())) {
            if (Tools::isEmpty($this->_menu)) {
                $this->makeMenu();
            }

            $shop_id = (int)$this->context->shop->id;
            $shop_group_id = Shop::getGroupFromShop($shop_id);

            $this->smarty->assign('MENU_SEARCH', Configuration::get('MOD_BLOCKTOPMENU_SEARCH', null, $shop_group_id, $shop_id));
            $this->smarty->assign('MENU', $this->_menu);
            $this->smarty->assign('this_path', $this->_path);

//    $this->smarty->assign('features',  Feature::getFeatures((int)$this->context->language->id));
    $this->smarty->assign('features',$features);

    $features = Db::getInstance()->ExecuteS('
    SELECT fl.name feature_name, fvl.value feature_value
    FROM '._DB_PREFIX_.'feature_product fp
    LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = fp.id_feature AND fl.id_lang =1 )
    LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = fp.id_feature_value AND fvl.id_lang =1)
    LEFT JOIN '._DB_PREFIX_.'feature` f ON ( f.id_feature = fp.id_feature AND fl.id_lang =1 )');

   
        }

        $html = $this->display(__FILE__, 'blocktopmenu.tpl', $this->getCacheId());
        return $html;
    }
14 Сентябрь 2015, 18:43:20
Ответ #20
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
1. Сначала нужно добавить значение в переменной, потом ее присваивать шаблоной переменной.
$this->smarty->assign('features',$features);после того как была инициализированна переменная $features
вот так
$features = ...
$this->smarty->assign('features',$features);
14 Сентябрь 2015, 18:46:51
Ответ #21
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Поменять местами?

    public function hookDisplayTop($param)
    {
 ...

    $features = Db::getInstance()->ExecuteS('
    SELECT fl.name feature_name, fvl.value feature_value
    FROM '._DB_PREFIX_.'feature_product fp
    LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = fp.id_feature AND fl.id_lang =1 )
    LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = fp.id_feature_value AND fvl.id_lang =1)
    LEFT JOIN '._DB_PREFIX_.'feature` f ON ( f.id_feature = fp.id_feature AND fl.id_lang =1 )');

    $this->smarty->assign('features',$features);
...
    }
14 Сентябрь 2015, 18:50:46
Ответ #22
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
14 Сентябрь 2015, 19:06:03
Ответ #23
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
14 Сентябрь 2015, 19:14:22
Ответ #24
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Попробывал у себя добавить, результат есть. В шаблоне показывает характеристики и их значение.
{foreach from=$features item=feature}
<li><a>{$feature.name}-{$feature.value}</a></li>
{/foreach}
Не показывает характеристики у которых нет значений.
14 Сентябрь 2015, 19:31:35
Ответ #25
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Скинь плиз свои blocktopmenu.tpl и blocktopmenu.php