Помогите добавить навую кнопку в displayHomeTab

Автор a35b62, 08 августа 2016, 18:53:44

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

a35b62

Уважаемые эксперты, прошу подсказать как добавить вывод "Избранного" в указанный хук?
Имеется вывод 3-х модулей под баннером на главной http://joxi.ru/Q2KYPpZt9jD4Jr
В хуках они же прикручены http://joxi.ru/p279N5Yt0Beozr

На сколько понимаю "Избранные" есть выбранная категория, как в "Рекомендуемых" или поправьте меня, если я не прав.
И, получается, нужно как-то добавить еще один модуль "Рекомендуемые" только выбрать другую категорию?

Как это сделать - ума не приложу....

Будьте добры ткните носом, а то я уже и гугл замучил но не нашел...

Миколас

"Избранные" - это ты про модуль blockbestsellers?

a35b62

Цитата: Миколас от 08 августа 2016, 19:05:20
"Избранные" - это ты про модуль blockbestsellers?

Нет, на скрине они есть - Лдеры продаж...
А нужно еще добавить вывод одной каегории - чтобы кнопка появилась и соответствующий блок с выводом 8 (или сколько там надо будет штук)
как уже выведены "новинки" "лидеры продаж" и "рекомендуемые"...
Пробовал клонировать homefeatured, но модуль как был 1 так и остался...


Vlad_Stiff

#3

что бы добавить к списку ссылок используйте hookDisplayHomeTab
что бы добавить содержимое hookDisplayHomeTabContent


Из Ваших слов не понятно что означает "нужно еще добавить вывод одной каегории".
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype: -

a35b62

#4
Не целеком выразил мысль, вот и не понятно... извиняюсь, но голова за весь день уже пухнет.

Значит есть как на скрине - http://joxi.ru/Q2KYPpZt9jD4Jr - выводятся новые,  популярные и бестселлеры  соответственно Новые товары, Рекомендованные и Лидеры продаж

Рекомендованные выводят 8 наименований из категории id2
А мне нужно чтобы была еще одна ссылка "Эксклюзивно" - еще один вывод выбранной категории, но с другим id.

Можно же продукт занести в 2 категории? и некоторым товарам задать принадлежность к 2-м категориям и категорию "Эксклюзивно" добавить 4 кнопкой... ну и хуками в Tab и TabContent

Надеюсь осилил донести мысль...

Vlad_Stiff

#5
Просто скопировать модуль homefeatured не выход.
Я вижу следующие пути решения:
1. Скопировать и переписать модуль homefeatured;

2. Написать новый модуль "homeExclusive"  http://doc.prestashop.com/display/PS16/Creating+a+first+module и добавить хуки hookDisplayHomeTab и hookDisplayHomeTabContent в homeExclusive.php
в hookDisplayHomeTab просто отобразить tpl с примерным содержанием:
<li><a data-toggle="tab" href="#homeExclusive" class="homeExclusive">{l s='Exclusive' mod='homeExclusive'}</a></li>
в hookDisplayHomeTabContent

$lang_id = (int)Context::getContext()->language->id;
$category = new Category(777, $lang_id); // 777 - желаемая категория "эксклюзива"
$products = $category->getProducts($lang_id, 1, 8, 'position'); // 1 - номер страницы (оставить таким же), 8 - количество продуктов на страницу, 'position' - сортировка по позиции в категории
$this->smarty->assign(
   array(
      'products' => $products,
      'homeSize' => Image::getSize(ImageType::getFormatedName('home')), //размер изображения, оставить таким же
   )
);
return $this->display(__FILE__, 'homeExclusive.tpl');

homeExclusive.tpl по образу homefeatured.tpl

3.втупую править index.tpl :o
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype: -

a35b62

Цитата: Vlad_Stiff от 08 августа 2016, 21:49:15
Просто скопировать модуль homefeatured не выход.


Ну я нашел статейку как модуль "клонировать", ток не прокатило...
Сейчас почитаю - мож осилю...
Спасибо большое

Vlad_Stiff

Раз осилили статейку как клонировать модуль, попробуйте написать свой, ничего сложного нету, много статей на русском. А основной код я написал.
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype: -

a35b62

Уже читаю по вашей ссылке - мож и английский свой подтяну. а то некогда языками заниматься, а так и интересно и полезно...
Хотя не исключено, что плюну и на русском буду поискать... :)
Еще раз, спасибо

a35b62

#9
Насилил... :(

Не совсем понял зачем новые хуки создавать, если мне в имеющиеся нужно разместить?

Написал модуль, но преста на него ругается
ЦитироватьОшибок: 2

    exclusive (разбор ошибки в /modules/exclusive/exclusive.php),
    exclusive (класс отсутствует в /modules/exclusive/exclusive.php)

В exclusive.php следующее:
<?php
/*
* 2016 Exebeche
* First Module
* Free to use
*/
if (!defined('_PS_VERSION_'))
exit;

class
Exclusive extends Module
{
public function __construct()
{
$this->name = 'exclusive';
$this->tab = 'front_office_features';
$this->version = '1.0.0';
$this->author = 'Alexandr Stepanov';
$this->need_instance = 0;
$this->ps_version_compliancy =  array('min' => '1.6', 'max' => _PS_VERSION_ );
$this->bootstrap = true;

parent::__construct();

$this->displayName = $this->l('Exclusive');
$this->description = $this->l('Модуль для эксклюзива на StoreFG');

$this->confirmUninstall = $this->l('Уверены, что хотите удалить данный модуль?');

if (!Configuration::get('EXCLUSIVE_NAME'))
$this->warning = $this->l('No name provided');
}
public function install()
{
if (Shop::isFeatureActive())
Shop::setContext(Shop::CONTEXT_ALL);
if (!parent::install() ||
!$this->registerHook('displayHomeTab') ||
!$this->registerHook('displayHomeTabContent') ||
!Configuration::updateValue('EXCLUSIVE_NAME', 'my friend')
)
return false;
return true;
}
$lang_id = (int)Context::getContext()->language->id;
$category = new Category(1, $lang_id); // 777 - желаемая категория "эксклюзива"
$products = $category->getProducts($lang_id, 1, 8, 'position'); // 1 - номер страницы (оставить таким же), 8 - количество продуктов на страницу, 'position' - сортировка по позиции в категории
$this->smarty->assign(
array(
'products' => $products,
'homeSize' => Image::getSize(ImageType::getFormatedName('home')), //размер изображения, оставить таким же
)
);
return $this->display(__FILE__, 'Exclusive.tpl');
}


В Exclusive.tpl иизменил содержимое homefeatured.tpl

{if isset($products) && $products}
{include file="$tpl_dir./product-list.tpl" class='exclusive tab-pane' id='exclusive'}
{else}
<ul id="exclusive" class="exclusive tab-pane">
<li class="alert alert-info">{l s='No featured products at this time.' mod='exclusive'}</li>
</ul>
{/if}


Где я что не туда?

И еще не допетрал как
Цитироватьtpl с содержимым: <li><a data-toggle="tab" href="#homeExclusive" class="homeExclusive">{l s='Exclusive' mod='homeExclusive'}</a></li>
вставить в хук?

DarinSr

В классе class Exclusive должны быть методы
install(){}
uninstall(){}
hookГдеНужноВыводить($params){}


http://doc.prestashop.com/display/PS16/Displaying+content+on+the+front+office

Vlad_Stiff

Не используйте название модулей с общими фразами, "Exclusive" плохой вариант, возможно в базе аддонов Preatashop уже есть модуль с таким же названием, лучше - "AlexExclusive", "homeExclusive" и .т.д.
Нужно что бы название модуля, папки, основного файла php и класса совпадали. AlexExclusive/AlexExclusive.php с классом
class AlexExclusive extends Module.

>Не совсем понял зачем новые хуки создавать, если мне в имеющиеся нужно разместить?
Вы не создаете хуки, а размещаете шаблоны в определенные хуки (места, если так можно выразится), или по другому, hook это крюк на который вы подцепляете свой шаблон с выводом данных.
"!$this->registerHook('displayHomeTab') ||" это как раз и попытка зарегистрироваться в хуке displayHomeTab.

В функции install():

return false;
return true;

вы промахнулись с "return false;" переместите в if.

Работа с переменной EXCLUSIVE_NAME лишняя удалите строки с Configuration::get('EXCLUSIVE_NAME') и Configuration::updateValue('EXCLUSIVE_NAME', 'my friend').


public function hookDisplayHomeTab($params)
{
    return $this->display(__FILE__, 'AlexExclusive_tab.tpl');
}


public function hookDisplayHomeTabContent($params)
{
    $lang_id = (int)Context::getContext()->language->id;
    $category = new Category(777, $lang_id); // 777 - желаемая категория "эксклюзива"
    $products = $category->getProducts($lang_id, 1, 8, 'position'); // 1 - номер страницы (оставить таким же), 8 - количество продуктов на страницу, 'position' - сортировка по позиции в категории
    $this->smarty->assign(
        array(
            'products' => $products,
            'homeSize' => Image::getSize(ImageType::getFormatedName('home')), //размер изображения, оставить таким же
        )
    );
    return $this->display(__FILE__, 'AlexExclusive_content.tpl');
}


в AlexExclusive_tab.tpl
<li><a data-toggle="tab" href="#AlexExclusive" id="AlexExclusive_tab">{l s='Exclusive' mod='AlexExclusive'}</a></li>

в AlexExclusive_content.tpl

{if isset($products) && $products}
   {include file="$tpl_dir./product-list.tpl" class='tab-pane' id='AlexExclusive_content'}
{else}
<ul id="AlexExclusive_content" class="tab-pane">
   <li class="alert alert-info">{l s='No exclusive products at this time.' mod='AlexExclusive'}</li>
</ul>
{/if}
(* --[[ /* <!-- {* #  -- ; *} --> */ ]] *)
skype: -