Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Добавление уже имеющихся объектов каталога в другие категории через дополнительн

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

Ответов: 14
Просмотров: 5308
Последний ответ 09 Июня 2015, 12:43:53
от admin
Вывод в фильтрах по каталогу значение справочника для конкретной категории

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

Ответов: 1
Просмотров: 1289
Последний ответ 29 Мая 2015, 12:51:38
от admin
Как вывести в карточке товара название категории и ссылку на нее

Автор koroganРаздел Шаблоны TPL

Ответов: 1
Просмотров: 3281
Последний ответ 20 Июня 2013, 08:21:10
от admin
запрос SQL, как выбрать товары в заданной категории

Автор KTIРаздел Макросы UMI.CMS

Ответов: 1
Просмотров: 5459
Последний ответ 23 Апреля 2012, 15:33:34
от KTI
Определить виртуальную копию категории?

Автор muldyРаздел Custom макросы

Ответов: 1
Просмотров: 1876
Последний ответ 30 Октября 2013, 22:15:08
от admin

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

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Беспл. доставка для определенной категории
« Ответ #30 : 18 Октября 2016, 22:00:55 »
В продолжение предыдущей задачи хочу вывести рекламный баннер через xsl:if (category-view.xsl), тоже не могу. Баннер хочу вывести в самом разделе "Диктофоны", и в трёх его подразделах. В разделе и подразделах вложенность /result/page. Для раздела пробовал через page/@id='5106', а для подразделов через page/@parentId='5106', ничего не смог вывести в итоге нигде, в т.ч. и с абсолютным "адресом" (/result/page/@id='5106'). Почему?
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Беспл. доставка для определенной категории
« Ответ #31 : 18 Октября 2016, 23:01:59 »
XML раздела Диктофоны:
<result module="catalog" method="category" pageId="5106">
   <parents>...</parents>
   <page id='5106' parentId='36' type-id='77'>
       ...
   </page>
</result>
XML одного из подразделов - Диктофоны L:
<result module="catalog" method="category" pageId="5109">
   <parents>...</parents>
   <page id='5109' parentId='5106' type-id='77'>
       ...
   </page>
</result>
Вот для раздела и подраздела выше не могу сделать и проверку, чтобы вывести в них баннер, о чём писал в предыдущем своём сообщении.

Вызов хочу сделать в category-view.xsl внутри вот этого template:
<xsl:template match="udata[@method = 'getObjectsList'][total]">
   ... //вот здесь, чтобы в самом начале страницы выводился баннер
</xsl:template>
« Последнее редактирование: 19 Октября 2016, 09:44:59 от sam »
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Беспл. доставка для определенной категории
« Ответ #32 : 19 Октября 2016, 18:49:46 »
Я всё же добился своего, и мне удалось сделать так, чтобы только в разделе "Диктофоны" и в трёх его подразделах выводился баннер. В других разделах и подразделах этого баннера нет, как я и хотел сделать. Рабочий код проверки выглядит так:
<xsl:if test="document(concat('upage://', $document-page-id))/udata/page/@id = '5106' or document(concat('upage://', $document-page-id))/udata/page/@parentId = '5106'">
Здесь баннер // если раздел каталога равен "Диктофоны" или родитель равен раздел "Диктофоны"
</xsl:if>
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Беспл. доставка для определенной категории
« Ответ #33 : 19 Октября 2016, 19:11:00 »
Гыгыгы

условие
document(concat('upage://', $document-page-id))/udata/page/@id = '5106'
равносильно условию
$document-page-id = '5106'

А второе условие прямо повторяет то, что написано мною выше, только делает дополнительный запрос в ЮМИ

Мой блог http://umicms.me

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Беспл. доставка для определенной категории
« Ответ #34 : 20 Октября 2016, 10:21:23 »
После критики со стороны aghigay, я решил обновить свой код проверки. Теперь он выглядит так:
<xsl:variable name="document-page-parentId" select="document(concat('upage://', $document-page-id))/udata/page/@parentId"/>
<xsl:if test="$document-page-id = '5106' or $document-page-parentId = '5106'">
Здесь баннер // если раздел каталога равен "Диктофоны" или родитель равен раздел "Диктофоны"
</xsl:if>
aghigay, спасибо за помощь!

P.S. Для меня так и остаётся загадкой, почему я так и не смог достучаться до нужных мне id через /result/page/@id='5106' or /result/parents/page/@id='5106'?!...
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re: Беспл. доставка для определенной категории
« Ответ #35 : 20 Октября 2016, 23:56:09 »
Вы не смогли достучаться до /result/page/@id='5106' , потому что вы работали в шаблоне
<xsl:template match="udata[@method = 'getObjectsList'][total]">
   ... //вот здесь, чтобы в самом начале страницы выводился баннер
</xsl:template>
Этот шаблон обрабатывал xml, который вернул вызов макроса udata://catalog/getObjectsList
И в этом xml отсутствуют теги
<result module="catalog" method="category" pageId="5106">
   <parents>...</parents>
   <page id='5106' parentId='36' type-id='77'>
       ...
   </page>
</result>

Поэтому, работая в шаблонах, которые обрабатывают xml появившиеся в результате вызовов каких-то макросов ("udata://...") для доступа к данным из изначального xml (с информацией о текущей страницы <result>...</result>) используют глобальные переменные.
Например $document-page-id (определяется в файле ~/xslt/default.xsl). В этом же файле можно определить глобальную переменную со всеми родителями
<xsl:variable name="parents" select="result/parents" />
В итоге, ваш шаблон будет выглядеть так (без вызова variable $document-page-parentId, так как при этом вы делаете лишний upage запрос :
<xsl:if test="$document-page-id = '5106' or $parents/page/@id = '5106'">
Здесь баннер // если раздел каталога равен "Диктофоны" или родитель равен раздел "Диктофоны"
</xsl:if>

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Беспл. доставка для определенной категории
« Ответ #36 : 21 Октября 2016, 10:32:17 »
admin, безумно не хватало Вашей помощи! Спасибо, что откликнулись!
Сделал так - в файл ~/xslt/default.xsl добавил, почти, как Вы написали:
<xsl:variable name="parents-page-id" select="result/parents/page/@id" />
И после этого, уже отредактировал код в ~xslt/modules/catalog/category-view.xsl:
<xsl:if test="$document-page-id = '5106' or $parents-page-id = '5106'">
Здесь баннер // если раздел каталога равен "Диктофоны" или родитель равен раздел "Диктофоны"
</xsl:if>
Благодарю!
« Последнее редактирование: 21 Октября 2016, 16:06:39 от sam »
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.