概述
今天,我们就来深入的真正了解织梦强大的标签内核。
但是,你甭管我说得天花乱坠,涉及到了内核,以外难度非常之大,肯定学不会。其实不然,今天我们要讲的也只是织梦的两个调用标签而已,只是更为灵活,更为强大而已。今天的内容主要是:
万能循环标签(loop)
万能调用标签(SQL)
1)万能循环标签(Loop)
所谓万能循环标签,听这个名字就知道,主要是用于循环的列表标签,他的调用结果通常和(arclist)与(list)这样的列表标签类似。但由于它的名称是万能循环,所以,他的范围更加广泛,广泛到是万能,是任意表而已。
那么我们前面说接触的arclist这些难道不是任意吗?答案是否,他的表仅仅是主表(dede_archives)与附加表(dede_addon***)而已,并且要想索引附加表,我们还需要进行其它的一些设置,获是后台,或是标签参数。我在前面也提到了一句话:
arclist的底层模板请用[field:字段名/]调用,其中字段名的取值范围为主表及相关附加表的所有字段。
说到这里,应该就基本能明白了万能循环标签(loop)与其它的一些列表标签的区别之处了。
那么,loop标签的调用格式是什么样的呢?
你首先得明白,loop标签它也是一个Dede标签之一,所以它的调用方式也只能是我们两种调用标签的其中一个,因为它是一个具有底层模板的循环列表标签。故loop标签的调用基本格式为:
{dede:loop 参数='值' ...}
底层模板(insertext)
{/dede:loop}
相信大家看到这里,就等不及的需要知道它到底有那些参数了。
table='' 表示要索引的表(数据库字典)
row='' 表示要循环的次数
sort='' 表示用于排序的字段
if='' 表示附加的条件(SQL语句中的where后面的内容)
大家看看,loop标签就只有这4个参数。
它的底层字段也是和前面一样用[field:字段名/]表示,但字段名的取值范围为参数table的所有字段。
我们来调用一个实例:
调用网站热门文章10条且浏览量必须大于80个点击:
{dede:loop table="dede_archives" sort="click" row="10" if="click
> 80"}
[field:title/]
{/dede:loop}
解释一下:table="dede_archives" 表示要索引的是主表;sort="click"
表示按照点击数(click)从大到小排序;row="10" 表示调用10条;if="clcik >
80" 表示点击数(click)大于80;
底层模板显示的就是字段title的内容,这个呢,我们在前面说过,主表(dede__archives)的title字段表示的是文章的标题。
好,我们来看看上一段代码在实际运用中的显示效果:
如果您以为Loop标签只是用来调用主表的最新、热门文章什么的?那你就错了,您主要要理解的是loo标签它可以索引同数据库下的所有的表的循环。比如可以调用整合后的UCHome、Discuz!的数据,甚至可以调用同数据库下的其它CMS数据,比如wordpress、phpcms、帝国CMS等等,只要它满足:①同数据库;②是MySQL;③有数据。那么loop标签几乎都可以为您完成。
但是,loop标签也有其缺陷,比如无法实现按从小到大排序,更无法实现同时关联多表的操作。
在这时,我们另一个比Loop标签更为强大的SQL标签就可以出来替您摆平这件事儿了,不过,前提是:您得先学会它!
2)万能调用标签(SQL)
在正式开始讲解SQL标签之前,我得先告诉大家一个动态网站运行的一个简单原理:
动态网站的核心就是数据库,所谓数据库就是我们存储数据的一个东西,跟仓库差不多
。在前台注册、登陆、评论或后台编辑文档、添加栏目等等这些操作其实就是对数据库的操作,而数据库的操作无外乎就是以下四种:
增加数据(Insert )
修改数据(Update)
查询数据(Select)[我们常说的索引也是这个东西]
删除数据(Delete)
比如,我们后台增加栏目,增加友情链接等等这个操作就属于insert ; 编辑栏目、修改文档等等这类的就属于Update操作;
而文档列表、栏目列表这些我们能够看得见的就是Select后的操作;最后当我们要删除某个文档或是栏目的时候,其实就属于delete的操作了。
同理,我们在调用标签,实际上就是调用数据库内容,最后看见的其实也就是select后显示的东西。
所以,任何动态类型的网站,凡事涉及到调用什么的,这个是肯定没二话可说,就是select ,包括Dede系统的什么arclist
list 等等。
但是,现在仍然不是可以将SQL标签具体内容的时候,而是要先告诉您,SQL查询类(select)语句的一些基本知识:
查询格式为:
SELECT 列名称 FROM 表名称
这里的列名称您可以认为是表的字段,也就是:
SELECT 字段名 FROM 目标表
多个字段,请用半角英文状态的“,”分隔,如果要查询目标表的所有字段,可用通配符“*”表示:
SELECT 字段名1,字段名2,字段名3 FROM 目标表;
SELECT *,字段名3 FROM 目标表;
如果要设置查询条件,可在后面用where子句,比如:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
由此我们可得出一个结论:所有的标签其实都是通过SQL语句的select操作来实现查询的
比如,文档列表标签(arclist)的中的一个简单调用—— 调用整站热门图文8篇:
折叠XML/HTML
代码复制内容到剪贴板
{dede:arclistrow='8'orderby='click'flag='p'}
{/dede:arclist}
这个调用呢,其实它真正的SQL语句为:
折叠SQL
代码复制内容到剪贴板
select*fromdede_archiveswherearcrank > -1andfind_in_set('p',flag) >0orderbyclickdesclimit 0,8
那么就可以理解为:
织梦标签的各个参数就是SQL语句中的where的各个运算过程,多个的关系是“和”而不是“或”
好了,现在我们来看一下SQL标签的调用格式:
{dede:sql sql="完整的SQL语句"}
底层模板insertext
{/dede:sql}
从这里不难看出,SQL标签其实就一个参数:
sql='' 一条完整的SQL语句
它的底层字段就是sql语句中查询的所有表中的所有字段。
比如:调用推荐文档12篇:
折叠XML/HTML
代码复制内容到剪贴板
{dede:sqlsql="select * from dede_archives where arcrank > -1 and find_in_set('c',flag) >0 order by click desc limit 0,12"}
[field:title/]
{/dede:sql}
这里的SQL语句,大家可以学习相关的SQL语句的相关知识后任意发挥,真正达到万能的作用。
最后
以上就是跳跃大炮为你收集整理的mysql万能标签调用字段_万能循环(Loop)标签与万能调用(SQL)标签的全部内容,希望文章能够帮你解决mysql万能标签调用字段_万能循环(Loop)标签与万能调用(SQL)标签所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复