Задать вопрос

UMI.CMS — добавление выбора опций в шаблон xsl — пустая страница?

Добрый день, вопрос по UMI.CMS.

Подскажите, пожалуйста, при добавлении вывода доп. опций в шаблон товара, выходит просто белая страница. Добавляю в object-view.xsl код, отвечающий за вывод дополнительных параметров товара как размер, цвет, количество, выходит пустая страница, сам код параметров из файла popup-add-options.xsl.

Основная задача состоит в том, чтобы вывести список параметров товара не в выпадающем окне при нажатии на кнопку Добавить в корзину, а на самой странице подробного описания товара с фото. Где после выбора, например, размера, покупатель добавляет товар в корзину.

Работаю с UMI впервые, документацию изучаю, но вот с этим вопросом возникли сложности. Дело в том, что доп. параметры выводятся в модальном окне, пытаюсь вставить код в шаблон и здесь все начинается :). Ставлю примерные варианты типа - работает без ошибок, беру код для вывода опциональных параметров:

<xsl:template match="/">
    <form class="options" action="/emarket/basket/put/element/{udata/page/@id}/">
      <xsl:apply-templates select="//group[@name = 'catalog_option_props']/property" />
      <input type="submit" class="button" value="Добавить"/>
    </form>
  </xsl:template>

  <xsl:template match="property">
    <table>
      <thead>
        <tr>
          <th colspan="3" align="left">
            <xsl:value-of select="concat(title, ':')" />
          </th>
        </tr>
      </thead>
      <tbody>
        <xsl:apply-templates select="value/option" />
      </tbody>
    </table>
  </xsl:template>

  <xsl:template match="option">
    <tr class="param_{object/@id}">
      <td style="width:20px;">
        <input type="radio" name="options[{../../@name}]" value="{object/@id}" id="{generate-id()}">
          <xsl:if test="position() = 1">
            <xsl:attribute name="checked">
              <xsl:text>checked</xsl:text>
            </xsl:attribute>
          </xsl:if>
        </input>
      </td>
      <td>
        <label for="{generate-id()}">
          <xsl:value-of select="object/@name" />
        </label>
      </td>
      <td align="right">
        <label for="{generate-id()}">
          <p class="price"><span class="sum"><xsl:value-of select="@float" /> </span><span class="suffix">p</span></p>

          <div class="add_amount">
            <img class="minus" src="/templates/public/images/minus_amount.png"/>
            <input id="amount_{@id}" class="amount" type="text" name="amount" value="1" maxlength="3"/>
            <img class="plus" src="/templates/public/images/plus_amoun.png" />
          </div>
        </label>
      </td>
    </tr>
  </xsl:template>


Большое спасибо за подсказки!
  • Вопрос задан
  • 920 просмотров
Подписаться 1 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@ilyarsoftware
Причина пустая страницы при работе с XSLT-шаблонизатором может говорить о наличии в шаблоне ошибки. Включите режим отображения ошибок (config.ini):

[debug]
enabled = "1"
show-backtrace = "1"


Вместо пустой страницы, будут отображаться сообщения вида:

Warning: DOMDocument::load(): Specification mandate value for attribute checked in /umi/xsltTpls/default.xsl


Из этого сообщения буде стразу понятно где проблема.

Еще может быть полезен шаблон debug.xsl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <!-- debug tools -->
  <xsl:template match="*" mode="debug">
    <textarea>
      <xsl:copy-of select="*"/>
    </textarea>
  </xsl:template>

</xsl:stylesheet>


Его надо подключить в ваши шаблоны <xsl:include href="debug.xsl"/> и использовать в любом xsl:apply-templates добавляя mode="debug" например так:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="property">
    <xsl:apply-templates select="value/option" mode="debug" />
  </xsl:template>

</xsl:stylesheet>


В результате будет видно содержание XML-дерева для которой применяется шаблон, это может быть полезным для правильного построения XPath используемый select или match шаблонов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы