Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

atach

  • ***
  • 165
  • +6/-0
    • Просмотр профиля
Вывод типа поля при document('uobject://
« : 08 Ноября 2012, 14:02:57 »
Подскажите, все проекты делаю на tpls, сейчас нужно работать со счетами, а они все в xslt ...

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

Выдает значения, только если тип полей "строка", а у меня тип выводимого поля "выпадающий список" - ничего не выводит.

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Вывод типа поля при document('uobject://
« Ответ #1 : 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


*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Вывод типа поля при document('uobject://
« Ответ #2 : 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/

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Вывод типа поля при document('uobject://
« Ответ #3 : 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: вывод значений справочника нужно, если вам необходимо получить все значения справочника, например тогда, когда мы делаем фильтр и хотим  вывести все поля какого-то справочника или т.п.

*

atach

  • ***
  • 165
  • +6/-0
    • Просмотр профиля
Re:Вывод типа поля при document('uobject://
« Ответ #4 : 10 Ноября 2012, 12:11:49 »
Спасибо большое всем ....

*

atach

  • ***
  • 165
  • +6/-0
    • Просмотр профиля
Re:Вывод типа поля при document('uobject://
« Ответ #5 : 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 поставить значение отработанного другого макроса?

я просто не могу поянть синтексис ... если кто то ткнёт к документацию ... тоже будут признателен ...

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Вывод типа поля при document('uobject://
« Ответ #6 : 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/

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Вывод типа поля при document('uobject://
« Ответ #7 : 15 Ноября 2012, 12:55:05 »
а мне кажется, что на этом сайте тоже много хорошего и удобно искать.. сейчас все время им пользуюсь...
http://dev.docs.umi-cms.ru

*

atach

  • ***
  • 165
  • +6/-0
    • Просмотр профиля
Re:Вывод типа поля при document('uobject://
« Ответ #8 : 15 Ноября 2012, 18:32:40 »
всем большое спасибо!
Теперь хоть понятная сама работа с XSLT ... свою задачу выполнил ...

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Вывод типа поля при document('uobject://
« Ответ #9 : 24 Июня 2013, 21:41:54 »
У меня наверное задачка ещё проще, то есть надо вывести одно из выбранных значений выпадающего списка, которое выбирается из справочника. Этот справочник с выпадающим списком состоит всего из трёх значений "Мини-отель", Частная гостиница", "Ведомственная гостиница".
Такой макрос конечно не работает <xsl:value-of select=".//property[@name = 'membership_of_hotel']/value" />
где "membership_of_hotel" это имя поля в типе данных..
Какой макрос посоветуете включить в шаблон, что бы при выборе администратором в админ/панеле из выпадающего списка  "Мини-отель" в результате на сайта в определённом месте появлялась именно эта надпись "Мини-отель" ?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля