zoukankan      html  css  js  c++  java
  • Umbraco网站制作(四) XSLT使用

    XSLT可拓展样式表语言。如果大家不知道的,可以上http://www.w3school.com.cn/学习

    在Umbraco中,XSLT的用法很多,用好了效果也很多,比如搜索,指定显示的条目啊,等等。

    为了演示这个的效果,我们根据第一篇文章写到的,我们多创建一些标签去,如图。

    我又多创建了一个HomePage标签。

    这里值得大家注意的是

    Structure这里,我们如果做一个网站,肯定是从首页开始的,首页下可以包含多个子页,或者没个子页下面又包含其他子页。
    我在这里的HomePage下就包含了Hello子页,意思就是,我在创建了HomePage之后,在HomePage下可以包含多个Hello文件。

    比如。

    这里的Home对应我的HomePage模板,而about,Leave为我的Hello模板。

    下面我们选择,Developer,在XSLT Files新键一个xslt文件。

    这里注意勾选Create Macro,这里会自动帮我们创建一个对应的Macro文件

    如图。

    下面,我们选择list.xslt文件,这里就可以编辑我们的xslt文件了。

    这里可以写的东西比较多,我就写个显示Home页下子页的例子,代码如下。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:Stylesheet [ <!ENTITY nbsp " "> ]>
    <xsl:stylesheet
     version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:msxml="urn:schemas-microsoft-com:xslt"
     xmlns:umbraco.library="urn:umbraco.library"
     exclude-result-prefixes="msxml umbraco.library">


    <xsl:output method="xml" omit-xml-declaration="yes"/>

    <xsl:param name="currentPage"/>

    <xsl:template match="/">

    <xsl:for-each select="$currentPage/ancestor-or-self::node [@level=1]/node [string(./data [@alias='umbracoNaviHide']) != '1']">
     <a href="{umbraco.library:NiceUrl(@id)}">
       <xsl:attribute name="title"><xsl:value-of select="@nodeName" /></xsl:attribute>
       <xsl:value-of select="data [@alias = 'PageHeader']"/>
      </a> 
    </xsl:for-each>

    </xsl:template>

    </xsl:stylesheet>

    保存。然后我们去主模板Main模板。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta http-equiv="Content-Language" content="zh-cn" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>HEAND</title>
    <link rel="stylesheet" type="text/css" href="/CSS/Style.css" media="screen"/>


    <script src="/Scripts/bb.js" type="text/javascript"></script>

    </head>

    <body>
     <div id="Content">
      <div id="Heand"><?UMBRACO_MACRO macroAlias="List" ></?UMBRACO_MACRO></div>
      <div id="Left"></div>
      <div id="Right">
       <?UMBRACO_TEMPLATE_LOAD_CHILD/>
      </div>
     </div>
    </body>

    </html>

    注意这句代码,我在heand这个div里面,引用了我干才写的一个xslt,这里的List名字为自动创建的那个Macro文件,而这个Macro文件它是指定到我的List.xslt

    文件中的。然后保存。

    提示:我创建的HomePage这个模板的主模板也选的Main.

    下面我们去预览下效果吧~!

    大家可以看到,我的上面div里面就有了我干才那两个子页面的标题。点击对于到相应的内容页。这样一个网站的导航就做好了~!

    是不是很简单?如果有不明白的欢迎大家交流。

    写这个的主要难点在xslt那里,如果对xpath熟悉的朋友,相信也不会太难。

    获取顶级目录:<xsl:for-each select="$currentPage/ancestor::root/node ">

    获取第一及子目录:<xsl:for-each select="$currentPage/ancestor-or-self::node [@level=1]/node">

    获取第二及子目录:<xsl:for-each select="$currentPage/ancestor-or-self::node [@level=2]/node">

    后面同理……

    排序:<xsl:sort select="@updateDate" order="descending"/>

    联结到子页面:<a href="{umbraco.library:NiceUrl(@id)}"><xsl:value-of select="@nodeName"/></a>

    获取该目录下的子目录
    <xsl:for-each select="$currentPage/node [string(data [@alias='umbracoNaviHide']) != '1']">

    [string(data [@alias='umbracoNaviHide']) != '1']该表示的意思为如果umbracoNaviHide==1则不显示该内容。表示是否是隐藏文件

    还很多,这里只是一部分。大家可以慢慢研究。

  • 相关阅读:
    由chkconfig 引发的联想——怎么查看程序是否已经安装/成功安装
    C#反射动态调用dll中的方法,并返回结果
    走过2011年终总结
    Ext.Net系列:二Event之DirectEvents
    缇 、 像素 、 厘米
    Ext.Net系列:二Event之DirectEvent 示例1调用事件顺序
    Ext.Net系列:二Event之DirectEvent 示例2(Delay)
    html符号标签
    ubuntu11.10 安装tplink usb无线网卡 tlwn725n
    GridView 行颜色变化
  • 原文地址:https://www.cnblogs.com/liluping860122/p/1251276.html
Copyright © 2011-2022 走看看