栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > dedecms

织梦标签loop和sql里面的arcurl由动态变静态开发教程

dedecms 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

织梦标签loop和sql里面的arcurl由动态变静态开发教程

这是什么意思呢?我们知道在织梦系统里面标签调用时,最历害的二个标签就是loop和sql了,这两个可以调用织梦系统里面几乎任意表中的数据。

 

下面将以loop标签为例子:

例如:

{dede:loop table='dede_archives' orderway='asc' row='1' if='shorttitle=1'}

[field:title/]

{/dede:loop}

上面这个标签调用一条,条件为shorttitle=1的文章内容,是在表dede_archives里面调用的。

  但是,调用出来的结果是:织梦教程网

  也就是说无论用loop 还是用sql调出来的链接都是空的,如果这样的话,这两个标签就没有意义了。

 

所以,织梦官方这样给出这样的标签调用:

{dede:loop table='dede_archives' orderway='asc' row='1' if='shorttitle=1'}

[field:title/]

{/dede:loop}

结果是:织梦教程网

我们不希望在首页调用出来的内容是动态(动态链接是/plus/view.php?aid=1)的,这样可能对seo不好,因为,多了这个链接后,同样一篇文章可能让百度收录二次,可能让百度认为是我们作弊,懂seo都知道。

 

现在我们的目标是把底层模板[field:arcul/]的调用,跟在标签{dede:arclist}调用出来一样,即调用出来的是静态的。

例如,织梦教程网

经过我的研究,既然是用loop就改他的标签源码文件: loop.lib.php

  在这个文件里面找到这样一行代码:$dsql->SetQuery("SELECt * FROM $tablename $ifcase $sort LIMIT 0,$row");

  注释掉(或删除掉)

  然后,加上下面这行代码:    

$dsql->SetQuery("SELECt arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,

 tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath

 FROM `$tablename` arc LEFT JOIN `dede_arctype` tp on arc.typeid=tp.id

      $ifcase $sort LIMIT 0,$row");

  然后,

在代码:

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

    {

里面加上下面这行代码:

$row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],               $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);

保存!

 

  现在再来使用用标签:

{dede:loop table='dede_archives' orderway='asc' row='1' if='shorttitle=1'}

[field:title/]

{/dede:loop}

  结果是:

织梦教程网

已经变成静态的了。

如果您想使用{dede:sql}标签里面的[field:arcurl/]也变成静态的,处理方法完全一样,这里不再重复。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/7723.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号