当前位置: 首页 > 图文教程 > 网页制作 > CMS技巧 > sql标签嵌套调用实现循环显示栏目文章标签

CMS技巧
Joomla教程:一套模板实现多种布局模式
Joomla教程:保持Blog视图中的文章标题链接
Joomla教程:使用图片和CSS实现翻转效果菜单
Joomla教程:重置用户密码的3种方法
Joomla教程:在Joomla 1.5中使用SEF网址
drupal网站配置google Sitemap
Drupal在中国悄悄的火起来了
Drupal教程:环境搭建和基本配置
Drupal教程:本地计算机建立多个站点和错误页面设置
drupal教程:添加drupal模块和主题
Drupal教程:创建内容
Drupal教程:自定义区块(Blocks)
Drupal教程:使用drupal菜单
Drupal教程:联系表单(Contact Form)
Drupal中文教程:URL别名
Drupal教程:迁移整个Drupal站点与数据库
Drupal中文教程:设定Cron
Drupal中文教程:分类(Taxonomy)
Drupal中文教程:链接和图片
Drupal简明教程:适用于初学者的Drupal

CMS技巧 中的 sql标签嵌套调用实现循环显示栏目文章标签


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-03   浏览: 71 ::
收藏到网摘: n/a

一段时间没有给大家讲高级教程了,今天刚好商业区的管理员说有用户需要这方面的需求,问我如何实现!其实也不难.我就给大家做个教程吧!

   用过科汛系统函数标签的"循环显示栏目文章标签"的用户可能就知道这个标签有一定的局限性,样式无法自己控制.往往无法满足自己的需求.现在我就教大家用sql标签来实现类似效果的制作方法

  正如标题所说需要sql标签嵌套调用,但考虑到系统生成速度方面原因,默认情况下科汛的sql标签是不支持嵌套调用的,那我们就对科汛的代码进行小手术.请跟我来吧

第一步:对代码进行小手术

  用dw等编辑工具打开KS_Cls/Kesion.Label.CommonCls.asp文件,并找到约112左右的如下代码

  Dim DCls:Set Dcls=New DIYCls
   Content=DCls.ReplaceUserFunctionLabel(Content) 
   Set DCls=nothing
   ReplaceAllLabel =Content

   ReplaceAllLabel=DCls.ReplaceUserFunctionLabel(Content)
我们改成以下代码

    Dim DCls:Set Dcls=New DIYCls
   Content=DCls.ReplaceUserFunctionLabel(Content)

相信有点asp代码基础的用户都可以看得明白,就是当模板文件里包括{SQL_开头时,就再一次执行sql标签替换操作.正如之前说的,考虑到生成速度方面原因.如果模板里不包含{SQL_就不再替换了,所以这里的If判断对系统的性能有一定的作用.因为我们并不要求所有标签都要嵌套的.

第二步:分析实现

制作被嵌套的文章列表(查询KS_Article表):

sql标签名称:文章循环体

sql参数: 栏目ID

sql语句:select top 10 id,title,adddate from ks_article where tid='{$Param(0)}' order by id desc

sql循环体:

[loop=10]
<li><a href="{$Field(id,GetInfoUrl,1,1)}" target="_blank">{$Field(title,Text,0,...,0,)}</a></li>
[/loop]

制作栏目列表标签(查询KS_Class栏目表)

sql标签名称:循环栏目列表

sql语句:select top 10 id,FolderName from ks_class where tn='{$CurrClassID}' order by folderOrder

sql循环体:

<table border="0" width="100%">
[loop=10]
<tr>
 <td>{$Field(foldername,Text,0,...,0,)}</td>
</tr>
<tr>
 <td sytle="border:1px solid #cccccc">
 {SQL_文章循环体({$Field(id,GetInfoUrl,100,2)})}
</td>
</tr>
[/loop]
</table>

tips:上面红色就是插入上面制作的文章列表标签,参数{$Field(id,GetInfoUrl,100,2)}表示生成栏目ID号

第三步:模板调用

{SQL_循环栏目列表()}