Как вызывать методы интернет магазина и других модулей в коде макета?

#
Как вызывать методы интернет магазина и других модулей в коде макета?
Здравствуйте! Я не великий специалист в объектно-ориентированном PHP. Но все же пытаюсь сам разобраться в логике работы системы. Передо мной стоит несложная задача - сверстать макет интернет магазина. Для этого я стал изучать и XSL... Что касается XSL - более менее понятно, нашел толковый материал, разобрался что примерно к чему. Но вот не могу понять как в разных частях макета страницы мне осуществить вызов необходимых мне виджетов интернет магазина. Грубо говоря, все они отображаются "в ряд" - вывод категорий, дорожка сайта, поисковой фильтр, каталог товаров. Покопавшись в  коде демо-сайта нашел как вызвать дорожку сайта -
$Structure_Controller_Breadcrumbs = new Structure_Controller_Breadcrumbs(
      Core_Entity::factory('Site', CURRENT_SITE)
   );
$Structure_Controller_Breadcrumbs
   ->xsl(
      Core_Entity::factory('Xsl')->getByName('ХлебныеКрошки')
   )
   ->show();


С "фабричным методом" еле знаком, но понял что суть его сводится к отделению работы с интерфейсом - т е  отделение клиентского кода. Но какие методы мне нужны для отдельного вызова списка товаров, отдельного вызова поискового фильтра?
Как это реализуется? Мне кажется что все должно быть довольно просто. Не зря же сооружена такая архитектура кода. На странице API интересующей меня информации не нашел... Даны списки классов и их методов, но как с ними работать, как организовывать "клиентский код" мне ясно не стало.
Заранее спасибо.
Модератор
#
Re: Как вызывать методы интернет магазина и других модулей в коде макета?
Benderbej писал(а):
С «фабричным методом» еле знаком, но понял что суть его сводится к отделению работы с интерфейсом — т е отделение клиентского кода.

Посмотрите, пожалуйста, ветку про ORM

Benderbej писал(а):
Но какие методы мне нужны для отдельного вызова списка товаров, отдельного вызова поискового фильтра?

В данном случае Вам нужны отдельные показы магазина, показ осуществляется с использованием контроллеров, меняя только XSL - один для списка товаров в макете, другой для вывода фильтра (Если рядом, то можно объединить в один XSL-шаблон). Обратите внимание, мы говорим об отдельном выводе неких данных в макете, например, разделов каталога, отдельных спецпредложений и т.п.
Простейший пример контроллера показа магазина
$Shop_Controller_Show = new Shop_Controller_Show(
   Core_Entity::factory('Shop', 1)
);
$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName('МагазинКаталогТоваровНаГлавнойСпецПред')
   )
   ->groupsMode('none')
   //->itemsForbiddenTags(array('text'))
   ->group(FALSE)
   ->limit(3);

$Shop_Controller_Show->show();


Если Вы желаете использовать стандартные функции магазина, то необходимо использовать типовую дин. страницу.
#
Re: Как вызывать методы интернет магазина и других модулей в коде макета?
Цитата:
Передо мной стоит несложная задача — сверстать макет интернет магазина. Для этого я стал изучать и XSL…

Осмелюсь предположить что перед Вами стоит все таки задача интеграции интернет-магазина, а не верстки, потому как для верстки знания XSL не требуются вовсе
Команда разработчиков KAD Systems | Интеграция и нестандартные решения на совесть | Email: info@kad.systems Skype: kad.systems | http://kad.systems/ https://vk.com/kad_sys
#
Re: Как вызывать методы интернет магазина и других модулей в коде макета?
HostCMS писал(а):
В данном случае Вам нужны отдельные показы магазина

прочел об ORM, посмотрел про контроллеры показов. Вызвал в макете, в нужном мне месте контроллер показа каталога товаров
$Shop_Controller_Show = new Shop_Controller_Show(
   Core_Entity::factory('Shop', 4)
);
$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName('МагазинКаталогТоваров')
   )
   ->group(FALSE)
   ->limit(5);

$Shop_Controller_Show->show();

Список товаров показывает, однако кнопка навигации(перелистывание страницы) не работает. Отображает переход на новый url(page-2/), но в списке те же товары что и на первой странице.
Если выводить содержание типовой динамической страницы через строку       
Core_Page::instance()->execute();
то все функционирует как надо.

Я правильно понял, что мне нужно создать несколько отдельных XSL-шаблонов, для показа каждой части интернет магазина, чтобы можно было разделить их по отдельным местам в макете? Возникает другой вопрос - у типовой динамической страницы есть еще другой вариант - товар. Если в макет для интернет магазина вставить контроллер показа "товар", то на странице списков товаров он покажет все товары подробно...
Нужно вводить условие показа, наподобие
if (Core::moduleIsActive('shop'))


А мне действительно нужно просто интегрировать магазин(только стандартные функции) в свой html-шаблон - просто отделить в коде страницы фильтр от списка,  фильтр от товара, убрать строку навигации(с этим я уже справился), вывод описания группы товаров вывести в отдельном div-е.
Авторизация