900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 织梦DedeCMS使用sql语句调用文章静态链接地址的方法

织梦DedeCMS使用sql语句调用文章静态链接地址的方法

时间:2018-08-20 12:19:57

相关推荐

织梦DedeCMS使用sql语句调用文章静态链接地址的方法

本文实例讲述了DedeCMS使用sql语句调用文章静态链接地址的方法。分享给大伙供大伙参考。具体分析如下:

很多时候用织梦后台调用数据的时候,自带的标签很多时候都没办法调用要的数据,因此要自己写sql去调用,以前有个问题搞了两天都没搞出来,后来看到下面这个文章,问题解决了.

使用DedeCMS这个程序建站有五年多的时间了,期间建了不少网站,欢迎各位朋友找建站.

补充:

发布这篇文章后,无意间发现在了DedeCMS的GetOneArchive,只要传入一个文档id就可以获得文章链接了,其实这个函数返回的的文章信息数组包含了:链接地址,标题,文章ID,栏目ID,这里只需要文章链接地址,具体代码如下:

代码如下:

{dede:sql sql="select * From dede_archives a where a.title like \%织梦建站% and a.arcrank>-1 limit 8"}<li><a title="[field:title/]" href="[field:id runphp=yes]$url=GetOneArchive(@me);@me=$url[arcurl];[/field:id]">[field:title runphp=yes]@me=cn_substr(@me, 50);[/field:title]</a></li>{/dede:sql}

如果你仅仅需要调用文章的链接地址该方法不失为一个快捷的方法,文章下部分介绍的方法较为复杂,但如果你想调用文章链接地址的同时还想调用栏目名称不妨试下.

为什么要使用dede:php,dede:sql

在一些比较复杂的调用中用dede:arclist标签是解决不了问题的,比如说大伙常说的调用某一会员发布的文章等等之类,这些一般要通过dede:sql标签来实现.

所说的调用也是比较特殊的就是在首页调用指定关键字的文章,其实这个跟DedeCMS的相关文章标签类似,这里给大伙分享两种方法.

dede:sql标签调用指定关键字文章静态地址,这里引用DedeCMS官方关于dede:sql的介绍.

Sql标记

功能说明:用于从模板中用一个SQL查询获得其返回内容。

适用范围:非扩展模块所有模板。

(1)语法:{dede:sql sql=”这里写sql语句”}底层模板{/dede:sql}

(2)属性:[1] sql 完整的SQL查询语句。

(3)底层模板:SQL语句中查出的所有字段都可以用[field:字段名/]来调用。

好了了解dede:sql标签后,就可以根据自己的需求写sql语句了,这里是要调用指定关键字的文章,sql语句如下:

代码如下:”select * From dede_archives a where a.arcrank>-1 and a.title like ‘%脚本%’ limit 8″

语句解析:a.arcrank>-1限制调用已审核的文章;like ‘%脚本%’调用指定关键字的文章;limit 8为调用条数为8条

然后就开始写完整的标签和底层模板了,如下:

1 | 首先解决完整标题和截字问题:使用的是[field:title runphp=’yes’]@me=cn_substr(@me, 50);[/field:title]这种方法相信大伙也经常用到,这里就不多作介绍了,以后可能会专门弄个文章介绍这种用法。50就是截字长度

2 | 解决dede:sql标签静态文章地址问题:这里比较麻烦了,在网上转了一下,多数给出的解决办法就是href=”/plus/view.php?aid=[field:id/]”,显然这不是想要的这不是静态地址,而其他地址用arclist调用的又是静态地址,结果就成了一篇文章有两个地址一个静态一个动态,这对seo来说显然不友好,最好通过自己折腾终于成功了

3 | 解决id不能正确获取的问题:以前没注意到因为dede_arctype和dede_archives两个表id字段名是一样的,以至于底层模板获取不到正确的id,以前select改了下,增加了别名。

dede:sql调用文章静态链接地址的完美方法

代码如下:

{dede:sql sql="select * From dede_archives a, dede_arctype t where a.typeid = t.id and a.title like \%生活小窍门% and a.arcrank>-1 limit 8"}<li><a title="[field:title/]" href="[field:array runphp=yes] @me=GetFileUrl(@me[id],@me[ ypeid],@me[senddate],@me[ itle],@me[ismake],@me[arcrank],@me[ amerule],@me[ ypedir],@me[money]); [/field:array]">[field:title runphp=yes]@me=cn_substr(@me, 50);[/field:title]</a></li>{/dede:sql}

不管怎么说总算还是实现了想要的效果,后来想了想用dede:php标签如何实现这个效果呢,其实方法和dede:sql标签是一样的,也就不多说什么了,直接贴代码:

代码如下:

{dede:php}$dsql->SetQuery("select a.id as aid, t.id as tid,typeid,senddate,title,ismake,arcrank,namerule,typedir From dede_archives a, dede_arctype t where a.typeid = t.id and a.title like \%生活小窍门% and a.arcrank>-1 limit 8");$dsql->Execute();while($row = $dsql->GetArray()){echo <li><a title=".$row[ itle].\" href=".GetFileUrl($row[aid],$row[ ypeid],$row[senddate],$row[ itle],$row[ismake],$row[arcrank],$row[ amerule],$row[ ypedir],$row[money]).\">.cn_substr($row[ itle], 50).</a></li>;}{/dede:php}

希望本文所述对DedeCMS建站有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。