如何在所有页面中包含模板

时间:2011-07-14 11:29:24

标签: symphony-cms

我想在所有页面中包含设计,为此我设置了主页面布局,它工作得很完美。然后我想在我的网站的每个页面添加一些部分,我也通过创建实用程序页面来完成此操作,但问题是重复所有内容。这是我的代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/data">

    <h1><xsl:value-of select="$page-title"/></h1>
<ul><xsl:apply-templates select="/categories/entry"/></ul>

</xsl:template>
<xsl:template match="categories/entry">
        <div class="left_wrap">

            <div class="large_video"><img src="{$workspace}/images/video.jpg" style="border:#393939 solid 1px;" /></div>
            <div class="title1">Categories<img src="{$workspace}/images/arrow.jpg" /></div>
            <div style="float:left; width:680px;">

                <div class="category_block">
                <div class="category_title"><xsl:value-of select="title"/></div>
                <div class="category_image"><img src="{$workspace}/images/politics.jpg" /></div>
                <div class="category_info"><xsl:value-of select="description"/></div>
                <div class="date"><img src="{$workspace}/images/time.png"  style="float:left;"/><p style="float:left; width:120px; margin-left:6px;">2 days ago</p></div>
                </div><!--category_block END-->

            </div>            
         </div> 
</xsl:template>


</xsl:stylesheet>  

我想只重复“class ='category_block'”div,但我需要此页面中的所有其他内容。交响乐怎么可能?另外我想在我的主页中将类别描述字符数限制为100个字符,我该如何限制它。

1 个答案:

答案 0 :(得分:1)

首先,您的<div class="left-wrap">是否意味着要为每个类别条目重复,还是应该包含所有类别?我将假设后者,因为根据我在这里看到的内容,这似乎最有意义。

如果是这样,您的data模板应如下所示:

<xsl:template match="data">
    <h1><xsl:value-of select="$page-title"/></h1>
    <xsl:apply-templates select="categories"/>
</xsl:template>

这将与categories节点匹配,并允许您为所有类别条目设置容器:

<xsl:template match="categories">
    <div class="left_wrap">
        <div class="large_video">
            <img src="{$workspace}/images/video.jpg" style="border:#393939 solid 1px;" />
        </div>
        <div class="title1">Categories<img src="{$workspace}/images/arrow.jpg" /></div>
        <div style="float:left; width:680px;">
            <ul>
                <!-- This will be your repeating block -->
                <xsl:apply-templates select="entry"/>
            <ul>
        </div>            
     </div> 
</xsl:template>

现在,当您有多个entry时,以下entry模板中的任何内容都会重复:

<xsl:template match="categories/entry">
    <li>
        <div class="category_block">
            <div class="category_title">
                <xsl:value-of select="title"/>
            </div>
            <div class="category_image">
                <img src="{$workspace}/images/politics.jpg" />
            </div>
            <div class="category_info">
                <xsl:value-of select="description"/>
            </div>
            <div class="date">
                <img src="{$workspace}/images/time.png"  style="float:left;"/>
                <p style="float:left; width:120px; margin-left:6px;">2 days ago</p>
            </div>
        </div><!--category_block END-->
    </li>
</xsl:template>

显然,我必须在这里做一些假设,所以让我知道这不是你所追求的。另外,请记住,使用XSLT总是有不止一种方法可以做某事。

最后,你应该考虑稍微清理你的标记。很多无关的,非语义的div等等。例如,您的<div class="title1">可能应该是标题。同上<div class="category_title">

要回答有关截断说明的最后一个问题,请尝试使用Symphony网站上的this utility