UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Sumrakrnd от 15 Декабря 2016, 20:13:28

Название: Проверка пустое поле или нет (empty)
Отправлено: Sumrakrnd от 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

Спасибо
Название: Re: Проверка пустое поле или нет (empty)
Отправлено: e.ioffe от 15 Декабря 2016, 22:20:30
<xsl:if test="not(.//property[@name = 'content'])">
Название: Re: Проверка пустое поле или нет (empty)
Отправлено: Sumrakrnd от 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/