UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: shoto от 13 Апреля 2012, 12:31:00

Название: Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: shoto от 13 Апреля 2012, 12:31:00
Добрый день.
есть ряд вопросов, которые пока не уложились в голове в виде структурированных знание, а отсюда и проблемы с реализацией требуемых вещей.

1)необходимо вывести отдельным меню список производителей (бренды)
(меню/список: картинка + название производителя и все это ссылка на подробное описание производителя)
На странице описания производителя помимо самого описания необходимо вывести товары из каталога, где сей производитель был указан.

а)через что лучше в данном случае создавать эти объекты - страницы контента / разделы каталога / объекты каталога.
б)как прописать свой шаблон для вывода требуемых данных (логотип, описание + товары)

Меню/списк создается и выводится как надо, а вот дальше... уходя по ссылке: если через "страница контента" то выводится по шаблону content/common.xsl и выводит общее для всех - описание. а хотелось бы что бы выводилось картинка, описание ну и товары, но вот как и где прописать что бы подхватывался нужный шаблон...

в) как лучше организовать вывод товаров, если Тип в Шаблонах данных указан как "Справочник" и его значения используются для указания Производителя в товарах.
Проверка через usel... как передать в выборку нужный параметр означающий производителя.
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: shoto от 18 Апреля 2012, 10:40:57
в продолжении разговора:
характеристики товара о производителе выводятся
<property id="399" name="proizvoditel" type="relation">
<title>Производитель</title>
<value>
<item id="16622" name="Sylvanian families" type-id="318" ownerId="10" xlink:href="uobject://16622"/>
</value>
</property>

как при этом правильно прописать выборку USEL?

<selection>
<target result="pages">
<type module="catalog" method="object" />
</target>
<property name="proizvoditel">
{}
</property>
</selection>
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: KTI от 18 Апреля 2012, 15:47:56
Тег "object"
Используется для фильтрации по полям типа "выпадающий список" и "выпадающий список со множественным выбором".

Находится внутри тега property и может указываться там несколько раз. В этом случае значения будут объединены логическим "ИЛИ". Внутри тега object указывается id объекта.

<!-- найти все объекты или страницы, у которых свойство "delivery_address" равно "26564" -->

<property name="delivery_address">
 <object>26564</object>
</property>


т.е. тебе нужно передать в тег object  - id твоего производителя
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: shoto от 19 Апреля 2012, 08:23:46
Этот раздел я уже на help-dev был прочитан не один раз.
я не понимаю как мне выцепить этот самый id производителя, и что мне указать в фигурных скобках:
<selection>
<target result="pages">
<type module="catalog" method="object" />
</target>
<property name="proizvoditel">
<object>{}</object>
</property>
</selection>
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: shoto от 19 Апреля 2012, 08:44:03
т.к. даже если тестово вместо скобок поставить имеющийся id производителя, как в указанном коде
<item id="16622" name="Sylvanian families" type-id="318" ownerId="10" xlink:href="uobject://16622"/>
он равен 16622

то выборка нулевая. ни одного товара нет. значит что то не то.
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: KTI от 19 Апреля 2012, 17:07:19
Давай по порядку:
берешь любой товар, выводишь его в xml формате: localhost/upage/64
находишь там <property id="16622" name="proizvoditel" type="relation">
в фигурных скобках поставь цифру1, т.е.
<property name="proizvoditel">
<object>{1}</object>
</property>

набираешь в браузере: localhost/usel/имя_usela/16622
должен попасть твой товар (как минимум)

1. Проверь чтобы имя свойства (в usel) совпадало с именем свойства у товара, а лучше скопировать
2. В выборке убери другие <property>, если есть
3. Проверь тип свойства, т.е. должен быть type="relation"
4  выложи полный текст выборки

Название: Re:Вывод списка производителей с отфильтро
Отправлено: shoto от 19 Апреля 2012, 19:50:47
беру товар, нашла там код, который уже указывался во втором сообщении.
<property id="399" name="proizvoditel" type="relation">
<title>Производитель</title>
<value>
<item id="16022" name="Sylvanian families" type-id="321" ownerId="10" xlink:href="uobject://16022"/>
</value>
</property>

содержимое Usel-овского файла тоже уже указывала:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type module="catalog" method="object" />
</target>
<property name="proizvoditel">
<object>{1}</object>
</property>
</selection>

так вот мне надо сделать выборку всех товаров у которых указан производитель
name="Sylvanian families
и его id =
id="16022"
т.е. по тем данным что хранятся в полученном ITEM
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: KTI от 20 Апреля 2012, 06:54:46
Вы не написали самого главного, что выдает запрос, приведите полностью текст ответа.
Еще важное условие: нужно чтобы это поле было индескируемое (в шаблонах галка ставится), но он бы тогда выдавал, что поле не найдено, можете фильтруемое тоже поставить

Еще попробуйте сделать выборку в определенной категории, т.е.
<?xml version="1.0" encoding="utf-8"?>
<selection>
   <target result="pages">
      <type module="catalog" method="object" />
      <category depth="3">{2}</category>
   </target>
   <property name="proizvoditel">
      <object>{1}</object>
   </property>
</selection>

Посмотрите в товаре parent_id, и подставьте в запрос: localhost/usel/имя_usela/ИД_производителя/ИД_родителя
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: shoto от 20 Апреля 2012, 08:25:21
И Индексируемое стоит галочка, и фильтруемое и Видимое.
При запросе localhost/usel/item_brend/16622 ответ:
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="usel" method="item_brend" generation-time="0.019147">
<total>0</total>
</udata>

в ново предложенном варианте тоже выводится такой же результат что выше
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: KTI от 20 Апреля 2012, 10:23:08
смоделировал ситуацию, у меня все работает, usel выдает

<udata module="usel" method="brand" generation-time="0.058945"><page id="266" parentId="195" link="/shop/kompressornoe_oborudovanie/porshnevye_bezmaslyannye/kompressor_avtomobil_nyj_bm-250/" is-active="1" object-id="728" type-id="227" update-time="1334900554" alt-name="kompressor_avtomobil_nyj_bm-250" xlink:href="upage://266"><basetype id="49" module="catalog" method="object">Объекты каталога</basetype><name>Компрессор автомобильный BM-250</name></page><total>1</total></udata>
 сам usel
<?xml version="1.0" encoding="utf-8"?>
<selection>
   <target result="pages">
      <type module="catalog" method="object" />
      <category depth="3">{1}</category>
   </target>
   <property name="torgovaya_marka">
      <object>{2}</object>
   </property>
</selection>

запрос
http://localhost/usel/brand/195/729

В шаблонах, в объекте каталога, создайте поле "brand" (для эксперимента), поставьте тип, все галочки, и вручную создайте пару брендов, заполните пару товаров, и запустите выборку (конечно поле "proizvoditel" заменить на brand в выборке)
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: shoto от 20 Апреля 2012, 10:42:20
а как выводится у вас xml товара?
тот кусок где производитель указывается.
и какой вы берете <category depth="3">{1}</category> то бишь id-родителя
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: shoto от 20 Апреля 2012, 13:09:41
так, проблема найдена.
дополнительная группа параметров была создана в дочернем шаблоне Объекта каталога, а не в самом шаблоне Объект каталога. Потому и не находил. сейчас находит.
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: shoto от 20 Апреля 2012, 14:31:02
Остался только вопрос синтаксиса правильный.
когда я нахожусь на странице Бренда, надо выцепить его id как объекта и вставить в вызов
<xsl:apply-templates select="document('usel://item_brend/')" mode="item_brend" />
т.е. что дописать и как правильно передать значения id объекта производителя, если в xml странице производителя данный параметр содержится в этой строчке:
<page id="16386" parentId="16384" link="/brendy1/sylvanian_families/" is-visible="1" is-active="1" object-id="16622" type-id="321" update-time="1334307438" alt-name="sylvanian_families">
object-id="16622"
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: KTI от 20 Апреля 2012, 15:30:25
как-то так
select="document(concat('usel://item_brend/', page/@object-id))"

в usel'e этот параметр будет {1}
Название: Re:Вывод списка производителей с отфильтрованными товарами для них (XSLT)
Отправлено: shoto от 20 Апреля 2012, 15:35:43
спасибо.
как раз сейчас ковырялась, пыталась использовать concat.