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

Автор ByteРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 1941
Последний ответ 22 Апреля 2013, 17:37:22
от admin

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

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
UPAGE
« : 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"/>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:UPAGE
« Ответ #1 : 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"/>

если там есть ошибка надо исправить

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Re:UPAGE
« Ответ #2 : 07 Мая 2011, 18:10:17 »
а КАК подставить ALT-NAME страницы, зная ее id, в запрос.

---блин, все обходил..никак не допру
« Последнее редактирование: 08 Мая 2011, 00:48:27 от alex »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:UPAGE
« Ответ #3 : 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"/>

*

alex

  • **
  • 59
  • +0/-0
    • Просмотр профиля
    • Сергеев Александр Сергеевич
Re:UPAGE
« Ответ #4 : 08 Мая 2011, 20:59:03 »
Спасибо!

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:UPAGE
« Ответ #5 : 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"/>

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:UPAGE
« Ответ #6 : 14 Октября 2014, 14:54:40 »
нельзя получить ссылку какой-то тсраницы по типу данных страницы, хотя бы потому, что таких страниц может быть много.

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

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:UPAGE
« Ответ #7 : 14 Октября 2014, 15:06:07 »
нельзя получить ссылку какой-то тсраницы по типу данных страницы, хотя бы потому, что таких страниц может быть много.

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

Или это в принципе работы макроса нельзя, то есть без кастома по любому не обойтись?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:UPAGE
« Ответ #8 : 14 Октября 2014, 15:46:24 »
дума не обойтись, так как не помню что у umi был макрос, который возвращает информацию о страницах определенного типа данных. Есть конечно что-то вроде catalog getObjectList(), который вернет все страницы типа "товар", но думаю это не то, что вам надо.