php个人工作经验以及生活体会博客 php工作,生活

14十二/1123

dede文章页面中调用tags标签

要在织梦(dede)文章页面中调用tags标签,其实用它自带的{dede:field.tags/}标签就可以调出来,不过这个标签没有超链接,是单纯的文字,如果要得到带链接的tags标签就要对他就行二次开发了

在网站根目录下载找到这个文件:\include\helpers\archive.helper.php

在第120行有个GetTags()函数,我们只需要对它进行更改就可以了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ( ! function_exists('GetTags'))
{
function GetTags($aid)
{
global $dsql;
$tags = '';
$query = "SELECT tag FROM `#@__taglist` WHERE aid='$aid' ";
$dsql->Execute('tag',$query);
while($row = $dsql->GetArray('tag'))
{
$tags .= ($tags=='' ? $row['tag'] : ','.$row['tag']);
}
return $tags;
}
}

将此函数用我们下面这个修改过的函数替换掉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if ( ! function_exists('GetTags'))
{
    function GetTags($aid)
    {
        global $dsql;
        $tags = '';
        $query = "SELECT tag FROM `#@__taglist` WHERE aid='$aid' ";
        $dsql->Execute('tag',$query);
        while($row = $dsql->GetArray('tag'))
        {
           // $tags .= ($tags=='' ? $row['tag'] : ','.$row['tag']);
          $tags .= "&nbsp;<a href=http://www.58w.cn/tags.php?/".$row['tag']."/>".$row['tag']."</a>";
        }
        return $tags;
    }
}

这样,再次使用{dede:field.tags/}标签,就可以得到带超链接的tags了
/*这里要纠正一下错误*/
在实际操作中才发现,这样做后再后台管理看到tags也变成了带超链接的了,这样不方便以后tags的管理,也容易混淆,但是稍加更改就可以解决这个问题了,
首先(先将之前的还原)在include\common.func.php文件中添加如下函数:

1
2
3
4
5
6
7
8
9
/*返回带超链接的tags*/
function changetags($tags){
    $tagsarr=explode(',',$tags);
    $tagsarr=array_remove_empty($tagsarr);
    foreach ($tagsarr as $k => $v){
        $tagstr .= "&nbsp;<a href=http://www.58w.cn/tags.php?/".$v."/>".$v."</a>";
    }  
    return $tagstr;
}

在模板页面中使用tags标签的地方变成这样,功能就好使了

1
{dede:field.tags function="changetags(@me)"/}