这是什么意思呢?我们知道在织梦系统里面标签调用时,最历害的二个标签就是loop和sql了,这两个可以调用织梦系统里面几乎任意表中的数据。
下面将以loop标签为例子:
例如:
{dede:loop table='dede_archives' orderway='asc' row='1' if='shortTitle=1'}
{/dede:loop}
上面这个标签调用一条,条件为shortTitle=1的文章内容,是在表dede_archives里面调用的。
但是,调用出来的结果是:
也就是说无论用loop 还是用sql调出来的链接都是空的,如果这样的话,这两个标签就没有意义了。
所以,织梦官方这样给出这样的标签调用:
{dede:loop table='dede_archives' orderway='asc' row='1' if='shortTitle=1'}
{/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'}
{/dede:loop}
结果是:
已经变成静态的了。
如果您想使用{dede:sql}标签里面的[fIEld:arcurl/]也变成静态的,处理方法完全一样,这里不再重复。
总结
以上是内存溢出为你收集整理的织梦标签loop和sql里面的arcurl由动态变静态开发教程全部内容,希望文章能够帮你解决织梦标签loop和sql里面的arcurl由动态变静态开发教程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)