XSL

#
XSL
Подскажите шаблон
Ситуация следующая, есть ИС с доп. свойством "Отображать на главной (main_display)
Необходимо что бы на главной странице выводились только те элементы, где main_display=1
#
Re: XSL
Пока шаблон выглядит так:
<?xml version="1.0" encoding="windows-1251"?>
<!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="Windows-1251" 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">

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

    <!-- Отображение записи информационной системы -->
    
    <xsl:apply-templates select="blocks/items/item[item_status=1]"/>
        
    <xsl:if test="ОтображатьСсылкуНаАрхив=1">
         <div id="allnews" style="text-align:center"><a href="{blocks/url}"><img src="/images/allnews.gif" alt="button" /></a></div>
   </xsl:if>

</xsl:template>


   <!-- Шаблон вывода информационного элемента -->
<xsl:template match="blocks/items/item">
<xsl:if test="item_propertys/item_property/main_display=1">

<div class="briefmat">
    <table border="0" cellpadding="0" cellspacing="0" class="titlebrief">
        <tr>
            <td class="img" valign="top"><a href="{item_path}"><img src="/images/brieftitle.gif" alt="doc" /></a></td>
            <td class="titlebrief"><h2><a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/></a></h2></td>
        </tr>
    </table>
    <table border="0" cellpadding="0" cellspacing="0" class="date">
        <tr>
            <td class="date"><xsl:value-of disable-output-escaping="yes" select="item_datetime"/></td>
            <td class="number"></td>
        </tr>
    </table>
    <div class="body">
        <table>
            <tr>
                <td>
                <xsl:if test="item_small_image!=''">
                    <a href="{item_path}"><img src="/{item_small_image}"/></a>
                </xsl:if>
                    <a href="{item_path}" style="color:#3b3b3b; text-decoration: none;"><xsl:value-of disable-output-escaping="yes" select="item_description"/></a>
                </td>
            </tr>
        </table>
    </div>
</div>
                                
</xsl:if>                              
</xsl:template>

</xsl:stylesheet>
#
Re: XSL
Выделено жирным:
<?xml version="1.0" encoding="windows-1251"?>
<!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="Windows-1251" 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">

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

    <!-- Отображение записи информационной системы -->
    
    <xsl:apply-templates select="blocks/items/item[item_status=1]"/>
        
    <xsl:if test="ОтображатьСсылкуНаАрхив=1">
         <div id="allnews" style="text-align:center"><a href="{blocks/url}"><img src="/images/allnews.gif" alt="button" /></a></div>
   </xsl:if>

</xsl:template>


   <!-- Шаблон вывода информационного элемента -->
<xsl:template match="blocks/items/item">
<xsl:if test="item_propertys/item_property[@xml_name='main_display']/value = 1">

<div class="briefmat">
    <table border="0" cellpadding="0" cellspacing="0" class="titlebrief">
        <tr>
            <td class="img" valign="top"><a href="{item_path}"><img src="/images/brieftitle.gif" alt="doc" /></a></td>
            <td class="titlebrief"><h2><a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/></a></h2></td>
        </tr>
    </table>
    <table border="0" cellpadding="0" cellspacing="0" class="date">
        <tr>
            <td class="date"><xsl:value-of disable-output-escaping="yes" select="item_datetime"/></td>
            <td class="number"></td>
        </tr>
    </table>
    <div class="body">
        <table>
            <tr>
                <td>
                <xsl:if test="item_small_image!=''">
                    <a href="{item_path}"><img src="/{item_small_image}"/></a>
                </xsl:if>
                    <a href="{item_path}" style="color:#3b3b3b; text-decoration: none;"><xsl:value-of disable-output-escaping="yes" select="item_description"/></a>
                </td>
            </tr>
        </table>
    </div>
</div>
                                
</xsl:if>                              
</xsl:template>

</xsl:stylesheet>
#
Re: XSL
Мой то шаблон выводил, только следующим образом, он брал последнии 10 материалов из ИС и показывал только с main_display=1, т.е. на выходе получалось по одному или двум материалов, а мне нужно что бы в любом случае он выводил 10 штук.
#
Re: XSL
тогда покажите код вызова ИС для главной страницы
#
Re: XSL
Nikita.bOFF, в данном случае корректнее ограничивать выбор элементов по доп. свойству НЕ в XSL-шаблоне, а при показе инфосистемы средствами PHP. См. пример ограничения по доп. свойству в API для метода ShowInformationSystem
#
Re: XSL
А можно немного поподробнее?
Вот код вывода ИС
<?
        /* Вывод информационных систем */
        $InformationSystem = & singleton('InformationSystem');

        $external_propertys=array();
        $external_propertys['ОтображатьСсылкуНаАрхив']=0;
        $external_propertys['ОтображатьСсылкиНаСледующиеСтраницы']=0;

        /* Количество выводимых элементов */
        $item_count = 5;

        $InformationSystemId = 24;

        $InformationGroupId = false;  // false - из всех групп, 0 - из корневой группы

        $InformationSystem->ShowInformationSystem($InformationSystemId, $InformationGroupId, 'ВыводМатериаловНаГлавной',$item_count,0,$external_propertys);
        ?>
#
Re: XSL
Добавьте конструктор запроса перед вызовом метода ShowInformationSystem:
$element['type'] = 1;
$element['prefix'] = 'and';
$element['property_id'] = 17;
$element['if'] = '=';
$element['value'] = '1';
$element['sufix']='';
$property['select'][] = $element;

в метод ShowInformationSystem нужно передать параметр $property
#
Re: XSL
Как все Наталья, огромное вам спасибо, что бы я без вас делал
Авторизация