在网站建设与内容管理系统(CMS)开发中,Dedecms 是一个非常流行的工具。然而,在使用 Dedecms 的过程中,有时会遇到一些技术问题,比如万能标签 loop 无法正确显示 URL。本文将详细介绍如何解决 Dedecms 中万能标签 loop 不能输入 URL 的问题。
首先,我们需要了解什么是万能标签 loop。loop 标签是 Dedecms 提供的一个功能强大的标签,可以用于调用任意表的数据。正因为它的灵活性,被称为“万能标签”。但在实际应用中,我们可能会发现 arcurl 属性为空,这意味着 URL 没有被正确生成,从而导致标签失效。
官方对 loop 标签的说明如下:
标签名称: loop
功能说明: 调用任意表的数据标签
适用范围: 全局标记
基本语法:

{dede:loop table='dede_archives' sort='' row='4' if=''}
[field:title/]
{/dede:loop}
    
标签属性:
table:查询表名
sort:用于排序的字段
row:返回结果的条数
if:查询的条件
示例:

{dede:loop table='dede_archives' sort='' row='4' if=''}
[field:title/]
{/dede:loop}
    
输出结果:
你好dedecms
从输出结果可以看出,URL 地址为空,这使得标签失去了意义。为了解决这个问题,我们可以按照以下步骤进行修改:
1. 打开 include/common.func.php 文件,找到第 54 行,在这里添加一个函数代码如下:

function IDReturnURL($ID)
{
    global $dsql;
    $query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,
    tp.defaultname,tp.namerule,tp.moresite,tp.siteurl,tp.sitepath
    from dede_archives arc left join dede_arctype tp on arc.typeid=tp.id where arc.id = ".$ID;
    $row = $dsql->GetOne($query);
    $ReturnURL = 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']);
    return $ReturnURL;
}
    
2. 修改模板中的调用方式,代码如下:

{dede:loop table='dede_archives' sort='' row='4' if=''}
  • ·[field:title function=cn_substrR(@me,44)/]
  • {/dede:loop}
    经过以上两步操作,您就可以成功解决 Dedecms 中万能标签 loop 不能输入 URL 的问题。通过这种方法,您可以确保所有链接都能正常工作,从而提升用户体验和网站的专业性。