UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: atach от 08 Ноября 2012, 14:02:57

Название: Вывод типа поля при document('uobject://
Отправлено: atach от 08 Ноября 2012, 14:02:57
Подскажите, все проекты делаю на tpls, сейчас нужно работать со счетами, а они все в xslt ...

Вопрос при вызове макроса:
<xsl:value-of select="document('uobject://1107.order_partner_id')/udata/property/value" />

Выдает значения, только если тип полей "строка", а у меня тип выводимого поля "выпадающий список" - ничего не выводит.
Название: Re:Вывод типа поля при document('uobject://
Отправлено: Rodogor от 08 Ноября 2012, 15:33:27
Нужно смотреть на структуру xml.

Для "строка" структура такая:

Цитировать
<property id="39" name="last_request_time" type="int">
<title>Время последнего обращения</title>
<value>1352374169</value>
</property>

Для "выпадающий список" такая:

Цитировать
<property id="380" name="strana" type="relation">
<title>Страна</title>
<value>
<item id="3731" name="Россия" type-id="4" type-guid="d69b923df6140a16aefc89546a384e0493641fbe" ownerId="10" xlink:href="uobject://3731"/>
</value>

</property>
Разница для наглядности показана.
Вам нужно указать узел item и вывести его @атрибуты
<xsl:value-of select="document('uobject://1107.order_partner_id')/udata/property/value/item/@name" /> - атрибут name
<xsl:value-of select="document('uobject://1107.order_partner_id')/udata/property/value/item/@id" />  - атрибут id

Название: Re:Вывод типа поля при document('uobject://
Отправлено: niakriss от 08 Ноября 2012, 17:32:00
Выпадающий список я так понимаю с данными из справочника? тогда надо с помощью usel...
http://wiki.umisoft.ru/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_USel
или
http://umihelp.ru/articles/vyvod_elementov_spravochnika_v_xslt/
Название: Re:Вывод типа поля при document('uobject://
Отправлено: admin от 10 Ноября 2012, 11:41:41
так как atach, вытягивает значение у конкретного объекта с id = 1107

То, как и советовал Rodogor, просто учтите что выпадающий список имеет немного другую структуру и воспользуйтесь вариантами, которые так же любезно привел Rodogor

Цитировать
<xsl:value-of select="document('uobject://1107.order_partner_id')/udata/property/value/item/@name" /> - атрибут name
<xsl:value-of select="document('uobject://1107.order_partner_id')/udata/property/value/item/@id" />  - атрибут id

P.S. niakriss: вывод значений справочника нужно, если вам необходимо получить все значения справочника, например тогда, когда мы делаем фильтр и хотим  вывести все поля какого-то справочника или т.п.
Название: Re:Вывод типа поля при document('uobject://
Отправлено: atach от 10 Ноября 2012, 12:11:49
Спасибо большое всем ....
Название: Re:Вывод типа поля при document('uobject://
Отправлено: atach от 14 Ноября 2012, 11:03:27
Извеняюсь конечно ... но 4 дня сидел ... с XSLT так и не смог разобраться ...
Структура не то что немного, сильно отличается tpls, а я уже к ней настролько прирос что не могу понять ...

Задача стоит простая: Я формирую печатную форму счёта. В заказе имеется ID пользователя к которому относится данный заказ. И я вытаюсь по этому ID вытащить данные этого пользователя.

Если в tpls всё было просто я вытягивал
%data getPropertyOfObject(%order_partner_id%, 'name')% и всё ...

То тут я даже не понимаю как мне в сам макрос подставить выборку из другого макроса:
Цитировать
<xsl:value-of select="document('uobject://1107.order_partner_id')/udata/property/value/item/@id" />
Как мне вместо 1107 поставить значение отработанного другого макроса?

я просто не могу поянть синтексис ... если кто то ткнёт к документацию ... тоже будут признателен ...
Название: Re:Вывод типа поля при document('uobject://
Отправлено: Rodogor от 14 Ноября 2012, 12:48:14
Вам необходимо воспользоваться функцией объединения строк, контактинацией. Функция concat.

К примеру, id пользователя хранится в какой-то переменной с name="user-id".

Для того, что бы получить данные этого объекта (пользователя) по uobject необходимо выполнить следующую конструкцию:

<xsl:value-of select="document(concat('uobject://',$user-id,'.order_partner_id'))"/> - конкретно этот код вернёт ерунду. После "document()" необходимо конкретизировать выбор, к примеру udata/page/name и т.п...

Поищите документацию про функцию concat.

Что касается документации в целом - как бы не хотелось мне этого говорить, но можно посмотреть документацию на сайте umi-cms. Я её нефига не понимал, но сейчас разобрался и она вроде как ничего. :) почитайте http://www.umi-cms.ru/files/umi_cms_quickstart_guide.pdf и http://www.umi-cms.ru/support/docs/xslt-umi-devbook/
Название: Re:Вывод типа поля при document('uobject://
Отправлено: niakriss от 15 Ноября 2012, 12:55:05
а мне кажется, что на этом сайте тоже много хорошего и удобно искать.. сейчас все время им пользуюсь...
http://dev.docs.umi-cms.ru
Название: Re:Вывод типа поля при document('uobject://
Отправлено: atach от 15 Ноября 2012, 18:32:40
всем большое спасибо!
Теперь хоть понятная сама работа с XSLT ... свою задачу выполнил ...
Название: Re:Вывод типа поля при document('uobject://
Отправлено: Axiomateria от 24 Июня 2013, 21:41:54
У меня наверное задачка ещё проще, то есть надо вывести одно из выбранных значений выпадающего списка, которое выбирается из справочника. Этот справочник с выпадающим списком состоит всего из трёх значений "Мини-отель", Частная гостиница", "Ведомственная гостиница".
Такой макрос конечно не работает <xsl:value-of select=".//property[@name = 'membership_of_hotel']/value" />
где "membership_of_hotel" это имя поля в типе данных..
Какой макрос посоветуете включить в шаблон, что бы при выборе администратором в админ/панеле из выпадающего списка  "Мини-отель" в результате на сайта в определённом месте появлялась именно эта надпись "Мини-отель" ?
Название: Re:Вывод типа поля при document('uobject://
Отправлено: admin от 27 Июня 2013, 16:22:08
см. тут http://umihelp.ru/forum/index.php/topic,1547.msg6254.html#msg6254