目录
一、内容回顾
1、主要的表
dede_channeltype表:存储dedecms里面的内容模型
dede_archives表:存储数据内容公有的一些信息。
dede_addonxxxx表:存储模型数据都有的一些信息。
dede_arctype表:存储创建的栏目。
2、使用 cms系统完成项目的流程
(1)创建模型,每一个模型对应一张附加表。
(2)创建栏目,
(3)添加数据内容,
(4)制作模型,完成替换,使用标签取出数据
(5)生成静态页面,主页,列表页面,内容详情页面。
3、标签
{dede:channel}标签:取出栏目的数据,查询的表是,dede_arctype表
{dede:arclist}标签:获取具体的数据内容,查询的表是dede_archives(内容主表)和dede_addonxxx(附加表)
channeled=”” 属性是:通过该属性决定要读取哪个模型里面的数据,也就是确定哪张附加表。
addfields=”” 要获取附加表里面的字段内容,
4、模板与静态页面的关系
静态页面通过模板生成的。
扩展:
取出具有幻灯(f)属性的数据,
条件:flag里面具有f的字样。
select * from dede_archives where flag like ’%f%’;
select * from dede_archives where find_in_set(‘f’,flag)>0
find_in_set(‘f’,flag) 返回值是查找字符串所在父字符串的位置,从1开始数的。
在mysql里面是以instr(母字符串,子字符串)函数,返回值子字符串在母字符串的位置,从1开始计算。
二、完成如下数据的取出
思考:取出的具体数据内容,使用的标签是,arclist标签。
思考:有没有取出附加表里面的数据,如果有,使用channelid=”” addfields=”附加表字段
取出数据的个数:使用row=”4”
知识点1:
字段标签:[field:global.autoindex/] 类似于在循环中使用$i=1; <?php echo $i++ ?>
该字段标签,在循环中使用,每循环一次自动加1输出。
知识点2:
在dede里面标签是不能够嵌套的,比如
{dede:arclist}
{dede:global.cfg_templets_skin/}/images/1.jpg
{/dede:arclist}
无法解析{dede:global.cfg_templets_skin/}内容。
解决方案:如果标签被嵌套,则改成字段标签即可
{dede:global.cfg_templets_skin/}改成 [field:global.cfg_templets_skin/]
语法:[field:字段名称 function=”函数名称(@me)”]
如果想要使用自定义函数,需要在一个文件中定义好。该文件在 include目录下面,文件名为:extend.func.php文件
比如在extend.func.php文件中定义如下函数:
在标签中使用:
最后输出结果:
案例:根据分数显示金星的个数
在模板页面中的代码:
在extend.func.php文件中定义的函数,
最后的结果:
三、完成评分值排序,
思考:使用的标签,arclist,使用属性 channeled=”” addfields=’pfz’
如何按照评分值进行排序。
通过在标签文件中,输出sql语句:
通过分析发现,在sql语句中,
dede_archives的别名是:arc
dede_arctype的别名是tp
dede_addonxxx别名是:addf
修改:arclist.lib.php页面,添加代码,支持根据评分值排序。
知识点:在字段标签里面可以使用简单的业务逻辑,
语法使用:
[field:字段名称 runphp=”yes”]
if(@me>=6){
$me=’优秀’
}
该字段标签最后输出的内容,是通过业务逻辑处理的结果。
案例:根据评分值排序,前3名添加class=”hove”样式:
具体的代码:
最后的结果:
总结:在字段标签里面可以使用的参数:
(1)可以在字段标签里面使用函数,最后字段标签里面输出的内容是,函数处理结果的返回值。该函数可以使用系统函数,也可以自己定义,如果要自己定义则必须在include目录下面的extend.func.php文件中。
(2)字段标签:[field:global.autoindex/],在循环中使用,每循环一次自动加1
(3)字段标签里面可以是简单的业务逻辑,通过使用runphp=”yes”,最后该字段标签输出的内容,是业务逻辑处理的结果。
四、输出电影的子栏目。
思考:取出的是栏目数据,channel标签