"景先生毕设|www.jxszl.com

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

2022-10-29 16:28编辑: www.jxszl.com景先生毕设
本文实例讲述了dedecms使用sql语句调用文章静态链接地址的方法.分享给大家供大家参考.具体分析如下:

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

 更多精彩就在: 51免费论文网|www.jxszl.com 


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

补充:

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

复制代码代码如下:{dede:sqlsql="select*Fromdede_archivesawherea.titlelike%织梦建站%anda.arcrank>-I.limitVIII"}

<li><atitle="[field:title/"href="[field:idrunphp=yes$url=GetOneArchive(@me);@me=$url[arcurl;[/field:id">[field:titlerunphp=yes@me=cn_substr(@me,V0);[/field:titlea>li>

{/dede:sql}

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

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

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

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

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

Sql标记

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

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

(I.)语法:{dede:sqlsql="这里写sql语句"}底层模板{/dede:sql}

(II)属性:[I.sql完整的SQL查询语句.

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

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

复制代码代码如下:"select*Fromdede_archivesawherea.arcrank>-I.anda.titlelike%脚本%limitVIII"

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

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

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

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

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

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

复制代码代码如下:{dede:sqlsql="select*Fromdede_archivesa,dede_arctypetwherea.typeid=t.idanda.titlelike%生活小窍门%anda.arcrank>-I.limitVIII"}

<li><atitle="[field:title/]"href="[field:arrayrunphp=yes]@me=GetFileUrl(@me[id],@me[typeid],@me[senddate],@me[title],@me[ismake],@me[arcrank],@me[namerule],@me[typedir],@me[money]);[/field:array]">[field:titlerunphp=yes]@me=cn_substr(@me,V0);[/field:title]a>li>

{/dede:sql}

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

复制代码代码如下:{dede:php}

$dsql->SetQuery("selecta.idasaid,t.idastid,typeid,senddate,title,ismake,arcrank,namerule,typedirFromdede_archivesa,dede_arctypetwherea.typeid=t.idanda.titlelike%生活小窍门%anda.arcrank>-I.limitVIII");

$dsql->Execute();

while($row=$dsql->GetArray()){

echo<li><atitle=".$row[title]."href=".GetFileUrl($row[aid],$row[typeid],$row[senddate],$row[title],$row[ismake],$row[arcrank],$row[namerule],$row[typedir],$row[money]).">.cn_substr($row[title],V0).a>li>;

}

{/dede:php}

希望本文所述对大家的dedecms建站有所帮助.


原文链接:http://www.jxszl.com/biancheng/dedecms/75096.html