dede5.3.1文章页TAG标签的相关问题及解决方法

DEDECMS5.3.1 在文章页取得本文的 tags 标签应该用 {dede:field.tags/},但这样的话原程序输出只能取得tags的文字,没有链接。修改为正常的方法是:

/include/common.func.php 下的函数: 

PHP代码 (展开/隐藏)
  1. //获得某文档的所有tag           
  2. function GetTags($aid)           
  3. {           
  4.  global $dsql;           
  5.  $tags = '';           
  6.  $query = "Select tag From `#@__taglist` where aid='$aid' ";           
  7.  $dsql->Execute('tag',$query);           
  8.  while($row = $dsql->GetArray('tag'))           
  9.  {           
  10.   $tags .= ($tags=='' ? $row['tag'] : ','.$row['tag']);           
  11.  }           
  12.  return $tags;           
  13. }     

改成如下函数: 

PHP代码 (展开/隐藏)
  1. //获得某文档的所有tag           
  2. function GetTags($aid)           
  3. {           
  4.     global $dsql;           
  5.     $tags = '';           
  6.     $query = "Select tag From `#@__taglist` where aid='$aid' ";           
  7.     $dsql->Execute('tag',$query);           
  8.     while($row = $dsql->GetArray('tag'))           
  9.     {           
  10.         $tags .= ($tags=='' ? "<a href='/tags.php?/{$row['tag']}' target='_blank'>{$row['tag']}</a>" : ' '."<a href='/tags.php?/{$row['tag']}' target='_blank'>{$row['tag']}</a>");           
  11.     }           
  12.     return $tags;           
  13. }    

这样就能把TAGS带上链接了,并且以空格分开。

如果你要用逗号分隔的话,把上面的 {$row['tag']}</a>" : ' ' 改为 {$row['tag']}</a>" : ', ' 即可。

这样后,文章页调用TAGS是正常了,但造成了另一个问题,就是编辑文章时,原来填了TAG标签的地方出现这种情况:

PHP代码 (展开/隐藏)
  1. <a href='/tags.php?/关键词' target='_blank'>关键词</a> <a href='/tags.php?/测试' target='_blank'>测试</a> <a href='/tags.php?/哈哈' target='_blank'>哈哈</a>  

结果好像我们把程序改得挖东墙补西墙一样了,原程序是编辑页正常(没链接),前台不正常(没链接),改了之后是前台正常(有链接),后台编辑页不正常(也有链接)。

那再给编辑页动动刀子。每个有需要的模型都要改一下。下面以文章模型为例:

打开 /dede/templets/article_edit.htm 找到

PHP代码 (展开/隐藏)
  1. <?php echo $tags ?>     

把它改为:

PHP代码 (展开/隐藏)
  1. <?php            
  2.         $query="SELECT tag FROM #@__taglist WHERE aid = '$aid'";           
  3.         $dsql->SetQuery($query);           
  4.         $dsql->Execute();           
  5.         while($row = $dsql->GetArray())           
  6.   {           
  7.    echo $row['tag'].",";           
  8.   }           
  9. ?>        

编辑页显示就正常了,美中不足的地方是最后一个TAG标签后有个逗号,不过不影响正常使用。完工。

 

Trackbacks: 点击获得Trackback地址,Encode: UTF-8  点击获得Trackback地址,Encode: GB2312 or GBK  点击获得Trackback地址,Encode: BIG5
Tags: dedecms, tag | 分类:DedeCms
浏览概况:评论:1 | 相关文章:5 | 阅读:7586
文章评论(1)
[1楼] [引用] [TOP]
ymz 发表于 2009, April 28, 4:40 PM
谢谢,非常有用
发表评论
用户名:
密码(游客无需):
网址/E-mail:
      记住我的信息