账号通
    

账号  

密码  

36865

查看

55

回复
主题:[分享]V5.5新增标签-通用循环标签(2008-12-10整理更新) [收藏主题] 转到:  
小林 当前离线

233

主题

0

广播

2

粉丝
添加关注
级别:二年级

用户积分:2186 分
登录次数:88 次
注册时间:2008/7/19
最后登录:2014/1/11
小林 发表于:2008/12/10 19:38:00   | 只看该作者 查看该作者主题 楼主 

新版发布在即,为发挥其标签的强大功能。今天给大家介绍一下v5.5新增加了一个通用循环标签(类似sql标签),设计此标签的目的在于弥补之前版本的系统函数标签里的文章循环栏目列表标签的一些不足,如输出样式不能自定义,相对单一等缺点。

 

接下来看看后台的制作标签界面


此主题相关图片如下:1.gif
1.gif

 

从上图中可以看出,总个标签主要由两部分组成,即sql语句和XSLT样式循环体

跟sql标签有所不同的是sql语句分内,外sql语句。循环体改成可灵活控制的xslt语法

 

看到这里也许你会问,内层的sql语句是如体与外部关联的。考虑到这一点,我们在系统里预留了可关联的字段标签,即{R:字段名}与外层SQL标签关联,这里的字段名为外层的sql语句里已查询出的字段

 

通常这个标签用得最多的应该是在频道页面循环显示子栏目的信息列表,为了便于初学者使用,新建这个通用循环栏目标签里,已都默认给出,您只需要简单修加修改即可以使用。上图所示即为默认,文章表的栏目tid与外层的栏目ID通过 {R:ID}进行关联。

 

 

 

为了进一步体现这个标签的使用,就以中国站长站www.chinaz.com顶部的导航为例说明吧,效果图如下

 


此主题相关图片如下:1.jpg
1.jpg

从这张效果图中,可以看出这个栏目结构为两级关系。可以理解为内,外循环。正满足我们v5.5的通用循环标签,并且查询的都是栏目数据表(kesionCMS的栏目表为:KS_Class)

 

我们通过浏览器的工具栏的查看源代码:

<div class="nav">
<div class="navinner">
  <ul class="navlist">
  <li><a href="/">首页</a></li>
  <li>

   <a href="/News/Index.html" id="nav_1" onmouseover="showMenu('nav_1','subnav1')">新闻资讯</a>
    <div class="subnav disable" id="subnav1">
      <p class="pointer">.</p>
      <p><span>
      <a href="/News/It/Index.html">业界动态</a> |
      <a href="/News/Invest/Index.html">收购融资</a> |
      <a href="/News/Portals/Index.html">门户动态</a> |
      <a href="/News/Search/Index.html">搜索引擎</a> |
      <a href="/News/Game/Index.html">网络游戏</a> |
      <a href="/News/Biz/Index.html">电子商务</a> |
      <a href="/News/Media/Index.html">广告传媒</a> |
      <a href="/News/Soft/Index.html">厂商开发</a>
      </span></p>
    </div> 

   </li> 

   <li>

    <a href="/Webmaster/Index.html" id="nav_2" onmouseover="showMenu('nav_2','subnav2')">站长在线</a>
    <div class="subnav disable" id="subnav2">

 

   ...

</ul>
</div> 
</div>

 

分析其代码结构,可以看出红色部分为外层(即一级栏目),蓝色部分为内层即(二级栏目)

 

这里我们就可以构造sql语句

外层sql语句:select top 20 id,foldername from ks_class where tn='0' order by folderorder

内层sql语句:select top 20 id,foldername from ks_class where tn='{R:ID}' order by folderorder

 

上面的sql语句非常简单,相信也不用我再做进一步说明了。

注意点:内层的sql语句,通过tn='{R:ID}'与外部的id(父栏目)进行关联。

 

 

接下来就是构造xslt样式

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">

<div class="nav">
<div class="navinner">
  <ul class="navlist">
  <li><a href="/">首页</a></li>

  <xsl:for-each select="xml/outerlist/outerrow">
 
<li><a href="{@classlink}" id="nav_{@id}" onmouseover="showMenu('nav_{@id}','subnav{@id}')"><xsl:value-of select="@foldername" disable-output-escaping="yes" /></a>
    <div class="subnav disable" id="subnav{@id}">
      <p class="pointer">.</p>
      <p><span>

      <xsl:for-each select="innerlist/innerrow">
       <a href="{@classlink}"><xsl:value-of select="@foldername" disable-output-escaping="yes" /></a> |

      </xsl:for-each>
            </span></p>
    </div> 
  </li>

 </xsl:for-each>

 </ul>

</div>

</div>

</xsl:template>
</xsl:stylesheet>

 

说明:xlst样式必须严格按照xslt语法编写。

 

预设标签: @classlink 得到栏目链接 @linkurl 得到信息链接
标签的构造规则:根据所查询的字段名前加@组成,且所有字段名必须小写;

 

请注意上面xslt语法中的for-each,如果你还不知道什么是xslt,那就赶紧温习吧 ^_^!


 

 

上面给出了这个标签的总体使用说明,如果要实现站长站那样的效果,只需要在代码里写样式调用即可。
 

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
jiangjinsong 当前离线

99

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:868 分
登录次数:27 次
注册时间:2008/3/11
最后登录:2009/9/19
jiangjinsong 发表于:2009/7/24 16:14:00   | 只看该作者 查看该作者主题 沙发 
科汛在线商城系统(NET)

不用xlst样式样式 可以做吗?

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
saisai 当前离线

104

主题

0

广播

0

粉丝
添加关注
级别:一年级

用户积分:1162 分
登录次数:237 次
注册时间:2009/3/16
最后登录:2022/3/7
saisai 发表于:2009/3/22 16:00:00   | 只看该作者 查看该作者主题 藤椅 
科汛在线商城系统(NET)
只显示出主导航,二级导航老是出不来,
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
czha1357 当前离线

34

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:444 分
登录次数:12 次
注册时间:2009/4/2
最后登录:2009/5/3
czha1357 发表于:2009/4/9 22:23:00   | 只看该作者 查看该作者主题 板凳 
科汛在线商城系统(NET)

完全是说给内行人听的.有这个必要吗?

 

 

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
8ewzcn 当前离线

135

主题

0

广播

0

粉丝
添加关注
级别:一年级

用户积分:1013 分
登录次数:75 次
注册时间:2008/7/31
最后登录:2013/9/15
8ewzcn 发表于:2009/1/16 14:56:00   | 只看该作者 查看该作者主题 报纸 
科汛在线考试系统(NET)
看介绍不错,对新人来说,还是好难,看不懂,没有可视化标签
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
56look 当前离线

807

主题

26

广播

12

粉丝
添加关注
级别:七年级

用户积分:5898 分
登录次数:575 次
注册时间:2007/3/25
最后登录:2020/3/29
56look 发表于:2009/1/16 11:00:00   | 只看该作者 查看该作者主题 地板 
科汛在线考试系统(NET)

用以上代码测试完后,发现<span>里是空的,也就是说没调用成功子栏目。

 

同时发现生成的静态页面源代码中有<?xml version="1.0" encoding="UTF-16"?>这个代码,应该是多余的,这是应该是XSLT里替换遗留下来的。

 

请管理员明示,谢谢!

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
科汛官方 当前离线

47268

主题

145

广播

404

粉丝
添加关注
级别:管理员

用户积分:101604 分
登录次数:7935 次
注册时间:2006/12/7
最后登录:2023/12/14
科汛官方 发表于:2009/2/3 11:07:00   | 只看该作者 查看该作者主题 7楼 
做在线知识付费 选科汛云开店
以下是引用56look在2009-1-16 11:00:00的发言:

用以上代码测试完后,发现<span>里是空的,也就是说没调用成功子栏目。

 

同时发现生成的静态页面源代码中有<?xml version="1.0" encoding="UTF-16"?>这个代码,应该是多余的,这是应该是XSLT里替换遗留下来的。

 

请管理员明示,谢谢!

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" version="4.0"/>
<xsl:template match="/">

 

在你的循环体里增加红色代码即可

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
qswxh 当前离线

15

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:271 分
登录次数:7 次
注册时间:2009/1/9
最后登录:2009/1/13
qswxh 发表于:2009/1/13 14:45:00   | 只看该作者 查看该作者主题 8楼 
科汛在线商城系统(NET)
很强,不大会用,能细讲就好了。
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
qswxh 当前离线

15

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:271 分
登录次数:7 次
注册时间:2009/1/9
最后登录:2009/1/13
qswxh 发表于:2009/1/13 10:11:00   | 只看该作者 查看该作者主题 9楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
zhangwlx 当前离线

224

主题

0

广播

6

粉丝
添加关注
级别:二年级

用户积分:1854 分
登录次数:119 次
注册时间:2006/12/26
最后登录:2010/3/16
zhangwlx 发表于:2009/2/26 15:08:00   | 只看该作者 查看该作者主题 10楼 
还有人在研究没有呢!我调不出二级栏目呀!!!
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.71875秒 powered by KesionCMS 9.0