Вывод списка новстей на главной
Здравствуйте, помогите решить такую проблему.
Вывож на главной страницы список новстей вот по такому принципу:
<ul>
<li>
тут заголовок новости
</li>
<li>
</li>
</ul>
<div>Тут описание новости</div>
Переделал СписокНовстейНаГлавной вот в такой код
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<!-- СписокНовостейНаГлавной -->
<xsl:template match="/">
<xsl:apply-templates select="/document"/>
</xsl:template>
<xsl:template match="/document">
<!-- Выводим название информационной системы -->
<h2>
<a href="{blocks/url}" title="{blocks/name}"><xsl:value-of disable-output-escaping="yes" select="blocks/name"/></a>
</h2>
<!-- Отображение записи информационной системы -->
<xsl:if test="blocks/items/item[item_status=1]">
<ul class="tabs tabs1">
<xsl:apply-templates select="blocks/items/item[item_status=1]"/>
</ul>
</xsl:if>
<xsl:call-template name="for" select="blocks/items/item[item_status=1]" >
<xsl:with-param name="n" select="count(blocks/items/item)"/>
</xsl:call-template>
</xsl:template>
<!-- Шаблон вывода информационного элемента -->
<xsl:template match="item">
<!-- Название -->
<li class="t1">
<a title="{item_name}">
<xsl:value-of disable-output-escaping="yes" select="item_name"/>
<!-- Дата время -->
<p>
<xsl:value-of disable-output-escaping="yes" select="substring-before(item_date, '.')"/>
<xsl:variable name="month_year" select="substring-after(item_date, '.')"/>
<xsl:variable name="month" select="substring-before($month_year, '.')"/>
<xsl:choose>
<xsl:when test="$month = 1"> января </xsl:when>
<xsl:when test="$month = 2"> февраля </xsl:when>
<xsl:when test="$month = 3"> марта </xsl:when>
<xsl:when test="$month = 4"> апреля </xsl:when>
<xsl:when test="$month = 5"> мая </xsl:when>
<xsl:when test="$month = 6"> июня </xsl:when>
<xsl:when test="$month = 7"> июля </xsl:when>
<xsl:when test="$month = 8"> августа </xsl:when>
<xsl:when test="$month = 9"> сентября </xsl:when>
<xsl:when test="$month = 10"> октября </xsl:when>
<xsl:when test="$month = 11"> ноября </xsl:when>
<xsl:otherwise> декабря </xsl:otherwise>
</xsl:choose>
<xsl:value-of disable-output-escaping="yes" select="substring-after($month_year, '.')"/>г.
</p>
</a>
</li>
</xsl:template>
<xsl:template name="for" match="item" mode="item_description">
<xsl:param name="i" select="1"/>
<xsl:param name="n"/>
<!--<xsl:param name="item"/>-->
<xsl:if test="blocks/items/item[item_status=1]">
<div class="{concat('t',$i)}" >
<xsl:value-of disable-output-escaping="yes" select="blocks/items/item/item_description"/>
</div>
</xsl:if>
<xsl:if test="$n > $i">
<!-- Рекурсивный вызов шаблона -->
<xsl:call-template name="for">
<xsl:with-param name="i" select="$i + 1"/>
<xsl:with-param name="n" select="$n"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Вроде бы всё работает, но есть большое но. В описание во все сформировавшиеся в цикле div'ы (3 штуки) попадает описание из самой первой новости. И вот как сделать чтобы в каждом из трех дивов была своя новость уже второй день бьюсь.
Вывож на главной страницы список новстей вот по такому принципу:
<ul>
<li>
тут заголовок новости
</li>
<li>
</li>
</ul>
<div>Тут описание новости</div>
Переделал СписокНовстейНаГлавной вот в такой код
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<!-- СписокНовостейНаГлавной -->
<xsl:template match="/">
<xsl:apply-templates select="/document"/>
</xsl:template>
<xsl:template match="/document">
<!-- Выводим название информационной системы -->
<h2>
<a href="{blocks/url}" title="{blocks/name}"><xsl:value-of disable-output-escaping="yes" select="blocks/name"/></a>
</h2>
<!-- Отображение записи информационной системы -->
<xsl:if test="blocks/items/item[item_status=1]">
<ul class="tabs tabs1">
<xsl:apply-templates select="blocks/items/item[item_status=1]"/>
</ul>
</xsl:if>
<xsl:call-template name="for" select="blocks/items/item[item_status=1]" >
<xsl:with-param name="n" select="count(blocks/items/item)"/>
</xsl:call-template>
</xsl:template>
<!-- Шаблон вывода информационного элемента -->
<xsl:template match="item">
<!-- Название -->
<li class="t1">
<a title="{item_name}">
<xsl:value-of disable-output-escaping="yes" select="item_name"/>
<!-- Дата время -->
<p>
<xsl:value-of disable-output-escaping="yes" select="substring-before(item_date, '.')"/>
<xsl:variable name="month_year" select="substring-after(item_date, '.')"/>
<xsl:variable name="month" select="substring-before($month_year, '.')"/>
<xsl:choose>
<xsl:when test="$month = 1"> января </xsl:when>
<xsl:when test="$month = 2"> февраля </xsl:when>
<xsl:when test="$month = 3"> марта </xsl:when>
<xsl:when test="$month = 4"> апреля </xsl:when>
<xsl:when test="$month = 5"> мая </xsl:when>
<xsl:when test="$month = 6"> июня </xsl:when>
<xsl:when test="$month = 7"> июля </xsl:when>
<xsl:when test="$month = 8"> августа </xsl:when>
<xsl:when test="$month = 9"> сентября </xsl:when>
<xsl:when test="$month = 10"> октября </xsl:when>
<xsl:when test="$month = 11"> ноября </xsl:when>
<xsl:otherwise> декабря </xsl:otherwise>
</xsl:choose>
<xsl:value-of disable-output-escaping="yes" select="substring-after($month_year, '.')"/>г.
</p>
</a>
</li>
</xsl:template>
<xsl:template name="for" match="item" mode="item_description">
<xsl:param name="i" select="1"/>
<xsl:param name="n"/>
<!--<xsl:param name="item"/>-->
<xsl:if test="blocks/items/item[item_status=1]">
<div class="{concat('t',$i)}" >
<xsl:value-of disable-output-escaping="yes" select="blocks/items/item/item_description"/>
</div>
</xsl:if>
<xsl:if test="$n > $i">
<!-- Рекурсивный вызов шаблона -->
<xsl:call-template name="for">
<xsl:with-param name="i" select="$i + 1"/>
<xsl:with-param name="n" select="$n"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Вроде бы всё работает, но есть большое но. В описание во все сформировавшиеся в цикле div'ы (3 штуки) попадает описание из самой первой новости. И вот как сделать чтобы в каждом из трех дивов была своя новость уже второй день бьюсь.
а чем не устраивает структура:
<ul>
<li>Заголовок 1<div>Описание</div></li>
..........
<li>Заголовок 99<div>Описание 99</div></li>
</ul>
А дальше в css оформляем как угодно
<ul>
<li>Заголовок 1<div>Описание</div></li>
..........
<li>Заголовок 99<div>Описание 99</div></li>
</ul>
<xsl:template match="/document">
<!-- Отображение записи информационной системы -->
<ul><xsl:apply-templates select="blocks/items/item[item_status=1]"/></ul>
</xsl:template>
<!-- Шаблон вывода информационного элемента -->
<xsl:template match="blocks/items/item">
<li>
<a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/>
<span class="date"><xsl:value-of disable-output-escaping="yes" select="item_date"/></span>
<div><xsl:value-of disable-output-escaping="yes" select="item_description"/></div>
</a>
</li>
</xsl:template>
<!-- Отображение записи информационной системы -->
<ul><xsl:apply-templates select="blocks/items/item[item_status=1]"/></ul>
</xsl:template>
<!-- Шаблон вывода информационного элемента -->
<xsl:template match="blocks/items/item">
<li>
<a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/>
<span class="date"><xsl:value-of disable-output-escaping="yes" select="item_date"/></span>
<div><xsl:value-of disable-output-escaping="yes" select="item_description"/></div>
</a>
</li>
</xsl:template>
А дальше в css оформляем как угодно
Авторизация