Как включить шаблон на всех страницах - PullRequest
0 голосов
/ 14 июля 2011

Я хочу включить дизайн во все страницы, для этого я установил макет главной страницы, он отлично работает. Затем я хочу добавить некоторые части на каждую страницу моего сайта, я также сделал это, создав служебную страницу., но проблема повторяет все содержимое.вот мой код

<?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>  

Я хочу повторить только div "class = 'category_block'", но мне нужно все остальное на этой странице.Как это возможно в симфонии?Также я хочу ограничить количество символов описания категории до 100 символов на моей домашней странице, как я могу ограничить это.

1 Ответ

1 голос
/ 14 июля 2011

Во-первых, ваш <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.

...