今天,我们就来深入的真正了解织梦强大的标签内核。

但是,你甭管我说得天花乱坠,涉及到了内核,以外难度非常之大,肯定学不会。其实不然,今天我们要讲的也只是织梦的两个调用标签而已,只是更为灵活,更为强大而已。今天的内容主要是:

万能循环标签(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)标签相关推荐

  1. mysql distinct多个字段_深入浅出Mysql索引的那些事儿

    一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 在数据 ...

  2. mysql 不会联想字段_你有没有被MySQL的这个bug坑过?

    问题描述 近期,线上有个重要Mysql客户的表在从5.6升级到5.7后,master上插入过程中出现"Duplicate key"的错误,而且是在主备及RO实例上都出现. 以其中一 ...

  3. mysql update多个字段_常见的MySQL命令大全fourth

    1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2.创建一个数据库MYSQLDATA mysql> Create DATABASE ...

  4. mysql拼接两个字段_重拾MySQL之创建计算字段和函数

    一.计算字段 有时候,数据库中的数据格式不一定是使用所需要的数据格式,需要对原数据进行拼接.裁剪.计算等操作,这时就要创建计算字段. 1 拼接 顾名思义,拼接就是将原属于表中两个列的字段拼成一个列,在 ...

  5. java mysql修改表结构字段_【开发技术】java+mysql 更改表字段的步骤

    1).首先通过SQL更改MYSQL库中的表结构(下面是一些例子) ALTER TABLE `illegalactivate` ADD `macethaddress` varchar(250)  NOT ...

  6. mysql子查询多字段_(mysql)多个字段需要子查询,求优化

    问个问题,(MySQL)A表的字端有code_name,code_id,code_field,另一表B表有很多属性,例如国籍,籍贯等等,国籍子查询查法为select code_name form A表 ...

  7. mysql 日期减10分钟_获取当前时间减去10分钟的话SQL语句怎么写

    获取当前时间减去10分钟的话SQL语句怎么写 Mysql日期和时间函数不求人 本文出自:http://linuxdb.yeah.net 作者: 晏子 (2001-07-05 15:00:00) 对于每 ...

  8. sql distinct多个字段_数据分析|记一“道”难忘的SQL面试题...

    最近被一个简单的SQL问题吊打,强颜欢笑 好了正文开始 一问:SQL中的 group by 和 distinct 了解吗,简单介绍一下? 了解了解,"Group By"从字面意义上 ...

  9. java跨库调用存储_存储库仅在第二个调用数据时发送回ViewModel

    问题: My Fragment仅在第二次调用时获取数据(例如,当我旋转屏幕时) . 在我看来,这些代码行是repo类中的问题: public class UserRepository { privat ...

最新文章

  1. cf559C. Gerald and Giant Chess(容斥原理)
  2. es-04-mapping和setting的建立
  3. 一键去除网页BOM属性【解决乱码,头部空白,#65279问题】
  4. 高性能、高并发TCP服务器(多线程调用libevent)
  5. AngularJS:模型
  6. Chrome用户想哭:因重大缺陷成黑客取款机
  7. 在linux下做源码免杀,Cobaltstrike免杀从源码级到落地思维转变
  8. oracle复杂密码,如何配置 Oracle 11g 复杂密码校验设置
  9. php 打印请求体,php如何获取原生请求体
  10. [CF55D]Beautiful Number 题解
  11. linux下的5个查找命令
  12. LwIP 协议栈之 udp 协议解析
  13. matlab计算涡度的函数_流函数涡量法的二维方腔流数值模拟matlab编程.doc
  14. M. Bottle Arrangements
  15. TCP粘包/拆包问题
  16. PyTorch grad 与 Optimizer(params) 区别
  17. 【文本展开收起】uniapp—实现文本的展开与收起功能
  18. 将Edgex网关接入Thingsboard物联网平台
  19. DBA平均月薪17000,入职3年感叹这份工作实在是太难了!
  20. SAM(segment anything model)分割一切 Demo测试及API调用

热门文章

  1. 阿里获取银行卡信息接口
  2. 2018/12/22 JSJ_JC_03
  3. Linux中netstat -anp命令
  4. 85程序锁的工作原理
  5. JavaScript中Unicode编码和中文相互转换
  6. 免费电子书下载网站,不来白嫖一波
  7. Android移动开发:第一章Android系统概述
  8. Asus Eee Pc,看起来很不错
  9. GAN-GP(Gradient Penalty)
  10. 刚刚开始学C语言的懵懂