织梦DedeCMS确实是非常强大的系统,No牛网以前也分享了很多自己在使用织梦时遇到的一些问题及其解决办法。下面是要分享在Dede系统里面,如何使用SQL语句来配合织梦标签进行更多的个性化调用。如织梦整合Discuz论坛、Wordpress程序等其他程序,织梦都可以使用SQL标签调用其他程序的数据,这个是非常适合进行系统整合的。
以下都是一些Dede(织梦)系统利用sql语句调用相关标签的代码。调用的代码基本格式为:
{dede:sql sql='select 字段 From 数据库名.表名称 where 条件语句'}[field:字段名/]{/dede:sql}
举例,调用文档列表的代码
{dede:sql sql='select * From dede_archives where typeid=1 limit 10'}[field:title/]{/dede:sql}
说明:如果是在相同数据库内不需要加数据库名称,否则就要在表名称前面加”数据库名.”,比如“dedecms.dede_archives”;如果不指定调用哪个栏目的文章则去掉“where typeid=1”;如果调用多个栏目的文章则代码格式为“where typeid=’1′ or typeid=’2′ ”;用order by id desc 可以设列表排序,by id表示按id从大到小排列,这个语句用的时候加在 表名称后面, limit 10表示调用最新的10条文档,可以自由设定调用的数量。
以上调用出来的文档的链接为动态链接,如果调用静态链接地址,代码格式为:
{dede:sql sql="SELECT * FROM dede_archives limit 10"}[field:title function=cn_substr(@me,30,0)/]{/dede:sql}
以上代码经No牛网测试过能够调用处本系统内的文章以及静态调用地址,但是如果是多个dede系统嵌套的话,可以调用处文章标题,但是调不出静态地址,不晓得大家有什么其他好主意不?不过能够调出来了文章的id,只要你的文章命名命的好,可以通过id调用处静态地址。
调用提问标题和提问内容:
{dede:sql sql='Select * from dede_ask where status=1 order by id desc limit 0,3'} [field:title function="cn_substr(@me, 10)"/] [field:content function="cn_substr(@me, 10)"/]… {/dede:sql}
调用提问标题和最佳答案:
{dede:sql sql='Select q.id,q.title,a.askid,a.ifanswer,a.content from dede_ask as q,dede_askanswer as a where q.status=1 and a.ifanswer=1 and q.id=a.askid and q.bestanswer=a.id order by q.id desc limit 0,3'} [field:title function="cn_substr(@me, 10)"/] [field:content function="cn_substr(@me, 10)"/]… {/dede:sql}No牛网还从网上找了一些其他标签调用的代码:
{dede:sql sql="select count(*) as c from dede_archives where channel=1"} 共有文章:[field:c /]篇 {/dede:sql} <!--共有文章:** 篇--> {dede:sql sql="select count(*) as c from dede_archives where channel=2"}· 共有图集:[field:c /]个 {/dede:sql} <!--共有图集:** 个--> {dede:sql sql="select count(*) as c from dede_archives where channel=3"} 共有软件:[field:c /]个 {/dede:sql} <!--共有软件:** 个--> {dede:sql sql="select count(*) as c from dede_feedback"} 共有评论:[field:c /]条 {/dede:sql} <!--共有评论:**条--> {dede:sql sql="select count(mid) as c from dede_member "} 共有会员:[field:c /]名 {/dede:sql} <!--共有会员:**名--> {dede:sql sql="select sum(click) as c from dede_archives"} 文章阅读:[field:c /]人次 {/dede:sql} <!--文章阅读:** 人次--> {dede:sql sql="SELECT count( * ) AS c FROM dede_archives WHERE pubdate > UNIX_TIMESTAMP( CURDATE( ) ) "} 今日更新:[field:c /]篇 {/dede:sql} <!--今日更新:**篇--> {dede:sql sql="select count(*) as cc From dede_guestbook"} [field:cc/] {/dede:sql} <!--总共留言:--> {dede:sql sql='Select * from dede_archives where mid=1'} <a href="/plus/view.php?aid=[field:id/]" target="_blank">[field:title/]</a> {/dede:sql} <!--调用某个特定会员发布的文章内容-->新增一点dede调用discuz最新主题等信息的SQL语句代码:
{dede:sql sql="SELECT` cdb_p_w_uploads`.`aid`, `cdb_p_w_uploads`.`p_w_upload`,`cdb_threads`.`tid`, `cdb_threads`.`fid`, `cdb_threads`.`subject` FROM `cdb_p_w_uploads` LEFT JOIN `cdb_threads` ON `cdb_threads`.`tid`=`cdb_p_w_uploads`.`tid` WHERE `cdb_p_w_uploads`.`readperm`='0' AND `displayorder`>='0' AND `filetype`='p_w_picpath/pjpeg' GROUP BY tid LIMIT 0,2"} <ul class=" list-paddingleft-2" style=""> <li> <p> <a href="/bbs/viewthread.php?tid=[field:tid /]"> <img src="[field:p_w_upload/]"> </a> </p> </li> <li> <p> <a href="/bbs/viewthread.php?tid=[field:tid /]"> [field:subject function="cn_substr('@me',30)" /] </a> </p> </li> </ul> {/dede:sql} <!--调用discuz论坛带图片的帖子--> {dede:loop table="cdb_threads" sort="tid" row="10"} <a href="/dz/viewthread.php?tid=[field:tid /]"> [field:subject function="cn_substr('@me',30)" /]([field:lastpost function="date('m-d H:M','@me')" /]) </a> <br> {/dede:loop} <!--调用论坛最新主题-->
HTML注释内容为SQL标签的注释内容,解释该SQL标签的作用
在No牛网的一篇织梦DedeCMS常用SQL语句整理的文章中,就说到了织梦自带SQL工具的使用。其实可以跟织梦的SQL标签结合起来使用,实现非常强大的功能。织梦系统本身已经非常强大了,特别是SQL标签对整合其他系统程序来说,是非常强大的功能。