在网站开发中,尤其是在使用DedeCMS进行内容管理时,可能会遇到这样一个问题:当模板经过二次开发后,每个栏目都能上传相应的图片。但有时,一个栏目的顶级和二级栏目会共用同一张图片。在这种情况下,我们希望只需在顶级栏目上传一张图片即可,而无需为每个二级栏目重复上传相同的图片。接下来,我们将介绍一种方法,通过修改代码实现调用顶级栏目图片的功能。
首先,在include/common.func.php文件的最下方加入以下代码:

// 获取顶级栏目图片
function GetTopTypeimg($id) {
    global $dsql;
    $row = $dsql->GetOne("SELECT typeimg,topid FROM dede_arctype WHERE id= $id");
    if ($row['topid'] == '0') {
        return $row['typeimg'];
    } else {
        $row1 = $dsql->GetOne("SELECT typeimg FROM dede_arctype WHERE id= $row[topid]");
        return $row1['typeimg'];
    }
}
    

上述代码的作用是定义一个名为GetTopTypeimg的函数,该函数接收一个参数$id,表示当前栏目的ID。函数内部通过查询数据库中的dede_arctype表来获取栏目图片(typeimg)和顶级栏目ID(topid)。如果当前栏目的顶级ID为0,则说明当前栏目是顶级栏目,直接返回其图片路径;否则继续查询顶级栏目的图片路径并返回。
完成以上步骤后,在模板中可以使用如下标签来调用顶级栏目的图片:

{dede:field name='typeid' function="GetTopTypeimg(@me)"/}
    

此标签将自动调用我们之前定义的GetTopTypeimg函数,并传入当前栏目的ID作为参数。这样,无论访问的是顶级栏目还是其下的任何子栏目,都会显示顶级栏目的图片,从而避免了重复上传相同图片的问题。
通过这种方式,不仅简化了操作流程,还提高了网站维护效率,让您的DedeCMS站点更加灵活和易于管理。同时,请确保在进行任何更改之前备份原始文件,以防万一出现错误可以迅速恢复原状。