账号通
    

账号  

密码  

32387

查看

44

回复
主题:【2013】孤风大虾回来了!带来超牛逼SQL标签大嵌套教程——看不懂没关系,觉得牛逼就行! [收藏主题] 转到:  
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 20:43:46   | 显示全部帖子 查看该作者主题 楼主 

点击查看原图

SQL循环出来的效果。大家先看看。


本教程献给科讯官方。献给所有热爱科讯CMS的朋友们。这个教程有些生涩。如果不仔细研究很容易看晕。仅献给有耐心研究科讯SQL标签的朋友们。客户的站,演示地址不发了。希望大家多多学习多多努力。

以下内容只有回复后才可以浏览,请先登录!

ps:本来计划好10楼放这段感谢的。但是被版主强行插入,只能编辑一下主贴了。看来版主热情加精华的份上~我原谅你啦~!~


华丽复杂的三级栏目循环,请看http://bbs.kesion.com/forumthread-1126365-1.html


另,本项目我重新制作了一个精简优化版的,教程地址:http://bbs.kesion.com/forumthread-1126546.html

两个教程可以参考着看。

 
孤风自己开发了一套CMS系统,博采科讯的长处,去除了无关的功能,有兴趣的百度 FengCms
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 20:48:49   | 显示全部帖子 查看该作者主题 沙发 
科汛智能建站系统

如一楼所示的效果图,我需要把这一块循环出来八次。不重要。下面我来讲解具体怎么做。


首先,要分析,我们可以把这一块内容分成三个部分

1、栏目头。包含1F字样的楼层代码、栏目标题、以及更多链接。

2、栏目的包含的子栏目的导航。

3、切片区。切片区包含两个部分,1、切片的控制区,2切片的显示区。


下面我们一个一个来解决。


1、我们要做一个SQL标签,这个标签读取产品栏目子类并循环,利用{$AutoID},可以制作1F这样的楼层效果。


2、子栏目导航,还是读取栏目表,根据传递的TN值,来获取子栏目。这个懂SQL的都简单。


3、切片控制区。这里读取前5个子栏目的名称,并在这里控制。由于第一个class不一样,所以需要用到判断。也是读取蓝目标,和子栏目导航类似。


4、切片内容区。这里是读取5个子栏目所包含的内容。我准备分为两步走,首先,将外框循环出来,然后再做一个SQL标签,来分别读取内容。外框就简单了,和3一样的查询代码,一样的判断。


5、里面的内容,可以根据TN值查找内容表的TID值,相等的就查出来。这个没有问题。问题是,如果子栏目还有子栏目怎么办,这是困扰我的问题。当然,我找到了解决方案。大家可以往下看。


6、切片要用JS控制。因此,每一个JS都需要有单独不重复的ID。正好顶级栏目的ID是唯一的,就它了。放在最外层的SQL标签里面就行。(此JS是用的科讯自带的。关于切片的更多介绍,请参考http://bbs.kesion.com/forumthread-80117.html


==============


仔细分析一下,迅速的把这个整体解体,立马就得到了清晰的结构。然后逐一实现就可以了!

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 20:51:05   | 显示全部帖子 查看该作者主题 藤椅 

本教程不涉及DIV+CSS部分的详细讲解,请自行查看。css代码如下:

  1. .web{ width:960px; overflow:hidden; margin:0 auto;}

  2. .home_xh_title {width: 960px;overflow: hidden;background:url(/image/h2_xh.png) no-repeat 0 0;height: 50px;clear: both;margin: 20px 0 0;}

  3. .home_xh_title_f {width: 50px;height: 50px;text-align: center;color: #fff;font:bold 30px/50px arial, Gadget, sans-serif;float: left;}
  4. .home_xh_title_name {float: left;font:bold 30px/40px "微软雅黑","黑体","宋体";padding:0 10px;}
  5. .home_xh_title_more {float: right;padding: 10px 0 0;}
  6. .home_xh_title_more a {display: block;width: 70px;height: 40px;text-indent: -9999em;}
  7. .home_xh {width: 960px;overflow: hidden;}
  8. .home_xh_nav {width: 209px;float: left;overflow: hidden;border-right:1px solid #d5d5d5;height: 459px;background: #F2F2F2;}
  9. .home_xh_nav h3{background:url(/image/xh_nav_title.png) no-repeat 0 0;width: 209px;height:36px;text-indent: -9999em;border-bottom:1px solid #d5d5d5;}
  10. .home_xh_nav ul {background:url(/image/xh_nav_bg.png);width: 210px;overflow: hidden;}
  11. .home_xh_nav ul li {width: 105px;text-align: center;height: 30px;line-height: 30px;float: left;}
  12. .home_xh_box {width: 750px;float: right;overflow: hidden;}
  13. .home_xh_box_tab {width: 750px;overflow: hidden;background:url(/image/xh_tab_bg.png) repeat-x 0 0;}
  14. .home_xh_box_tab li {width: 149px;float: left;border-right:1px solid #d5d5d5;border-bottom:1px solid #d5d5d5;height: 36px;text-align: center;
  15. font:bold 14px/36px "微软雅黑","宋体";cursor: pointer;}
  16. .home_xh_box_tab .active {background: #fff;border-bottom:1px solid #fff; color: #f60}
  17. .home_xh_box_con {width: 750px;overflow: hidden;height: 422px;}
  18. .home_xh_box_con li {width: 149px;float: left;overflow: hidden;border-right:1px solid #d5d5d5;border-bottom:1px solid #d5d5d5;}
  19. .home_xh_box_con li a {display: block;width: 130px;padding:10px;height: 190px;}
  20. .home_xh_box_con li a:hover {text-decoration: none;background: #f4f4f4;}
  21. .home_xh_box_con li a img {display: block;width: 130px;vertical-align:middle;height: 130px;}
  22. .home_xh_box_con li a em {font-style:normal;display: block;height: 24px;line-height: 24px;text-align: center;color: #666;}
  23. .home_xh_box_con li a strong {font-family: arial,verdana,sans-serif;font-size: 14px;color: #f60;}
  24. .home_xh_box_con li a span {display: block;width: 130px;height: 24px;text-align: center;line-height: 24px;overflow: hidden;padding: 5px 0 0;}

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 20:53:35   | 显示全部帖子 查看该作者主题 板凳 
科汛在线考试系统(NET)

首先,我们新建一个“首页大循环外”的SQL标签。



查询语句如下:

  1. SELECT TOP 8 ID,FolderName,TS,TN FROM KS_Class Where  tj=2 ORDER BY root,FolderOrder



构建好查询语句,就该是循环代码了。



  1. [loop=8]

  2. <script>
  3. function swap_tab{$Field(ID,Num,0,2)}(n){
  4. for(var i=1;i<=5;i++){
  5.   var curC=document.getElementById("tab{$Field(ID,Num,0,2)}_"+i);
  6.   var curB=document.getElementById("tab{$Field(ID,Num,0,2)}_t"+i);
  7.   if(n==i){
  8.    curC.style.display="block";
  9.    curB.className="active"
  10.   }else{
  11.    curC.style.display="none";
  12.    curB.className="normal"
  13.   }
  14. }
  15. }
  16. </script>
  17. <div class="web">
  18. <div class="home_xh_title">
  19.   <div class="home_xh_title_f">{$AutoID}F</div>
  20.   <div class="home_xh_title_name">{$Field(FolderName,Text,0,...,0,)}</div>
  21.   <div class="home_xh_title_more">
  22.    <a href="{$Field(ID,GetInfoUrl,100,1)}" title="{$Field(FolderName,Text,0,...,0,)}" target="_blank">{$Field(FolderName,Text,0,...,0,)}</a>
  23.   </div>
  24. </div>
  25. <div class="home_xh">
  26.   <div class="home_xh_nav">
  27.    <h3>{$Field(FolderName,Text,0,...,0,)}</h3>
  28.    <ul>{SQL_首页大循环内导航({$Field(ID,Text,0,...,0,)})}</ul>
  29.   </div>
  30.   <div class="home_xh_box">
  31.    <div class="home_xh_box_tab">
  32.     <ul>{SQL_首页大循环内切片导航({$Field(ID,Text,0,...,0,)})}</ul>
  33.    </div>
  34.    <div class="home_xh_box_con">{SQL_首页大循环内切片内容外框({$Field(ID,Text,0,...,0,)})}</div>
  35.   </div>
  36. </div>
  37. </div>
  38. [/loop]



好,循环代码结束

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 20:58:06   | 显示全部帖子 查看该作者主题 报纸 
科汛在线商城系统(NET)

我们分析的第一部分,可以直接读取出来,不需要有下级循环。非常简单就做到了。



而第二部分,是子栏目导航。如果你做过类似的项目,应该很容易就理解了。需要有一个子栏目循环的标签。我在这里命名为“首页大循环内导航



第三部分是内容区,分为切片控制区和内容区。我分别命名为首页大循环内切片导航首页大循环内切片内容外框



最前面还有一段JS,这是控制切片的。当然,最好的做法是独立出来一个JS文件。但是,为了挑战SQL循环的难度,我直接扔里面了。直接用栏目ID命名切片的空间,感觉杠杠的~

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 21:03:22   | 显示全部帖子 查看该作者主题 地板 
科汛在线考试系统(NET)

首页大循环内导航的制作



查询语句如下:

  1. SELECT TOP 30 ID,FolderName,TN FROM KS_Class Where TN='{$Param(0)}' ORDER BY Root,FolderOrder



循环语句如下:



  1. [loop=30]<li><a href="{$Field(ID,GetInfoUrl,100,1)}" target="_blank">{$Field(FolderName,Text,0,...,0,)}</a></li>[/loop]



这是非常简单的一个SQL标签。只需要循环出下级栏目即可。毫无难度。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 21:09:53   | 显示全部帖子 查看该作者主题 7楼 
做在线知识付费 选科汛云开店

首页大循环内切片导航的制作



查询语句如下:

  1. SELECT TOP 5 ID,FolderName,TN FROM KS_Class Where TN='{$Param(0)}' ORDER BY Root,FolderOrder



循环语句如下:

  1. [loop=5]

  2. <li class="{$IF("{$AutoID}"=1||active||normal)}" id="tab{$Field(TN,Num,0,2)}_t{$AutoID}" onmouseover="return swap_tab{$Field(TN,Num,0,2)}({$AutoID})">{$Field(FolderName,Text,0,...,0,)}</li>[/loop]



其实这个和上面的循环子栏目是一个意思。只不过是显示方式不同而已。另外,上面需要查询所有的子栏目,所以查询数量为30。因为目前没有哪个栏目的子栏目大于30。因此,只要是30就可以了。



而这里,我们的切片区域只有5块切片,也就是说,我们只要读取最前面的五个栏目的内容即可。因此,只需要循环5下即可。



另外,因为切片的特殊性,需要第一个与后面的li的class是不一样的。因此,我们需要用到一个判断。很好,科讯支持。判断代码如下:



  1. {$IF("{$AutoID}"=1||active||normal)}



{$AutoID}是自动+1赋值。前面的总循环也用到了。1f 2f 3f 这样的楼层就是用的这个。在这里用做判断。



当{$AutoID}=1的时候,就是active的样式。否则,就是normal样式。



注意,大小写不能错。错了就不行。为这个大小写我折腾了半个小时。靠。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 21:18:00   | 显示全部帖子 查看该作者主题 8楼 
科汛智能建站系统

首页大循环内切片内容外框的制作



查询语句如下:

  1. SELECT TOP 5 ID,FolderName,TN FROM KS_Class Where TN='{$Param(0)}' ORDER BY Root,FolderOrder



循环语句如下:



  1. [loop=5]

  2. <div id="tab{$Field(TN,Num,0,2)}_{$AutoID}" class="{$IF("{$AutoID}"=1||tab_black||tab_none)}"><ul>{SQL_首页大循环内容列表({$Field(ID,Text,0,...,0,)})}</ul></div>[/loop]



其实这个,和上面的代码差不多。都是查询子栏目。不过在这里,增加了一个首页大循环内容列表的子栏目内容的SQL标签。



当然,这里也加了判断代码

  1. {$IF("{$AutoID}"=1||tab_black||tab_none)}



和上面的判断代码,其实是一样的。当=1时,给一个样式。不是则给另一个样式。



下面就是最最关键的了。见证奇迹的时刻。



 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 21:27:15   | 显示全部帖子 查看该作者主题 9楼 
科汛在线考试系统(NET)

首页大循环内容列表的制作



如果子栏目下没有子栏目的查询语句:



  1. select top 10 ID,Tid,Title,Adddate,Hits,Intro,PhotoUrl,KS_jiage from KS_U_cpxt where tid='{$Param(0)}' order by Adddate desc



其实这没什么难度,懂SQL标签的都能做出来的。但是,如果这样的话,就没必要发教程了。我遇到的是一个无比变态的网站——有1500多个产品栏目。也就是说,在这些子栏目下面,居然还有子栏目。那么,用上面的这个就无法办到了。



怎么办呢?这个问题困扰了我一整天。因为我不懂程序代码,所有的东西都是靠逻辑推理。但是,不重要,我朋友多嘛。在找了一个ASP程序员朋友帮忙之下,我解决了这个问题。其实,在他看来这个问题不难。但是他没用过科讯CMS系统,因此,我和他解释这个问题花了2个小时



最终,是使用了跨表查询的方法,解决了这个查询语句,代码如下:



  1. select top 10 KS_U_cpxt.ID,KS_U_cpxt.Tid,KS_U_cpxt.Title,KS_U_cpxt.Adddate,KS_U_cpxt.Hits,KS_U_cpxt.Intro,KS_U_cpxt.PhotoUrl,KS_U_cpxt.KS_jiage,KS_Class.ID as KS_Classid,KS_Class.TN from KS_U_cpxt,KS_Class  where TN='{$Param(0)}' and KS_Class.ID=KS_U_cpxt.TID  order by Adddate desc



需要注意的是,因为class表中,和我自建的cpxt表中,都有一个字段,叫做ID,所以导致我弄了半天还是出错。最后加了改名,才得意成功。就是KS_Class.ID as KS_Classid这句。





循环代码如下:



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

  2. <img src="{$Field(PhotoUrl,Text,0,...,0,)}" alt="{$Field(Title,Text,0,...,0,)}" />
  3. <span>{$Field(Title,Text,0,...,0,)}</span>
  4. <em>价格:<strong>¥ {$Field(KS_jiage,Text,0,...,0,)}</strong></em>
  5. </a></li>
  6. [/loop]



好了。问题解决了。其实,关键的关键,是最后的这个跨表查询。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
孤风大虾 当前离线

1700

主题

7

广播

118

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

用户积分:10218 分
登录次数:451 次
注册时间:2006/3/28
最后登录:2022/3/10
孤风大虾 发表于:2013/11/4 21:31:55   | 显示全部帖子 查看该作者主题 10楼 
科汛在线商城系统(NET)

本教程献给科讯官方。献给所有热爱科讯CMS的朋友们。这个教程有些生涩。如果不仔细研究很容易看晕。仅献给有耐心研究科讯SQL标签的朋友们。客户的站,演示地址不发了。希望大家多多学习多多努力。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.23438秒 powered by KesionCMS 9.0