网站首页 手机版
 注册 登录
您现在的位置: 畅无忧设计 >> 网站建设 >> 动易专区 >> SiteWeaver教程 >> 正文
最新文章
· SiteWeaver系统结构功能概述
· SiteWeaver数据表列表
· IE8正式版下Siteweaver后台编辑器无效
· 在自定义标签中运用js
· SiteWeaver会员登录调用方法
· 生成html或刷新栏目JS时提示“写入文
· 实现文章中出现的关键字自动加亮加连
· 搜狐flash幻灯片标签
· SiteWeaver6.8无限级树形导航标签
· SiteWeaver CMS转换升级为SiteWeaver
热门文章
 动易SiteWeaver版自定义动态标签、
 生成html或刷新栏目JS时提示“写入
 文章自定义列表标签【ArticleList】
 SiteWeaver 6.8会员模板使用说明
 SiteWeaver数据表列表
 FLV视频插件 for SW系列
 在自定义标签中运用js
 Siteweaver模板对应的页面
 文章栏目页标签【ArticleList_Chil
 实现文章中出现的关键字自动加亮加
相关文章
没有相关文章
自定义标签嵌套
来源:动易网络 更新时间:2009/8/21 15:31:25 阅读次数:
字体:[ ] 我要投稿

  自定义标签的嵌套可以分为两种形式

  一、一个自定义标签作为参数传递给另外一个自定义标签。

  二、在自定义的内容里面引用另外一个自定义标签。

  下面我们分别就两种情况举两个例子。

  1、一个自定义标签作为参数传递给另外一个自定义标签。

  例子:在文章内容页取出该作者发表的其他文章。

  我们增加两个自定义标签,第一个自定义标签取出当前文章的录入者,然后把录入者传递给第二个自定义标签,用第二个标签取出该录入者的其他文章。

说到这里,可能有些人会有这样的疑问,为什么要用自定义标签取出当前文章的录入者,当前文章录入者不是有了{$Inputer}这个系统标签了吗?直接把这个系统标签传递给第二个标签不就可以了?事实上并不是这样的,能作为参数传递给自定义标签的,只有几个特殊的系统标签,这个可以参考之前的章节,如果直接把{$Inputer}作为参数传递给自定义标签,那么会出现SQL查询错误的提示。这里,我们就可以看到自定义标签的一个优点,只要定义好优先级,自定义标签之间就可以相互嵌套

  标签一:取出文章的录入者

  添加标签如下:

 

  标签设置如下:

  SQL语句:select Inputer from PE_Article where ArticleID={input(0)}

  参数:一个

  优先级:1(注意标签的优先级)

  点击进入下一步

  在标签内容中插入inputer字段,也就是将标签内容设置成:

  {Loop}{Infobegin}{$Field(0,Text,0,0,0)}{Infoend}{/Loop}

  这样第一个标签就添加好了,下面我们来添加第二个标签。

  

  标签二:取出录入这的其他文章:

  标签设置如下:

 

  SQL语句:select title from PE_Article where Inputer ='{input(0)}'

  参数:一个

  优先级:2(注意这里的优先级)

  然后进入标签的下一步

  我们这里也简单的取出文章的标题作为例子

 

  标签内容设置如下:{Loop}{Infobegin}{$Field(0,Text,0,0,0)}{Infoend}{/Loop}

  这样我们两个标签就都添加好了。

  两个标签之间怎么嵌套呢?这个是在调用的时候体现的,比如以上例子的两个标签,我们可以这样嵌套调用:{$MY_取文章({$MY_取录入者({$ArticleID})})}

  这里看起来可能比较复杂,下面我们来将这个标签分一下层次:

  首先最先解析的是{$ArticleID},这个系统标签在自定义标签解析前解析,为了方便讲解,假设当前文章的文章ID5,解析完这个标签之后,标签成了{$MY_取文章({$MY_取录入者(5)})}

  接下来,这两个自定义标签哪个先解析呢?这个就跟标签的优先级有关了,优先级小的优先解析,也就是这里会先解析{$MY_取录入者(5)},这里是取出文章ID5的录入者,我们这里假设这个录入者是路人甲。那么解析完这个标签之后,标签成了{$MY_取文章(路人甲)}

  最后解析{$MY_取文章(路人甲)},取出路人甲的其他文章。这个应该就不需要再解释了。

 

  2. 在自定义的内容里面引用另外一个自定义标签。

  这种引用可能一般用户用的比较少,可是由于比较实用,我在这里也讲解一下。

  这里还是以一个例子为切入点

  例子:用自定义标签取出所有频道的一级栏目,按照下面的方式来显示

  文章频道:栏目一|栏目2|栏目3|栏目4……

  软件频道:栏目一|栏目2|栏目3|栏目4……

  图片频道:栏目一|栏目2|栏目3|栏目4……

  …………

  这样的情况能不能用自定义标签来实现呢?答案是肯定的。

  有些用户或者有这样的解决方法:文章频道的栏目添加成一个标签,软件频道的栏目添加成一个标签,图片频道的栏目添加成一个标签,每行调用一个标签。这种做法也是可行的,不过,有多少个频道就需要增加多少个自定义标签,不够灵活。下面我来讲解一下如何通过标签内容的嵌套来实现这样的显示方式。

  思路是这样的:增加两个自定义标签,第一个自定义标签取出所有的频道,第二个自定义标签取出指定频道的所有一级栏目。然后第一个标签的标签内容里面引用第二个标签。

  我们分别来增加这两个标签:

  先增加标签:取出指定频道的所有一级栏目

  标签设置如下:

 

  SQL语句我们设置成select *  from PE_Class where ChannelID={input(0)} where ParentID=0,也就是只要传入了参数ChannelID,这个标签就取出这个ChannelID对应的一级栏目

  参数:一个

  优先级:这里可以随便设置,我设置成5

  然后进入下一步标签内容设置

 

  这里我们内容设置成

  {Loop}

    {Infobegin}

      {$Field(2,Text,0,0,0)}|

    {Infoend}

  {/Loop}

  然后点击完成。

 

  下面我们来添加另外一个标签

  添加标签:循环所有频道

  标签设置如下

 

  这里我们是添加成动态标签,所以不用设置参数。

  SQL语句如下:select  * from PE_Channel 

  优先级也可以随便设置

  然后我们进入标签的第二步:

 

  这里我们看一下标签内容

  {Loop}

    {Infobegin}

       {$Field(0,Text,0,0,0)}:{$MY_取一级栏目({$Field(1,Text,0,0,0)})}

    {Infoend}

  {/Loop}

  可以看到标签的内容是:

  {$Field(0,Text,0,0,0)}: {$MY_取一级栏目({$Field(1,Text,0,0,0)})}

  这里我们看到冒号前面是:{$Field(0,Text,0,0,0)},这个对应频道的名称

  冒号后面是:{$MY_取一级栏目({$Field(1,Text,0,0,0)})}

  {$MY_取一级栏目(参数)}是我们刚才添加的标签,{$Field(1,Text,0,0,0)}这个是ChannelID对应的字段,代表频道ID,我们这里是将ChannelID这个字段插入到{$MY_取一级栏目(参数)}这个标签中做为参数了,我们可以这样理解:

  {$MY_循环频道}这个标签的作用是循环取出所有的频道,他每取出一个频道,就把对应的频道ID传递给{$MY_取一级栏目(参数)}标签作为参数,取出这个频道的所有一级栏目

  这样的话我们的目的就达到了。

  • 上一篇文章:
  • 下一篇文章:
  • 关于我们 - 联系我们 - 广告服务 - 在线投稿 - 友情链接 - 网站地图 - 版权声明
    CopyRight 2008-2010, CWYDESIGN.COM - 畅无忧设计, Inc. All Rights Reserved
    滇ICP备09005765号