Работа с дополнительными свойствами в HostCMS v. 6

Re: Работа с дополнительными свойствами в HostCMS v. 6
вывел доп свойства в ис так <xsl:value-of select="property_value[tag_name='zavtra']/value"/> вывелось но не то
доп своиство визуальный редактор а вывелся просто html код текстом а не его оформление..
как вывести правельно
Модератор
Re: Работа с дополнительными свойствами в HostCMS v. 6
<xsl:value-of disable-output-escaping="yes" select="property_value[tag_name='zavtra']/value" />
Re: Работа с дополнительными свойствами в HostCMS v. 6
HostCMS писал(а):
Пример выборки по одному св-ву на верной странице этой темы. Чтобы было по ИЛИ, не нужно добавлять
->having('COUNT(shop_item_properties.shop_id)', '=', count($aValues));


Теперь нужен пример выборки по двум допсвойствам — одно типа дата, другое инфосистема. Элементы должны удовлетворять обоим условиям (И). Не осилила самостоятельно преобразовать пример с модификациями... пример нужен для инфосистемы, НЕ для магазина.
Помогите, пожалуйста.
http://superweb.pro/ — сайты на HostCMS под ключ
Re: Работа с дополнительными свойствами в HostCMS v. 6
Подскажите, как осуществить мою идею?
У меня есть несколько подгрупп магазина которые мне нужно выводить в соответствии с выбранным дополнительным свойством групп магазина.
Например:

  <div id="1"> Группы с отметкой дополнительного свойства группы типа флажок с тегом - ceiling </div>
  <div id="2"> Группы с отметкой дополнительного свойства группы типа флажок с тегом - flooring </div>
  <div id="2"> Группы с отметкой дополнительного свойства группы типа флажок с тегом - walls </div>

Я так понимаю нужно прописать условие в xsl шаблоне что если группа имеет значение дополнительного свойства типа флажок с тегом - ceiling = 1 то выводить если =0 то не выводить.
А как это сделать в данной версии и в магазине я не знаю
Re: Работа с дополнительными свойствами в HostCMS v. 6
Сам себе отвечаю

в конце Типовой Динамической странице "Интернет-магазин"
$Shop_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName($xslName)
   )
   ->itemsProperties(TRUE)
->groupsProperties(TRUE)
   ->show();


и еще в этой же ТДС... (только не уверен надо ли это? Уже не проверял)
// Checkbox
$oProperty->type == 7 && $propertyValue != '' && $propertyValue = 1;


вставил после
$Shop_Controller_Show->addEntity(
                  Core::factory('Core_Xml_Entity')
                     ->name('property_' . $oProperty->id)->value($propertyValue)
               );
            }
            else
            {


В xsl шаблоне
<!-- Отображение подгрупп данной группы, только если подгруппы есть и не идет фильтра по меткам -->
<xsl:if test="count(tag) = 0 and count(shop_producer) = 0 and count(//shop_group[parent_id=$group])  &gt; 0">
  <div class="portion">
    <h3 style="text-align: center;">Пол</h3>
    <xsl:apply-templates select=".//shop_group[parent_id=$group][property_value[tag_name='flooring']/value = 1]" />
    
  </div>
  <div class="portion">
    <h3 style="text-align: center;">Потолок</h3>
    <xsl:apply-templates select=".//shop_group[parent_id=$group][property_value[tag_name='ceiling']/value = 1]" />
  
  </div>
  <div class="portion">
    <h3 style="text-align: center;">Стены</h3>
    <xsl:apply-templates select=".//shop_group[parent_id=$group][property_value[tag_name='walls']/value = 1]" />
    
  </div>
</xsl:if>
Re: Работа с дополнительными свойствами в HostCMS v. 6
Может я плохо искал, может просто чего то не понимаю. Но решить следующую задачу никак не получается:
Необходимо, в динамической странице, не типовой, вывести товары, с случайной сортировкой, у которых дополнительное свойство (флажек) установлено в положение включенно.
Сейчас имеем следующий код, нуждо модифицировать его так, чтоб в xml валились только те товары у которых доп. свойство с id=124 имеет значение 1. Очень прошу помочь, или хотя бы направить в какую строну рыть.
$hitProduct = new Shop_Controller_Show(Core_Entity::factory('Shop', 3));
$hitProduct->xsl(
   Core_Entity::factory('Xsl')
   ->getByName('hitProductOfHome')
  )
  ->itemsProperties(TRUE)
  ->groupsMode('none')
  ->limit(3)
  ->clearOrderBy()
  ->orderBy('random')
  ->group(FALSE)
  ->show();

З.Ы. Частный пример, вообще такие выборки во многих местах будут реализованны
Re: Re: Работа с дополнительными свойствами в HostCMS v. 6
Olleko77 писал(а):
$hitProduct = new Shop_Controller_Show(Core_Entity::factory('Shop', 3));
$hitProduct->xsl(
   Core_Entity::factory('Xsl'
   ->getByName('hitProductOfHome'
  )
  ->itemsProperties(TRUE)
  ->groupsMode('none'
  ->limit(3)
  ->group(FALSE)
  ->show();

Поправка, вот так. Сортировка случайная так тоже не работает.
Модератор
Re: Работа с дополнительными свойствами в HostCMS v. 6
Olleko77 писал(а):
у которых дополнительное свойство (флажек) установлено в положение включенно.
Флажок хранится в таблице св-в property_value_ints, см. готовый пример во втором сверху сообщении: http://www.hostcms.ru/forums/2/7122/
Модератор
Re: Работа с дополнительными свойствами в HostCMS v. 6
Olleko77 писал(а):
Поправка, вот так. Сортировка случайная так тоже не работает.

Полагаю Вам все-таки придется прочитать целиком тему, особенно обращая внимание на примеры с ->clearOrderBy() http://www.hostcms.ru/forums/2/7122/
Re: Работа с дополнительными свойствами в HostCMS v. 6
Ок спасибо за ответ, действительно, все по аналогии делается для магазина....
такой вопрос, а как сделать так чтоб выбрались все товары не содержащие этого доп свойства?
Пример:
$newProductsNOT = new Shop_Controller_Show(Core_Entity::factory('Shop', 3));
$newProductsNOT->xsl(Core_Entity::factory('Xsl')->getByName('newProductOfHomeVIP'))->groupsMode('none')->itemsForbiddenTags(array('text'))->group(FALSE)->limit($nextCount);
      // Объединение с нужной таблицей свойств
$newProductsNOT->shopItems()->queryBuilder()->leftJoin('shop_item_properties', 'shop_items.shop_id', '=', 'shop_item_properties.shop_id')->leftJoin('property_value_ints', 'shop_items.id', '=', 'property_value_ints.entity_id',array(array('AND' => array('shop_item_properties.property_id', '=', Core_QueryBuilder::expression('`property_value_ints`.`property_id`')))))
         // Идентификатор дополнительного свойства
        
      ->where('shop_item_properties.property_id', '=', 70)
         // Значание дополнительного свойства
         ->where('property_value_ints.value', '=', '1')
         ->groupBy('shop_items.id')
         // Количество свойств
         ->having('COUNT(shop_item_properties.shop_id)', '=', 1)->clearOrderBy()->orderBy('shop_items.datetime');
$newProductsNOT
->addEntity(
   Core::factory('Core_Xml_Entity')
      ->name('outCount')
      ->value("$nextCount")
        )
->show();

В данном запросе выбираются товары с доп свойством 70, а нужно выбрать товары у которых этого и еще нескольких свойств нет.
Авторизация