Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Поле "Цена" в фильтре

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

Ответов: 9
Просмотров: 6064
Последний ответ 28 Апреля 2012, 06:02:17
от KTI
Поле "Набор изображений"

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

Ответов: 4
Просмотров: 2073
Последний ответ 20 Июня 2016, 14:52:05
от aghigay
Импорт нескольких изображений в поле Набор изображений

Автор webtrendРаздел Настройка системы и модулей

Ответов: 2
Просмотров: 1630
Последний ответ 12 Апреля 2017, 14:17:53
от webtrend
Подставление имени файла в поле "@type = 'file'" в форме обратной связи

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

Ответов: 1
Просмотров: 1191
Последний ответ 01 Января 2016, 06:39:09
от admin
Фиксированное верхнее поле меняющее в себе состав элементов при прокрутке

Автор AxiomateriaРаздел JS и AJAX

Ответов: 3
Просмотров: 2154
Последний ответ 14 Августа 2015, 14:20:07
от Axiomateria

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

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Проверка пустое поле или нет (empty)
« : 15 Декабря 2016, 20:13:28 »
Доброго времени суток.

Возникла проблема, мне надо чтобы блок <div class="cbp-ntcontent">...</div>, если поле content не заполнен, его не было.
Но проблема в том (наверное), что это поля подтягивается через usel.
Есть ли какой-нибудь аналог empty или условие можно сделать проще? (может я просто опять перемудривую)


Пробовала через if, но работает наоборот как-то, т.е. он делает нужный стиль, т.е. отключается активность, но при этом блок с пустым полем оставили стили активности, но текстовый блок не раскрывается...
	
    <xsl:template match="page" mode="accordion-content_full">
<li>
<h3 class="cbp-nttrigger">
<span>
<xsl:value-of select=".//property[@name='h1']/value"/>
</span>
</h3>
<xsl:if test=".//property[@name = 'content']/value">
<div class="cbp-ntcontent">
<div class="cbp-aside">
456
</div>

<div class="cbp-content">
<xsl:apply-templates select="document(concat('usel://block-content/142,147,160/', @id))/udata" mode="accordion_full"/>
</div>
</div>
</xsl:if>
        </li>
    </xsl:template>


Решила через переменную, choose и empty, но у меня выдает ошибку на функцию empty, что ее нет...
    <xsl:template match="page" mode="accordion-content_full">
<li>
<h3 class="cbp-nttrigger">
<span>
<xsl:value-of select=".//property[@name='h1']/value"/>
</span>
</h3>

<xsl:variable name="content_empty" select=".//property[@name = 'content']/value"/>
<!--<xsl:if test=".//property[@name = 'content']/value"></xsl:if>-->
<xsl:choose>
<xsl:when test="empty($content_empty)">

</xsl:when>
<xsl:otherwise>
<div class="cbp-ntcontent">
<div class="cbp-aside">
456
</div>

<div class="cbp-content">
<xsl:apply-templates select="document(concat('usel://block-content/142,147,160/', @id))/udata" mode="accordion_full"/>
</div>
</div>
</xsl:otherwise>
</xsl:choose>
        </li>
    </xsl:template>

<xsl:template match="udata" mode="accordion_full">
<xsl:apply-templates select="page" mode="accordion_full"/>
</xsl:template>

<xsl:template match="page" mode="accordion_full" >
<xsl:if test="@type-id='142'">
<div class="block-text">
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
</div>
</xsl:if>

<xsl:if test="@type-id='160'">
<div class="block-text visit_payment">
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
</div>
</xsl:if>

<xsl:if test="@type-id='147'">
<div class="methods">
<div class="block-text">
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
</div>

<ul class="cbp-ntsubaccordion">
<!--<xsl:apply-templates select="/" mode="accordion-content" /> -->
<xsl:apply-templates select="document(concat('usel://block-content-accordion/148/', @id))/udata" mode="accordion-content_block2_3"/>
</ul>

</div>
</xsl:if>

    </xsl:template>

Выдает такую ошибку, оставляет первый блок и цепляет к нему не активность, хотя поля заполнены
Warning: XSLTProcessor::transformToXml(): xmlXPathCompOpEval: function empty not found in /home/c/cv65275/ott/public_html/classes/system/subsystems/umiTemplaters/types/umiTemplaterXSLT.php on line 51

Спасибо

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re: Проверка пустое поле или нет (empty)
« Ответ #1 : 15 Декабря 2016, 22:20:30 »
<xsl:if test="not(.//property[@name = 'content'])">
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Проверка пустое поле или нет (empty)
« Ответ #2 : 16 Декабря 2016, 01:35:02 »
<xsl:if test="not(.//property[@name = 'content'])">

Этот вариант я тоже пробовала, но на него реакции нет никакой :(
Все остается как есть, как будто запроса нет...


Добавила комментарий
Вот ссылка, сейчас там стоит if без отрицания, но у первого пункта есть внутренние страницы с контентом, а он не активен...
При том у второго поле не только поле content пустое, но и подстраниц нет, из которых блоки с текстом формируются, но стили идут как активного... (но оба пункта не раскрываются...)

http://ott.cv65275.tmweb.ru/clinic/scientific-advisory-branch/specialized-centers/
« Последнее редактирование: 16 Декабря 2016, 01:43:28 от Sumrakrnd »