Как на странице группы вывести товары из подгрупп

#
Как на странице группы вывести товары из подгрупп
Имеется интернет-магазин.
В нем есть Группа-1.
В этой группе есть подгруппы: Группа-1.1, Группа-1.2, Группа-1.3
В подгруппах товары.

Как настранице Группы-1 вывести товары из подгрупп?
Модератор
#
Re: Как на странице группы вывести товары из подгрупп
См. http://www.hostcms.ru/forums/2/7122/page-8/

5-е сообщение сверху.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Как на странице группы вывести товары из подгрупп
При вставке кода из 5-ого сообщения сверху в теме http://www.hostcms.ru/forums/2/7122/page-8/ каталог совсем перестает работать.
Может в 5-ое сообщение сверху ошибка вкралась?
Модератор
#
Re: Как на странице группы вывести товары из подгрупп
artemluzin,
Кто знает как именно Вы вставляете этот код ...
#
Re: Как на странице группы вывести товары из подгрупп
HostCMS, Ваш пост указал мне путь

Продублирую для ищущих.

Чтобы на странице группы вывести товары из подгрупп нужно:
- Открыть файл lib_config_6.php (Настройки типовой динамической страницы интернет-магазина)
- Вместо строки:
$Shop_Controller_Show = new Shop_Controller_Show($oShop);

вставить этот код:
class My_Shop_Controller_Show extends Shop_Controller_Show
{
protected function _groupCondition()
{
/*$this->_Shop_Items
->queryBuilder()
->where('shop_items.shop_group_id', '=', intval($this->group));
*/

if ($this->group)
{
$this
->shopItems()
->queryBuilder()
->join('shop_groups', 'shop_groups.id', '=', 'shop_items.shop_group_id', array(
array('AND' => array('(')),
array('' => array('shop_groups.parent_id', '=', $this->group)),
array('OR' => array('shop_groups.id', '=', $this->group)),
array('' => array(')'))
)
);
}
else
{
$this
->shopItems()
->queryBuilder()
->where('shop_items.shop_group_id', '=', 0);
}

return $this;
}
}

//$Shop_Controller_Show = new Shop_Controller_Show($oShop);
$Shop_Controller_Show = new My_Shop_Controller_Show($oShop);
#
Re: Как на странице группы вывести товары из подгрупп
Я бы еще добавил проверку на активность подгрупп

       if ($this->group)
       {
          $this ->shopItems() ->queryBuilder()
             ->join('shop_groups', 'shop_groups.id', '=', 'shop_items.shop_group_id',
                array(
                    array('AND' => array('(')),
                    array('' => array('shop_groups.parent_id', '=', $this->group)),
                    array('OR' => array('shop_groups.id', '=', $this->group)),
                     array('' => array(')')),
                    array('AND' => array('shop_groups.active', '=', 1)),
                )
           );
      }
      else
      {
         $this ->shopItems() ->queryBuilder()->join('shop_groups', 'shop_groups.id', '=', 'shop_items.shop_group_id')->where('shop_groups.active', '=', 1);
      }
Модератор
#
Re: Как на странице группы вывести товары из подгрупп
CCron,
какой класс вы внедрили и куда перестала передаваться активность?!
#
Re: Как на странице группы вывести товары из подгрупп
HostCMS писал(а):
CCron,
какой класс вы внедрили и куда перестала передаваться активность?!

В настройки Тип.Дин страницы, вместо $Shop_Controller_Show = new Shop_Controller_Show($oShop);
добавил код приведенный выше.

Скорей всего в коде типовой динамической страницы перестала работать эта часть:
$Shop_Controller_Show->addEntity(
   Core::factory('Core_Xml_Entity')
      ->name('ТекущаяГруппа')->value($Shop_Controller_Show->group)
);

Т.к. к XML свойству 'ТекущаяГруппа' привязан ряд проверок перестали отображаться подгруппы группы и выделяться активность.
Модератор
#
Re: Как на странице группы вывести товары из подгрупп
о каком "скорее всего" может идет речь, вы включите XML и посмотрите что передается, а что нет.
Вы еще не проверили, а решили, что активность у группы не передается, что, весьма вероятно, не так.
#
Re: Как на странице группы вывести товары из подгрупп
HostCMS писал(а):
о каком "скорее всего" может идет речь, вы включите XML и посмотрите что передается, а что нет.
Вы еще не проверили, а решили, что активность у группы не передается, что, весьма вероятно, не так.

Используем:
$Shop_Controller_Show = new Shop_Controller_Show($oShop);

Нод XSL ТекущаяГруппа есть.

Используем:
$Shop_Controller_Show = new My_Shop_Controller_Show($oShop);

'ТекущаяГруппа' - нет. Т.е. ни 0, ни пустой, а просто не передается.

UPD: вопрос решен. Может кому пригодится, оказывается ещё в макете есть передача ТекущейГруппы
         // ТекущаяГруппа
         if (is_object(Core_Page::instance()->object)
         && get_class(Core_Page::instance()->object) == 'My_Shop_Controller_Show') {
            $Shop_Controller_Show->addEntity(
               Core::factory('Core_Xml_Entity')
               ->name('ТекущаяГруппа')->value(intval(Core_Page::instance()->object->group))
            );
         }
Авторизация