Контроллеры в клиентском разделе

Модератор
#
Re: Контроллеры в клиентском разделе
Вывод товаров из текущей группы и подгрупп первого уровня текущей группы:
1. В настройках типовой создаете свой контроллер, наследуете стандартный и переопределяете метод
class My_Shop_Controller_Show extends Shop_Controller_Show
{
   /**
    * Set item's condition by shop_group_id
    * @return self
    */
   protected function _groupCondition()
   {
      !$this->group && parent::_groupCondition();
      return $this;
   }
}

2. Там же используете My_Shop_Controller_Show вместо Shop_Controller_Show
3. В типовой перед показом
// Массив групп, из которых показывать товары
$aGroups = array($Shop_Controller_Show->group);

$oShop_Group_Main = Core_Entity::factory('Shop_Group', $Shop_Controller_Show->group);

// Массив подгрупп
$aShop_Groups = $oShop_Group_Main
   ->Shop_Groups
   ->findAll();

// У группы есть подгруппы
if (count($aShop_Groups))
{
   foreach ($aShop_Groups as $oShop_Group)
   {
      $aGroups[] = $oShop_Group->id;
   }
}

$Shop_Controller_Show
   ->shopItems()
   ->queryBuilder()
   ->where('shop_group_id', 'IN', $aGroups);
#
Re: Контроллеры в клиентском разделе
Подскажите, пожалуйста, как вывести инфоэлементы всех групп родительской группы (в родительской группе только подгруппы). На предыдущих страницах уже задавали подобный вопрос, но данный ответ касался интернет-магазина, мне же нужны элементы обычной инфосистемы
Модератор
#
Re: Контроллеры в клиентском разделе
mininzidane писал(а):
На предыдущих страницах уже задавали подобный вопрос, но данный ответ касался интернет-магазина, мне же нужны элементы обычной инфосистемы

В примере заменяете слово shop на informationsystem в том же регистре!
#
Re: Re: Контроллеры в клиентском разделе
HostCMS писал(а):
В примере заменяете слово shop на informationsystem в том же регистре!

Так, что-то я совсем запутался. Меняю код в настройках динамической страницы - изменений не вижу! Даже пробовал полностью удалять все из настроек и код динамической страницы инфосистемы (с ID = 1) - и ничего не меняется! Грешил на кеш, но так и не нашел ни в файлах, ни в админке где что чистить. Может быть не тот файл правлю?

Вызываю показ инфосистемы стандартно:

$Informationsystem_Controller_Show = new Informationsystem_Controller_Show(
   Core_Entity::factory('Informationsystem', 1)
);
$Informationsystem_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName('СписокНовостейНаГлавной')
   )
   ->limit(5)
   ->show();


При этом возник вопрос, как в системе привязана конкретная динамическая страница к 'Informationsystem'? Кроме как, вшитой привязки по ИДу ничего в голову не приходит
Модератор
#
Re: Контроллеры в клиентском разделе
mininzidane, полагаю используется другая типовая дин. страница.
#
Re: Контроллеры в клиентском разделе
HostCMS писал(а):
mininzidane, полагаю используется другая типовая дин. страница.


Допустим. Я пробовал во всех трех существующих чистить код и ничего не менялось. Объясните, пожалуйста, где в этом коде:

$Informationsystem_Controller_Show = new Informationsystem_Controller_Show(
   Core_Entity::factory('Informationsystem', 1)
);
$Informationsystem_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName('СписокНовостейНаГлавной')
   )
   ->limit(5)
   ->show();


привязка к какой-либо типовой дин странице?
#
Re: Контроллеры в клиентском разделе
mininzidane,
Цитата:
Объясните, пожалуйста, где в этом коде:
...
привязка к какой-либо типовой дин странице?


нет там привязки, вы напрямую вызываете отображение информационной системы,
это актуально для макетов сайта, чтобы вывести в нужных блоках нужную информацию (например последние новости)

Сама информационная система привязана к разделу структуры, для того, чтобы правильно построить URL
разработка сайтов, фирменных стилей, интерфейсов
#
Re: Re: Контроллеры в клиентском разделе
Спасибо, с этим разобрался. Только вот почему-то выводятся только дочерние группы от родительской, а самих элементов дочерних групп я не вижу в XML
#
Re: Контроллеры в клиентском разделе
добавить
...
->group(FALSE)
->limit(5)
->show();
разработка сайтов, фирменных стилей, интерфейсов
#
Re: Контроллеры в клиентском разделе
toasterec,
все получилось. Большое спасибо
Авторизация