解决织梦cms调用顶级栏目问题function="GetTopTypename(@me)"

解决方法

找到include/common.func.php文件,打开编辑;

找到function GetTopTypename($id),将这个函数下面的dede_数据库前缀改成自己的数据库前缀;


思路整理:

后台中没有前端显示的词语,思考应该是在数据库中,然后在MySQL中搜索此词语,发现在原来的数据库dede_中,那么很明显是调用了这个数据库中的数据;

然后问题出现的地方是引用了这个函数:function="GetTopTypename(@me)",这是一个“在当前页面调用顶级栏目名称”的拓展函数,此函数如下:

//获取顶级栏目名
function GetTopTypename($id)
{
    global $dsql;
   
 $row = $dsql->GetOne("SELECT typename,topid FROM dede_arctype WHERE id= 
$id");
    if ($row['topid'] == '0')
    {
        return 
$row['typename'];
    }
    else
    {
        $row1 = 
$dsql->GetOne("SELECT typename FROM dede_arctype WHERE id= 
$row[topid]");
        return $row1['typename'];
    }
}
这里有两个地方引用了dede_数据库,将这两个改成自己的就OK了。

引起这个问题是因为我在安装dede的时候将数据库前缀改了,不过最重要的是碰到问题得先分析,然后再想办法结局。


在用织梦做一些项目时,时常会碰到需要在当前页面调用顶级栏目名称的时候,织梦默认{dede:field name='typename' /} 
可以获取当前栏目页上一级栏目的名称,而不是当前栏目顶级栏目名称。
下面拓展出一个方法来实现这个效果、:
在include/common.func.php的最下方加入:
//获取顶级栏目名
function GetTopTypename($id)
{
    global $dsql;
   
 $row = $dsql->GetOne("SELECT typename,topid FROM dede_arctype WHERE id= 
$id");
    if ($row['topid'] == '0')
    {
        return 
$row['typename'];
    }
    else
    {
        $row1 = 
$dsql->GetOne("SELECT typename FROM dede_arctype WHERE id= 
$row[topid]");
        return $row1['typename'];
    }
}
在文章页或者栏目列表页调用时,在所要调用 名称的位置加上下面这行代码即可实现。
{dede:field name='typeid' function="GetTopTypename(@me)" /}
在文章页中用下面这个方法来调用
{dede:field name='typeid' function="GetTopTypename(@me) /}

你可能感兴趣的:(织梦)