UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: alex от 02 Мая 2011, 17:39:35

Название: Фильтрация выборки USEL
Отправлено: alex от 02 Мая 2011, 17:39:35
Вот вроде бы во всем разобрался, дак нет, стопорнулся вот на чем:

Мне нужно получить ссылку на страницу блога с конкретным id.
Сделал usel

<?xml version="1.0" encoding="utf-8"?>
<selection>
    <target result="pages">
        <type id="45" />
    </target>
</selection>

Он выводит мне вообще все записи конкретного блога (45).

Имею вид типа:

<udata xmlns:xlink="http://www.w3.org/TR/xlink" generation-time="0.033364">
<page id="95" parentId="89" link="/osnov/ferrari_250_gto-1/" is-active="1" object-id="541" type-id="45" update-time="1304342066" alt-name="ferrari_250_gto-1" xlink:href="upage://95">
<basetype id="26" module="blogs20" method="post">
Пост блога
</basetype>
<name>
Ferrari 250 GTO-1
</name>
</page>
<total>
24
</total>
</udata>

Собственно в таком виде мне выводятся абсолютно все посты.
Хочу добавить фильтр, чтобы выводило только те, у которых object-id="541",например.
Но если пишу
<property name="object-id" value="541"/>
Отвечают, что у поста такого свойства нет.

Вобщем как отфильтровать саму выборку?
Название: Re:Фильтрация выборки USEL
Отправлено: admin от 02 Мая 2011, 20:49:55
usel делае выборку из базы, если тебе надо получить какой то конкретный объект или страницу, то usel тебе не нужна. она для этого просто не предназначена используй другие способы.

Если тебе нужно получить ссылку на страницу блога с конкретным page-id. например id=20

то используй <xsl:value-of select="document('upage://20')/udata/page/@link" />
Название: Re:Фильтрация выборки USEL
Отправлено: alex от 02 Мая 2011, 21:07:17
С этим понятно....

<xsl:value-of select="document('upage://97')/udata/page/@link"/>

 вот если прямо в шаблоне записать, то выдает ссылку, а если через javascript сгенерировать и применеть к блоку (append), то в исходном коде просто тупо сама строчка
<xsl:value-of select="document('upage://97')/udata/page/@link"/>

Как сделать чтобы она применилась, ну обработалась? Лучше без перезагрузки
Название: Re:Фильтрация выборки USEL
Отправлено: admin от 02 Мая 2011, 22:21:38
для этого существуют элементы xsl:variable и xsl:param почитай в инете о них

например делаешь <xsl:variable name="page_link" select="document('upage://97')/udata/page/@link"/>

а там где надо вставить вставляешь одним из двух способов

например используем оба <a href="{$page_link}">ссылка на страницу вида <xsl:value-of select="document('upage://97')/udata/page/@link"/></a>
Название: Re:Фильтрация выборки USEL
Отправлено: korogan от 05 Ноября 2011, 17:47:51
А если используется TPL шаблонизатор, как быть?
У нас имеется каталог продукции. Через шаблоны данных сделали Производителей через дерево.
Сами производители идут в новостях.
Их мы вибираем при создании товара.
Как сделать что бы на самой странице было не только название но и оно было кликабельным и отправляло нас на страничку этого производителя.
Название: Re:Фильтрация выборки USEL
Отправлено: admin от 06 Ноября 2011, 10:37:26
для того чтобы вывести ссылку на выбранного производителя (учитывая что поле "производитель" это поля с типом данных "ссылка на дерево"), смотрим документацию к макросам. Предположим, вы выводите значение поля "производитель" через макрос %data getProperty()%, в описании TPL шаблона этого макроса (http://help-dev.umi-cms.ru/data.getProperty.html#tplDesc) видно что:
Цитировать
symlink_item - Выводит отдельное значение для поля типа «Ссылка на дерево».

%value% - Выводит значение поля (в данном случае — название страницы).
%link% - Выводит ссылку на страницу.
%id% - Выводит id страницы. Можно использовать для вывода свойств страницы через макросы %data.getProperty%, %data.getPropertyGroup% или data.getAllGroups.
%object_id% - Выводит id объекта, который является объектом-источником данных для страницы. Можно использовать для вывода свойств страницы через макросы %data getPropertyOfObject()% , %data getPropertyGroupOfObject()% или %data getAllGroupsOfObject()% .
%quant% - Позволяет квантификатор (разделитель) между значениями. Использует блок symlink_quant .
%list-class-first% - в случае, если элемент первый, выводит "first"
%list-class-last% - в случае, если элемент последний, выводит "last"
%list-class-odd% - в случае, если элемент четный, выводит "odd"
%list-class-even% - в случае, если элемент нечетный, выводит "even"
%list-position% - вставляет порядковый номер в списке

используйте %link% чтобы вывести ссылку на элемент выбранный в поле "производитель"

при выводе значения справочника производитель у нас в распоряжение есть