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

#
Re: Контроллеры в клиентском разделе
Здравствуйте!

Как отобразить ВСЕ элементы информационной системы, даже у которых дата окончания публикации прошла, через ТДС

пытаюсь так сделать, но все равно не выводит

if ($Informationsystem_Controller_Show->group == 0) {
   
      $dateTime = Core_Date::timestamp2sql(time());
      $Informationsystem_Controller_Show
         ->group(FALSE)
         ->groupsMode('none')
         ->informationsystemItems()
         ->queryBuilder()
         ->where('informationsystem_items.end_datetime', '<', $dateTime);
}
HostDev.pw - модули для HostCMS, Telegram: @hostdev
Модератор
#
Re: Контроллеры в клиентском разделе
EugenyP,
просто через ТДС не выйдет, нужно унаследовать контроллер и заменить в своем наследнике
protected function _setInformationsystemItems()
   {
...
   }
#
Показ товаров, остаток которых на кладах больше нуля
Добрый день,
В ТДС, добавил:
      //Warehouses
      if (Core_Array::getGet('warehouse_items_id')
      {
      $iwarehouseitemid = intval(Core_Array::getGet('warehouse_item_id');
      $Shop_Controller_Show->addEntity(
      Core::factory('Core_Xml_Entity'
         ->name('shop_warehouse_items_id'->value($iwarehouseitemid)
      );

      $Shop_Controller_Show->shopItems()
      ->shopItems()
      ->queryBuilder()
      ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id'
      ->having('SUM(shop_warehouse_items.count)', '>', 0)
      ->groupBy('shop_items.id';
      }   
и
// XML-сущность, к которй будут добавляться warehouse
$oWarehousesXmlEntity = Core::factory('Core_Xml_Entity'->name('Warehouses';
// Добавляем XML-сущность контроллеру показа
$Shop_Controller_Show->addEntity($oWarehousesXmlEntity);

// Список производителей
$oshop_warehouse_items = $oShop->shop_warehouse_items;
$oshop_warehouse_items->queryBuilder()
->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_warehouse_items.id'
->having('SUM(shop_warehouse_items.count)', '>', 0)
->groupBy('shop_items.id';

$ashop_warehouse_items = $oshop_warehouse_items->findAll();
foreach ($ashop_warehouse_items as $oshop_warehouse_items)
{
// Добавляем производителя потомком XML-сущности
$oWarehousesXmlEntity->addEntity(
$oShop_warehouse->clearEntities()
);
}
$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl'->getByName($xslName)
   )
   ->itemsProperties(TRUE)
   ->show();
в XSL55 добавил:
               <div class="sorting">
               <!-- Если есть на складе -->               
                  <xsl:if test="count(shop_warehouse_items) > 0">
                     На складе:&#xA0;
                     <select name="shop_warehouse_items_id">
                        <option value="0">&#x2026;</option><xsl:apply-templates select="shop_warehouse_items/count"/>
                     </select>&#xA0;
                  </xsl:if>
               </div>
и
<!-- Шаблон для фильтра warehouse -->
   <xsl:template match="shop_warehouses">
      <xsl:param name="shop_warehouses_items_id" select="@id"/>
         <option value="{@id}">
            <xsl:if test="@id = /shop/warehouses">
               <xsl:attribute name="selected"> </xsl:attribute>
            </xsl:if>
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </option>
   </xsl:template>
но конечно ничего не работает:
Exception: The property 'shop_warehouse_items' does not exist in the model 'shop'
29 modules\core\exception.php
1177 modules\core\orm.php
284 hostcmsfiles\lib\lib_6\lib_6.php
209 modules\lib\model.php
100 modules\core\page.php
16 templates\template18\template.htm
73 modules\template\model.php
100 modules\core\page.php
123 templates\template17\template.htm
73 modules\template\model.php
100 modules\core\page.php
363 modules\core\command\controller\default.php
171 modules\core\router\route.php
205 index.php
Модератор
#
Re: Контроллеры в клиентском разделе
Откуда Вы взяли эту связь? $oshop_warehouse_items = $oShop->shop_warehouse_items;
#
Re: Контроллеры в клиентском разделе
На форуме, нашел пример для фильтра по производителям. Думал его изменить для своего фильтра. По разному написал, но всё равно (((. Хотел сам пробовать перед тем что тут написать "Пришлите мне код для фильтра по складам"
#
Re: Контроллеры в клиентском разделе
Если к фильтру по производителям, добавить:
   ->shopItems()
   ->queryBuilder()
   ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id'
   ->having('SUM(shop_warehouse_items.count)', '>', 0)
   ->groupBy('shop_items.id';

$Shop_Controller_Show->show();
Всё работает, но конечно не как надо, а как создавать новый, я не понял.
#
Re: Контроллеры в клиентском разделе
Переделал, но всё равно ошибка:
ТДС:
      if (Core_Array::getGet('shop_warehouse_items_id')
      {
      $iProducerId = intval(Core_Array::getGet('shop_warehouse_items_id');
      $Shop_Controller_Show->addEntity(
      Core::factory('Core_Xml_Entity'
         ->name('shop_warehouse_items_id'->value($count)
      );

         $Shop_Controller_Show->shopItems()->queryBuilder()
               ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id'
               ->having('SUM(shop_warehouse_items.count)', '>', 0)
               ->groupBy('shop_items.id';
      }
XSL:
               <div class="warehouseFilter">
                  <xsl:text>Склад от: </xsl:text>
                  <input name="shop_warehouse_items_id" size="5" type="text">
                     <xsl:if test="/shop/shop_warehouse_items_id != 0">
                        <xsl:attribute name="value"><xsl:value-of select="/shop/shop_warehouse_items_id"/></xsl:attribute>
                     </xsl:if>
                  </input>
                  </div>
#
Re: Контроллеры в клиентском разделе
Всё, тема закрыта. Работает))) Извините за глупый вопрос.
#
Re: Контроллеры в клиентском разделе
С помощью метода
addEntity()
можно добавлять дополнительные свойства в XML, создавая, тем самым, новые теги или новую иерархию тегов. А можно ли добавить новый дочерий тег в уже существующую иерархию тегов?
#
Re: Контроллеры в клиентском разделе
Хочу вывести элементы группы, вывел. Но проблема в том, что на странице элемента вместо полного описания снова выводится все элементы группы. В разделе используется динамическая страница


<?php

$Informationsystem_Controller_Show = new Informationsystem_Controller_Show(
    Core_Entity::factory('Informationsystem', 8)
);


$Informationsystem_Controller_Show
    ->xsl(
        Core_Entity::factory('Xsl')->getByName('СписокЭлементовИнфосистемы')
    )
    ->limit(50)  
    ->group(34)
    ->show();

?>



Может нужно определять, нахожусь ли я на странице элемента и тогда не выводить группы?  
Авторизация