Шрифт
Вывод элементов подгруппы, находясь в родительской группе
Play

Вывод элементов подгруппы, находясь в родительской группе

Доброго дня. Знаю что вопрос обсужден, но не смог добиться работы. Для Информационной системы Новости (например). Структура такая (информационная система): Группа РОГА (ссылка domen.ru/roga) _ _ _ Инф. Элемент ЦВЕТА РОГА (ссылка domen.ru/roga/cveta/) _ _ _ Группа ВИДЫ (ссылка domen.ru/roga/vidy/) _ _ _ _ _ Инф. Элемент ОДИНАРНЫЕ (ссылка domen.ru/roga/vidy/odinar/) _ _ _ _ _ Инф. Элемент ДВОЙНЫЕ (ссылка domen.ru/roga/vidy/duble/) ----------------------- Так вот, нужно, находясь на странице (domen.ru/roga) выдать листинг списка элементов раздела ВИДЫ. (похоже на карту сайта, но с нужного места + чтобы было доступно описание (анонс) ) При этом отобразить так: Вы находитесь в РОГА. - _ -(описание рогов обычный текст в 3 строки) _ _ _ Подраздел ВИДЫ : _ _ _ _ _ _ Название Элемента, описание. ОДИНАРНЫЕ, тут описание одинарных. _ _ _ _ _ _ Название Элемента, описание. ДВОЙНЫЕ, тут описание двойных. _ _ _ Подраздел ВИДЫ2 : _ _ _ _ _ _ Название Элемента, описание. ОДИНАРНЫЕ, тут описание одинарных. _ _ _ _ _ _ Название Элемента, описание. ДВОЙНЫЕ, тут описание двойных.

(надеюсь что описал правильно. сам новичек.)

Нужно ли прописывать какой-то код для PHP ? (Если нужно то куда добавлять чтобы не писать его в Макет Шаблона страницы?) Сам XML таков (ничего не добовлял левого. ):

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xsl:stylesheet> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:hostcms="http://www.hostcms.ru/" exclude-result-prefixes="hostcms"> <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="/informationsystem"/> </xsl:template>

<!-- Получаем ID родительской группы и записываем в переменную $group --> <xsl:variable name="group" select="group"/>

<!-- Если в находимся корне - выводим название информационной системы --> <xsl:if test="group = 0"> <h1> <xsl:value-of disable-output-escaping="yes" select="name"/> </h1>

<!-- Описание выводится при отсутствии фильтрации по тэгам --> <xsl:if test="count(tag) = 0"> <xsl:value-of disable-output-escaping="yes" select="description"/> </xsl:if> </xsl:if>

<!-- Если в находимся в группе - выводим название группы --> <xsl:if test="group != 0"> <h1> <xsl:value-of disable-output-escaping="yes" select=".//informationsystem_group[@id=$group]/name"/> </h1>

<!-- Описание выводим только на первой странице --> <xsl:if test="page = 0"> <xsl:value-of disable-output-escaping="yes" select=".//informationsystem_group[@id=$group]/description"/> </xsl:if>

<!-- Отображение подгрупп данной группы, только если подгруппы есть и не идет фильтра по меткам --> <xsl:if test="count(tag) = 0 and count(.//informationsystem_group[parent_id=$group]) &gt; 0"> <ul> <xsl:apply-templates select=".//informationsystem_group[parent_id=$group]" mode="groups"/> </ul> </xsl:if>

<!-- Отображение записи информационной системы --> <ul > <xsl:apply-templates select="informationsystem_item[active=1]"/> </ul>

<!-- Строка ссылок на другие страницы информационной системы --> <xsl:if test="ОтображатьСсылкиНаСледующиеСтраницы=1"> <div > <!-- Ссылка, для которой дописываются суффиксы page-XX/ --> <xsl:variable name="link"> <xsl:value-of select="/informationsystem/url"/> <xsl:if test="$group != 0"> <xsl:value-of select="/informationsystem//informationsystem_group[@id = $group]/url"/> </xsl:if> </xsl:variable>

<xsl:if test="count(informationsystem_group_properties) and group != 0"> <div style="margin: 10px 0px;"> <h2>Атрибуты группы инфоэлементов</h2>

<xsl:if test="count(group[@id = //group]/property_value[parent_id = 0])"> <table border="0"> <xsl:apply-templates select="group[@id = //group]/property_value[parent_id = 0]"/> </table> </xsl:if>

<xsl:apply-templates select="informationsystem_group_properties"/> </div> </xsl:if>

<!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента --> <xsl:template match="informationsystem_group" mode="breadCrumbs"> <xsl:variable name="parent_id" select="parent_id"/>

<xsl:apply-templates select="//informationsystem_group[@id=$parent_id]" mode="breadCrumbs"/>

<!-- Шаблон выводит группы свойств для группы инфосистемы --> <xsl:template match="informationsystem_group_properties">

<xsl:if test="count(//informationsystem_group[@id = //group]/property_value[parent_id = $dir_id])"> <table border="0"> <xsl:apply-templates select="//informationsystem_group[@id = //group]/property_value[parent_id = $dir_id]"/> </table> </xsl:if>

<xsl:if test="count(informationsystem_group_properties)"> <blockquote> <xsl:apply-templates select="informationsystem_group_properties"/> </blockquote> </xsl:if> </xsl:template>

<xsl:variable name="n" select="$items_count div $limit"/>

<!-- Заносим в переменную $group идентификатор текущей группы --> <xsl:variable name="group" select="/informationsystem/group"/>

<!-- Считаем количество выводимых ссылок перед текущим элементом --> <xsl:variable name="pre_count_page"> <xsl:choose> <xsl:when test="$page &gt; ($n - (round($visible_pages div 2) - 1))"> <xsl:value-of select="$visible_pages - ($n - $page)"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="round($visible_pages div 2) - 1"/> </xsl:otherwise> </xsl:choose> </xsl:variable>

<!-- Считаем количество выводимых ссылок после текущего элемента --> <xsl:variable name="post_count_page"> <xsl:choose> <xsl:when test="0 &gt; $page - (round($visible_pages div 2) - 1)"> <xsl:value-of select="$visible_pages - $page"/> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="round($visible_pages div 2) = ($visible_pages div 2)"> <xsl:value-of select="$visible_pages div 2"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="round($visible_pages div 2) - 1"/> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:variable>

<xsl:if test="$items_count &gt; $limit and $n &gt; $i">

<!-- Определяем адрес тэга --> <xsl:variable name="tag_link"> <xsl:choose> <!-- Если не нулевой уровень --> <xsl:when test="count(/informationsystem/tag) != 0">tag/<xsl:value-of select="/informationsystem/tag/urlencode"/>/</xsl:when> <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов --> <xsl:otherwise></xsl:otherwise> </xsl:choose> </xsl:variable>

<!-- Определяем адрес ссылки --> <xsl:variable name="number_link"> <xsl:choose> <!-- Если не нулевой уровень --> <xsl:when test="$i != 0"> <xsl:value-of select="$prefix"/>-<xsl:value-of select="$i + 1"/>/</xsl:when> <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов --> <xsl:otherwise></xsl:otherwise> </xsl:choose> </xsl:variable>

<!-- Ставим ссылку на страницу--> <xsl:if test="$i != $page"> <!-- Выводим ссылку на первую страницу --> <xsl:if test="$page - $pre_count_page &gt; 0 and $i = 0"> <a href="" style="text-decoration: none;">&#x2190;</a> </xsl:if>

<!-- Ссылка на предыдущую страницу для Ctrl + влево --> <xsl:if test="$page != 0 and $i = $page"> <xsl:variable name="prev_number_link"> <xsl:choose> <!-- Если не нулевой уровень --> <xsl:when test="($page) != 0">page-<xsl:value-of select="$i"/>/</xsl:when> <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов --> <xsl:otherwise></xsl:otherwise> </xsl:choose> </xsl:variable>

<!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! --> <xsl:call-template name="for"> <xsl:with-param name="i" select="$i + 1"/> <xsl:with-param name="prefix" select="$prefix"/> <xsl:with-param name="link" select="$link"/> <xsl:with-param name="limit" select="$limit"/> <xsl:with-param name="page" select="$page"/> <xsl:with-param name="items_count" select="$items_count"/> <xsl:with-param name="visible_pages" select="$visible_pages"/> </xsl:call-template> </xsl:if> </xsl:template>

<!-- Склонение после числительных --> <xsl:template name="declension">

<!-- Именительный падеж --> <xsl:variable name="nominative"> <xsl:text>комментарий</xsl:text> </xsl:variable>

<!-- Родительный падеж, единственное число --> <xsl:variable name="genitive_singular"> <xsl:text>комментария</xsl:text> </xsl:variable>

<xsl:variable name="genitive_plural"> <xsl:text>комментариев</xsl:text> </xsl:variable>

<xsl:variable name="last_digit"> <xsl:value-of select="$number mod 10"/> </xsl:variable>

<xsl:variable name="last_two_digits"> <xsl:value-of select="$number mod 100"/> </xsl:variable>

<xsl:choose> <xsl:when test="$last_digit = 1 and $last_two_digits != 11"> <xsl:value-of select="$nominative"/> </xsl:when> <xsl:when test="$last_digit = 2 and $last_two_digits != 12 or $last_digit = 3 and $last_two_digits != 13 or $last_digit = 4 and $last_two_digits != 14"> <xsl:value-of select="$genitive_singular"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$genitive_plural"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>

📎📎📎📎📎📎📎📎📎📎