UMIhelp

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

Название: UPAGE
Отправлено: alex от 07 Мая 2011, 00:04:57
<xsl:variable name="links" select="document('upage://$document-page-id')/udata/page/@link"/>
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @links))//udata/items" mode="photoalbum"/>
брал из одного вашего поста, где объясняли мне что-то похожее...@links) сам прописал...НЕ ПАШЕТ((((

Вобщем мне нужно вставить ССЫЛКУ ДАННОЙ СТРАНИЦЫ в строку шаблона.
Т.Е. У меня альбом называется 1в1 как страница (страница catalog/page и альбом называется page)..
alt-name
Можно наверное через USEL,но вы так и не объяснили как мне, зная ID страницы (upage/97 ,например) получить ее ALT-NAME или ссылку??
<page id="97" parentId="89" link="/catalog/page/" is-active="1" object-id="544" type-id="45" update-time="1304691399" alt-name="page">

Или наверное както можно через @параметр или $параметр...

Вобщем как мне получить внутри запроса в альбом ссылку текущей страницы..просто вставить значение в запрос?
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @links))//udata/items" mode="photoalbum"/>
Название: Re:UPAGE
Отправлено: admin от 07 Мая 2011, 17:53:19
))начнем по порядку, во первых если вы хотите использовать переменную, то будьте внимательны, переменные используется после того как они определны в виде $имя_переменной. В то время как @имя_свойства выводит вам атрибут данного узла, то есть если у вас текущий узел

<page id="97" parentId="89" link="/catalog/page/" is-active="1" object-id="544" type-id="45" update-time="1304691399" alt-name="page">, то использование @link выведет значение атрибута links, то есть "/catalog/page/"

поэтому использовав такую строчку
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @links))//udata/items" mode="photoalbum"/>

вы и к атрибуту узла не обратитесь, так как он имеет имя link, а не links и к переменной не обратитесь, так как вызов переменной нужно начинать с символа $


p.s. Напомните в какой теме я писал об этом
<xsl:variable name="links" select="document('upage://$document-page-id')/udata/page/@link"/>
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', @links))//udata/items" mode="photoalbum"/>

если там есть ошибка надо исправить
Название: Re:UPAGE
Отправлено: alex от 07 Мая 2011, 18:10:17
а КАК подставить ALT-NAME страницы, зная ее id, в запрос.

---блин, все обходил..никак не допру
Название: Re:UPAGE
Отправлено: admin от 08 Мая 2011, 20:52:13
чтобы получить alt-name посмотрим где она видна.

предположим что у нас страница с page_id=5

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

http://test.umihelp.ru/upage/5

в шаблоне получить значение атрибута alt-name можно так
<xsl:variable name="links" select="document('upage://5')/udata/page/@alt-name"/>
Название: Re:UPAGE
Отправлено: alex от 08 Мая 2011, 20:59:03
Спасибо!
Название: Re:UPAGE
Отправлено: Axiomateria от 14 Октября 2014, 14:24:32
<xsl:variable name="links" select="document('upage://5')/udata/page/@alt-name"/>

А как создать переменную, если надо не @id, а @type-id указать, который, например "11"
?
<xsl:variable name="links" select="document('upage://11')/udata/page/@alt-name"/>
Название: Re:UPAGE
Отправлено: admin от 14 Октября 2014, 14:54:40
нельзя получить ссылку какой-то тсраницы по типу данных страницы, хотя бы потому, что таких страниц может быть много.

Вы можете написать макрос, который по типу данных получит список страниц, взять первую страницу и вернуть её ссылку.
Название: Re:UPAGE
Отправлено: Axiomateria от 14 Октября 2014, 15:06:07
нельзя получить ссылку какой-то тсраницы по типу данных страницы, хотя бы потому, что таких страниц может быть много.

А вот у меня как раз такой случай, что именно и надо получить ссылки всех страниц, по принадлежности их к одному типу данных.

Или это в принципе работы макроса нельзя, то есть без кастома по любому не обойтись?
Название: Re:UPAGE
Отправлено: admin от 14 Октября 2014, 15:46:24
дума не обойтись, так как не помню что у umi был макрос, который возвращает информацию о страницах определенного типа данных. Есть конечно что-то вроде catalog getObjectList(), который вернет все страницы типа "товар", но думаю это не то, что вам надо.