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

#
Re: Контроллеры в клиентском разделе
Доброго, всем, времени суток!
Подскажите, пожалуйста, как вывести список всех компаний в ИМ.
В 5-й версии это делалось просто:

$shop = & singleton('shop');
$shop_company_id_1 = 1;
$shop_company_id_2 = 2;
$xsl = new xsl();
$xmlData = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$xmlData .= '<document_list>'."\n";
$xmlData .= $shop->GenXml4Company($shop_company_id_1);
$xmlData .= $shop->GenXml4Company($shop_company_id_2);
$xmlData .= '</document_list>'."\n";
$xsl_name = 'СписокКомпаний';
$result = $xsl->build($xmlData, $xsl_name);
// Распечатаем результат
echo $result;


как по аналогии сделать в 6-й
Модератор
#
Re: Контроллеры в клиентском разделе
pitbull,
Вам написать свой контроллер показа, ответ на этот вопрос уже давала служба поддержки.
#
Re: Контроллеры в клиентском разделе
Цитата:
pitbull,
Вам написать свой контроллер показа, ответ на этот вопрос уже давала служба поддержки.

Вопрос не в том ЧТО надо сделать, - вопрос КАК? Можете привести пример.
Модератор
#
Re: Контроллеры в клиентском разделе
Система с полностью открытым кодом, Вы можете найти множество контроллеров показа (в большинстве случаев файлы show.php), на сколько я знаю Вам даже давали ссылку на конкретный пример обработчика - форм или выбора доставки магазина.
#
Re: Контроллеры в клиентском разделе
Неужели так было сложно написать две строчки
Если кому надо:
1. Создаем файл /modules/shop/company/controller/show.php
<?php

defined('HOSTCMS') || exit('HostCMS: access denied.');

/**
* Показ компаний ИМ.
*
* @package HostCMS 6\Shop
* @version 6.x
* @author Hostmake LLC
* @copyright © 2005-2012 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
*/
class Shop_Company_Controller_Show extends Core_Controller
{
   /**
    * Allowed object properties
    * @var array
    */
   protected $_allowedProperties = array()   ;

   /**
    * Constructor.
    */
   public function __construct(Shop_Model $oShop)
   {
      parent::__construct($oShop->clearEntities());
   }

   public function show()
   {
      $this->addEntities(
         Core_Entity::factory('Shop_Company')->findAll()
      );

      return parent::show();
   }
}


2.В макете:

$Shop_Company_Controller_Show = new Shop_Company_Controller_Show(
           Core_Entity::factory('Shop', 8)
   );
   $Shop_Company_Controller_Show
      ->xsl(
         Core_Entity::factory('Xsl')->getByName('СписокВсехКомпанийИМ')
      )            
      -> show();


3. Далее дорабатываем контроллер по своему усмотрению.

Разработчикам HostCMS: Добавьте пожалуйста такой контроллер вывода в следующие обновления.
#
Re: Контроллеры в клиентском разделе
Добрый день) Подскажите пожалуйста как ограничить вывод подгрупп в конкретной группе?
Вывожу так :
<?php
// Разделы магазина
      if (Core::moduleIsActive('shop'))
      {
         $Shop_Controller_Show = new Shop_Controller_Show(
            Core_Entity::factory('Shop', 1)
         );
         $Shop_Controller_Show
            ->xsl(
               Core_Entity::factory('Xsl')->getByName('МагазинГруппыТоваровНаГлавной')
            )
            ->groupsMode('all')
            //->itemsForbiddenTags(array('text'))
            ->group(false)
            ->limit(0)
            ->show();
      }
?>

Выводится так:
группа1
   подгруппа1
   подгруппа2
   подгруппа3
   подгруппа4
группа2
   подгруппа1
   подгруппа2
   подгруппа3
   подгруппа4
группа3
   подгруппа1
   подгруппа2
   подгруппа3
   подгруппа4
А нужно так:
группа1
   подгруппа1
   подгруппа2
   подгруппа3
   подгруппа4
группа2
группа3
   подгруппа1
   подгруппа2
   подгруппа3
   подгруппа4
Модератор
#
Re: Контроллеры в клиентском разделе
gmurman,
через shopGroups() получаете объект, через queryBuilder() ограничиваете условие, где parent_id != ID группа2
#
Re: Контроллеры в клиентском разделе
HostCMS писал(а):
через shopGroups() получаете объект, через queryBuilder() ограничиваете условие, где parent_id! = ID группа2

Я полный 0 в этом, Подскажите как будет выглядеть конечный вариант, если не сложно.
#
Re: Контроллеры в клиентском разделе
Подскажите пожалуйста, как можно исключить показ в каталоге магазина товаров с остатком 0, но при этом чтоб сами страницы тких товаров продолжали существовать и на них можно бы было попасть,например по старой ссылке. сейчас товары выводятся от корня в т.д.с. Цитата:
// В корне выводим из всех групп
if ($Shop_Controller_Show->group == 0)
{
   $Shop_Controller_Show->group(FALSE);
}

$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl'->getByName($xslName)
   )

                        
   ->itemsProperties(TRUE)
   ->show();
Модератор
#
Re: Контроллеры в клиентском разделе
antracit,
смотрите эту тему, пример был.
Авторизация