在这里,我们先假设我们遇到 一个问题:制作一个自定义标签,在文章内容页输出当前文章关键字。
如果我们是要输出一个指定文章的关键字,比如说输出文章ID是5的关键字,我们SQL语句可以这样写: Select KeyWord from PE_Article where ArticleID=5
这样,我们就取出了文章ID是5的文章的关键字,可是如果需要取出的是内容页当前文章的关键字,这个文章的ID不能固定下来,需要取当前文章的文章ID,这里,我们很容易联想到文章内容页获取当前文章ID的标签{$ArticleID},如果我们能把这个标签传递到自定义标签的SQL语句中,那么我们目的就可以达到了。
SiteWeaver设计的时候就预设了有几个特殊的系统标签可以传递给自定义标签的SQL语句,{$ArticleID}就是其中之一,下面我们来看一下具体的步骤。
首先我们添加一个函数标签。设置如下图:
请注意这里的写法,我们首先添加了一个参数,参数名称是ArticleID,然后我们SQL语句里面将这个参数传递给ArticleID,设置好优先级之后我们进入标签的第二步。
我们这里的内容就显示Keyword这个字段,然后点击完成,这个标签就制作好了。
然后我们在文章内容页模板里面插入这个标签,格式如下{$MY_取关键字({$ArticleID}) }
保存模板,前台就可以看到效果了。
这里要注意这个标签的写法{$MY_取关键字({$ArticleID}) },可以看到,{$MY_取关键字(参数) }这个标签的参数是{$ArticleID},其实这个自定义标签的解析是分两个步骤的:
1、先解析{$ArticleID},比如我们当前文章ID是5,{$MY_取关键字({$ArticleID}) }标签经过第一次解析之后就成了{$MY_取关键字(5) }
2、传入5这个参数给自定义标签解析,完成标签解析的流程。
我们再总结一下如何将特定的系统标签传递给自定义标签的步骤
1、自定义标签必须为函数标签,需要传递进去的系统标签以参数的方式传递
2、在SQL句中在系统标签要传入的地方预留参数
3、在调用的时候将系统标签作为参数传递给自定义标签
下面我们再看一下那些系统标签可以作为参数传递给自定义标签:
对象ID,比如文章频道的{$ArticleID},软件频道的{$SoftID},图片频道的{$PhotoID},商城频道的{$ProductID}
频道ID,也就是{$ChannelID}
栏目ID,也就是{$ClassID}
专题ID,也就是{$SpecialID}
当然,你也先确保这些系统标签在模板里面能解析,才能传递给自定义标签,如果模板里面都不能解析这个系统标签,比如我们在栏目页调用{$MY_取关键字({$ArticleID}) }那解析出来肯定就是SQL查询错误了。 |