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

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

*

manadsgn

  • *
  • 30
  • +0/-0
    • Просмотр профиля
Не могу разобраться, как к левому меню каталога добавить заголовок "Каталог товаров". Делаю по аналогии с блоком новостей справа:

<xsl:variable name="category-name" select="document(concat('upage://', category_id))/udata/page/name" />

   <h2 umi:element-id="{category_id}" umi:field-name="name">
               <xsl:value-of select="$category-name" />
   </h2>

но выводится название текущей страницы

Если вводить заголовок вручную, то страница перестает отображаться вообще.
Я понимаю, что мне нужно как-то прописать путь вместо "udata/page/name"  к странице каталога, но как это сделать?

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
1. если вы вводите заголовок вручную какой у вас получается код? (так как этот-то вариант должен был первым сработать как самый простой)

А также включите режим debug (http://help-dev.umi-cms.ru/part.Config.debug.html) и покажите что пишет ситема при написании заголовка вручную

2. если вы хотите динамически подставлять заголовок то посмотрите с каким кодом вы работаете и откуда пытаетесь вытянуть category-id
Цитировать
<xsl:variable name="category-name" select="document(concat('upage://', category_id))/udata/page/name" />

судя по вашему коду, вы рассчитываете что у узла <udata> есть узел <category_id> содержащий нужный вам id, но при использовании макроса getCategoryList
эта информация содержится как атрибут @category-id узла <udata>
<udata category-id="4015" module="catalog" method="getCategoryList" generation-time="0.023509">

в итоге как минимум есть ошибка при создании переменной, может и еще что-то но сразу на глаз не видно, попробуйте вот так
<xsl:variable name="category-name" select="document(concat('upage://', @category-id))/udata/page/name" />

   <h2 umi:element-id="{@category-id}" umi:field-name="name">
               <xsl:value-of select="$category-name" />
   </h2>


*

manadsgn

  • *
  • 30
  • +0/-0
    • Просмотр профиля
Если заголовок ввожу вручную, код такой:

   <div class="left">
             <h2>Каталог товаров</h2>
             <div class="left_catalog">
                <xsl:apply-templates select="document('udata://catalog/getCategoryList/void/shop/')" mode="left-column" />
                   </div>   

Здесь ошибка, как я понимаю, в том, что текст написан напрямую, а нужно его задавать через какую-то переменную, но я пока в XSLT полный ноль.
Debug ничего не выдает, появляется просто пустая страница.

Попробовала Ваш вариант кода, вместо заголовка "Каталог товаров", появляется заголовок "Главная" на всех страницах..

Спасибо за помощь!

*

admin

  • *****
  • 2419
  • +172/-1
    • Просмотр профиля
то есть
 <div class="left">
             <h2>Каталог товаров</h2>
             <div class="left_catalog">
                <xsl:apply-templates select="document('udata://catalog/getCategoryList/void/shop/')" mode="left-column" />
                   </div>   
белый экран
 <div class="left">

             <div class="left_catalog">
                <xsl:apply-templates select="document('udata://catalog/getCategoryList/void/shop/')" mode="left-column" />
                   </div>   
сайт отображается?

проверь еще кодировку файла в котором находиться эта запись, должна быть utf-8

насчет того что динамика не выводит что надо, приложи сюда файл /layout/default.xsl и файл в котором шаблоны для левой колонки

*

manadsgn

  • *
  • 30
  • +0/-0
    • Просмотр профиля
Все получилось, спасибо! Проблема была в кодировке.