加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > CMS系统 > Dedecms > 正文

dede中arcurl的解析

发布时间:2020-12-14 04:08:50 所属栏目:Dedecms 来源:网络整理
导读:有时候我们需要在dede中通过$dsql查询出文章数据,并生成文章的地址。 但是dede默认的dede_archives和附加表dede_addonarticle都没有存放arcurl的字段。 说明arcurl是动态生成的,通过/include/helpers/channelunit.helper.php文件中的GetFileUrl函数来获取
有时候我们需要在dede中通过$dsql查询出文章数据,并生成文章的地址。
但是dede默认的dede_archives和附加表dede_addonarticle都没有存放arcurl的字段。
说明arcurl是动态生成的,通过/include/helpers/channelunit.helper.php文件中的GetFileUrl函数来获取的。
?
例如:
<?php
require_once (dirname(__FILE__) . "/include/common.inc.php");

$siteUrl = 'http://www.xxx.com';

//我们获取所有文章数据
$sql = 'SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath FROM `dede_archives` AS arc LEFT JOIN `dede_arctype` AS tp ON arc.typeid=tp.id WHERE arc.ismake=1 AND arc.arcrank=0 ORDER BY arc.id';
$dsql->Execute('me',$sql);

while($row = $dsql->GetArray('me')) {
    $artUrl = $siteUrl . 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']);
    echo '<a href="' . $artUrl . '">' . $row['title'] . '</a>';
}
通过GetFileUrl函数我们就可以获取到文章的地址。

当我们使用dede的loop标签时,该标签不支持[field:arcurl/],这时候我们只能创建自定义一个函数来获取文章链接。
在include/extend.func.php下面添加我们自定义的函数,如下:
function getArtUrl($arcId) { 
    global $dsql; 
    $sql = "SELECT arc.*,tp.sitepath FROM `dede_archives` AS arc LEFT JOIN `dede_arctype` AS tp ON arc.typeid=tp.id WHERE arc.id={$arcId}"; 
    $row = $dsql->GetOne($sql); 
    $artUrl = GetFileUrl($row['id'],$row['sitepath']);
    return $artUrl; 
}
{dede:loop table='dede_archives' sort='' row='4' if=''}
    <a href="[field:id function='getArtUrl(@me)'/]">[field:title function='cn_substr(@me,42)'/]</a>
{/dede:loop}

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读