在构建基于 DEDECMS 的网站时,调用当前文档地址的功能对于优化用户体验和搜索引擎优化(SEO)至关重要。本文将详细介绍如何通过修改 DEDECMS 核心文件来实现这一功能。

首先,确保您正在使用的是 DEDECMS 2007 版本。虽然 DEDECMS 提供了丰富的标签调用功能,但有时我们可能需要自定义某些功能,例如获取当前文档的完整 URL 地址。

为了实现这一目标,我们需要对 include/inc_archives_view.php 文件进行修改。以下是具体步骤:

1. 打开 include/inc_archives_view.php 文件。
2. 查找以下代码段:


//————————–
//获取上一篇,下一篇链接
//————————–
function GetPreNext($gtype=''){
    $rs = "";
    if(count($this->PreNext)<2){
        $aid = $this->ArcID;
        $next = " xkzzz_archives.ID>'$aid' And xkzzz_archives.arcrank>-1 order by xkzzz_archives.ID asc ";
        $pre = " xkzzz_archives.ID<'$aid' And xkzzz_archives.arcrank>-1 order by xkzzz_archives.ID desc ";
        $query = "Select xkzzz_archives.ID,xkzzz_archives.title,
        xkzzz_archives.typeid,xkzzz_archives.ismake,xkzzz_archives.senddate,
        xkzzz_archives.arcrank,xkzzz_archives.money,
        xkzzz_arctype.typedir,xkzzz_arctype.typename,xkzzz_arctype.namerule,xkzzz_arctype.namerule2,
        xkzzz_arctype.ispart,
        xkzzz_arctype.moresite,xkzzz_arctype.siteurl
        from xkzzz_archives left join xkzzz_arctype on xkzzz_archives.typeid=xkzzz_arctype.ID
        where ";
        $nextRow = $this->dsql->GetOne($query.$next);
        $preRow = $this->dsql->GetOne($query.$pre);
        if(is_array($preRow)){
            $mlink = GetFileUrl($preRow['ID'],$preRow['typeid'],$preRow['senddate'],$preRow['title'],
            $preRow['ismake'],$preRow['arcrank'],$preRow['namerule'],$preRow['typedir'],
            $preRow['money'],true,$preRow['siteurl']);
            $this->PreNext['pre'] = "上一篇:{$preRow['title']} ";
        }
        else{
            $this->PreNext['pre'] = "上一篇:没有了 ";
        }
        if(is_array($nextRow)){
            $mlink = GetFileUrl($nextRow['ID'],$nextRow['typeid'],$nextRow['senddate'],
            $nextRow['title'],$nextRow['ismake'],
            $nextRow['arcrank'],$nextRow['namerule'],$nextRow['typedir'],
            $nextRow['money'],true,$nextRow['siteurl']);
            $this->PreNext['next'] = "下一篇:{$nextRow['title']} ";
        }
        else{
            $this->PreNext['next'] = "下一篇:没有了 ";
        }
    }

3. 在找到的代码段之后,添加以下代码以支持获取当前文档地址:


function GetCurrentUrl() {
    $currentUrl = '';
    if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
        $currentUrl .= 'https://';
    } else {
        $currentUrl .= 'http://';
    }
    $currentUrl .= $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    return $currentUrl;
}

4. 保存并关闭文件。

接下来,在模板文件中调用此函数。例如,在文章页面中插入以下代码:


当前文档地址:{GetCurrentUrl()}

这样,您就可以在每个文档页面显示其完整的 URL 地址,这对于 SEO 和分享功能非常有用。

注意:在进行任何核心文件修改之前,请务必备份原始文件,以防万一出现问题可以快速恢复。

希望这篇教程能帮助您更好地利用 DEDECMS 的强大功能!如果您有任何疑问或需要进一步的帮助,请随时联系技术支持团队。


空格示例:这里有一个 空格。