UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: ragivort от 05 Марта 2016, 14:08:00

Название: Проверка related_block
Отправлено: ragivort от 05 Марта 2016, 14:08:00
Приветствую, подскажите, как сделать.
Есть новости. У каждой новости внизу есть блок читайте так же. Он выводит другие новости из этой рубрики. Но если новость не состоит в рубрике, то выводит вот что
file://news/#related_block_empty

Как сделать, чтобы не выводилось file://news/#related_block_empty если нет рубрики у новости?

Спасибо.
Название: Re: Проверка related_block
Отправлено: aghigay от 05 Марта 2016, 15:49:18
Начнем с главного: на какой технологии сделан шаблон: tpl, xslt, php?
Название: Re: Проверка related_block
Отправлено: ragivort от 05 Марта 2016, 15:53:10
xslt

вывод такой

        <xsl:if test="$parent-id=32 and not($page-id=483)">
            <xsl:variable name="rubric_name" select=".//property[@name='subjects']/value/item/@id"></xsl:variable>
            <div class="other_articles">
                <h2>Так же читайте в рубрике</h2>
                <xsl:apply-templates select="document(concat('udata://news/related_links/',page/@id,'//20'))/udata"/>
            </div>
        </xsl:if>
Название: Re: Проверка related_block
Отправлено: aghigay от 05 Марта 2016, 15:57:46
Так, а какой результат возвращает document(concat('udata://news/related_links/',page/@id,'//20'))/udata ?
Название: Re: Проверка related_block
Отправлено: aghigay от 05 Марта 2016, 16:12:55
Чтобы долго не тратить время сразу скажу:
Макрос news related_links() (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/novosti/news_related_links/#xslt-templating) возвращается результат в виде:
udata/items/item или udata без item внутри

Этот результат обрабатывается кем-то. Предположительно шаблоном \templates\ШАБЛОН САЙТА\xslt\modules\news\news-item.xsl в блоках

	<xsl:template match="udata[@method = 'related_links']" />

<xsl:template match="udata[@method = 'related_links' and count(items/item)]">
<h4>
<xsl:text>&news-realted;</xsl:text>
</h4>

<ul>
<xsl:apply-templates select="items/item" mode="related" />
</ul>
</xsl:template>

<xsl:template match="item" mode="related">
<li umi:element-id="{@id}">
<a href="{@link}" umi:field-name="news">
<xsl:value-of select="." />
</a>
</li>
</xsl:template>

где шаблон
	<xsl:template match="udata[@method = 'related_links']" />
отвечает как раз за состояние когда записей нет, а остальная часть - за состояние когда записи есть.

По крайней мере это кусок из стандартного demodizzy. В вашем шаблоне может быть что-то иначе.