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

#
Re: Контроллеры в клиентском разделе
Здравствуйте. Вопрос по выборке, есть код

$Informationsystem_Controller_Show
        ->informationsystemItems()
        ->queryBuilder()
         ->where('id', '=', '1')
        ->clearOrderBy();


Получу элемент с id = 1. А как сделать выборку если у меня есть массив $aId c id'шками, как его скормить queryBuilder?

Спасибо

PS ребята, сделайте сворачивание кода на форуме, не всегда есть желание листать чужой код на полстраницы 8(
изучаю hostcms 6
#
Re: Контроллеры в клиентском разделе

$aItemIds = array(1, 2, 3, 4);
$Informationsystem_Controller_Show
        ->informationsystemItems()
        ->queryBuilder()
         ->where('id', 'IN', $aItemIds)
        ->clearOrderBy();
Заказов не беру. Консультирую редко.
Модератор
#
Re: Контроллеры в клиентском разделе
#
Re: Контроллеры в клиентском разделе
Уважаемые господа, прошу вашей помощи.

Нужно в меню информационной системы добавить к выбранной группе класс "active"

Меню:
Группа 1
Группа 2
Группа 3

При переходе в "группу 2", к тегу <li> добавляться класс "active".

Код вызова:
<?php

$Structure_Controller_Show = new Structure_Controller_Show(
        Core_Entity::factory('Site', CURRENT_SITE));
        
$oStructure = Core_Entity::factory('Structure', CURRENT_STRUCTURE_ID);

while ($oStructure->parent_id)
{
   $oStructure = $oStructure->getParent();
}

$Structure_Controller_Show->xsl(Core_Entity::factory('Xsl')
->getByName('боковоеменю'))
->showInformationsystemGroups(TRUE)
->showShopGroups(TRUE)
   ->parentId($oStructure->id)
->menu(1)
   ->show();
   ?>


XSL шаблон:


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:hostcms="http://www.hostcms.ru/"
   exclude-result-prefixes="hostcms">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <xsl:template match="/site">
      
      <ul>
         <!-- Выбираем узлы структуры первого уровня -->
         <xsl:apply-templates select="*[@id][show=1][active=1]" />
      </ul>
      
   </xsl:template>
   
   <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
   <xsl:variable name="current_structure_id" select="/site/current_structure_id"/>
   
   <xsl:template match="*">
      <!-- Шаблон выборки дочерних узлов -->
      <xsl:variable name="sub" select="*[@id][show=1][active=1]" />
      <xsl:variable name="informationsystem_group" select="/site/current_structure_id" />
      
      <li>
         
         <xsl:attribute name="class">
            <xsl:if test="$current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1">active </xsl:if>
            <xsl:if test="informationsystem_group = @id">active </xsl:if>
         </xsl:attribute>
         
         <!-- Определяем адрес ссылки -->
         <xsl:variable name="link">
            <xsl:choose>
               <!-- Если внутренняя ссылка -->
               <xsl:when test="link != ''">
                  <xsl:value-of disable-output-escaping="yes" select="link"/>
               </xsl:when>
               <!-- Если внешняя ссылка -->
               <xsl:otherwise>
                  <xsl:value-of disable-output-escaping="yes" select="url"/>
               </xsl:otherwise>
            </xsl:choose>
         </xsl:variable>
         
         <!-- Показывать ссылку? -->
         <a href="{$link}">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </a>
         
         <xsl:if test="$sub and 0">
            
            
            
            <ul>
               <xsl:apply-templates select="$sub" />
            </ul>
            
         </xsl:if>
      </li>
   </xsl:template>
</xsl:stylesheet>


Для добавления класса добавил такую строку: <xsl:if test="informationsystem_group = @id">active </xsl:if>

Как мне сказали в техподдержке (за что им огромное спасибо), нужно еще объявить переменную informationsystem_group.

Мой вариант: <xsl:variable name="informationsystem_group" select="/site/current_structure_id" />

В общем ничего не получается, что-то.

За правильную подсказку/вариант, готов заплатить.

Заранее всем спасибо.
#
Re: Контроллеры в клиентском разделе
Вопрос снимается. Решение найдено. Всем спасибо.
#
Re: Контроллеры в клиентском разделе
Здравствуйте. Мне нужно на главной странице разместить ТДС корзины, но так чтобы в XML корзины попадала вся информация от показа магазина, например в дочерний элемент <store> ... </store>. При этом вывод уже разобранного XML-магазина через ob_start(); ... ob_get_clean(); не подходит, так как мне необходимо разбирать XML-магазина и XML-корзины вместе в одном XSL-шаблоне. Подскажите в какую сторону копать? Придётся новый контроллер писать или есть возможность обойтись малой кровью?
#
Re: Контроллеры в клиентском разделе
Подскажите пожалуйста.
Как правильно вывести группы магазина у которых заполненно свойство типа чекбокс?

Спасибо больше, с наступающими праздниками.

изучаю hostcms 6
#
Re: Re: Контроллеры в клиентском разделе
napishu писал(а):
Подскажите пожалуйста.
Как правильно вывести группы магазина у которых заполненно свойство типа чекбокс?


Пытаюсь сделать так, но в xml групп нет. Сдаюсь 8(



$shop_main_group = new Shop_Controller_Show(
    Core_Entity::factory('Shop', 1)
  );
  $shop_main_group
      ->xsl(Core_Entity::factory('Xsl')->getByName('МагазинГруппыГлавная'))
      ->groupsMode('all')
      ->group(FALSE)
      ->limit(0);
  $shop_main_group
      ->shopGroups()
      ->queryBuilder()
      ->leftJoin('shop_group_properties', 'shop_groups.shop_id', '=', 'shop_group_properties.shop_id')
      ->leftJoin('property_value_ints', 'shop_groups.id', '=', 'property_value_ints.entity_id',
      array(
         array('AND' => array('shop_group_properties.property_id', '=', Core_QueryBuilder::expression('`property_value_ints`.`property_id`')))
      )
    )
      ->where('shop_group_properties.property_id', '=', 65)
      ->where('property_value_ints.value', '=', '1')
      ->groupBy('shop_groups.id')
      ->having(Core_Querybuilder::expression('COUNT(DISTINCT `shop_group_properties`.`property_id`)'), '=', 1)
      ->clearOrderBy()
      ->orderBy('name', 'ASC');
  $shop_main_group->show();

изучаю hostcms 6
#
Re: Контроллеры в клиентском разделе
PS научным методом было определено что в xml попадают группы с заполенным свойством только первого уровня, нужно чтобы попадали группы ЛЮБОГО УРОВНЯ.

Темы со схожей проблемой
http://www.hostcms.ru/forums/2/9065/
http://www.hostcms.ru/forums/2/9074/

Спасибо
изучаю hostcms 6
Модератор
#
Re: Контроллеры в клиентском разделе
napishu,
1. Не нужно задавать один и тот же вопрос в разных темах.
2. Будут попадать все группы с заполненным свойством только в случае, если и у родительских групп это св-во заполнено и подходит под условие. В системе управления дерево групп и если у Вас выбираются дочерние группы без родительских (до самого верхнего уровня), то такие группы не могут быть представлены в виде дерева.

Для решения этого вопроса режим генерации групп ставите в none, выбираете группы по доп. св-ву с использованием ORM и без всякого дерева добавляете их контролеру, как добавлять в этой теме десяток раз было показано.
Авторизация