宿迁波仔博客

如何实现discuz!门户文章的标签功能

昨天在建设那个IT产品网站的时候遇到了一个问题:那就是建立一个经销商栏目。而在这个经销商栏目中需要添加大量的商家信息,如商家所在地区,商家名称,商家主营产品,商家联系方式等,这时候问题来了,这么多的商家信息访客该如何快速的筛选呢?

由于discuz门户文章没有标签功能,虽然自带了一个聚合标签,但是标签数量只有8个,明显是不够用啊。但是又非常想要实现这个功能。于是,我在网上查找了下,看到了大量的discuz用户都被这个问题困扰着,而解决的方法却少之又少。大概看了下,一共就2种方法,分享给大家:

第一种是修改聚合标签的数量

聚合标签所在的文件里的个数限制是写死的,就是8,所以自定义增多几乎是不可能的,除非核心程序改变。
要改的几个核心文件有:

(1)source/admincp/admincp_article.php

第51行:

showformheader(‘article&operation=tag’);showtableheader(‘article_tag_setting’);for($i=1;  $i<=8; $i++) {修改8=>12

(2)source/function/function_portalcp.php

第567行开始,依次找到8的地方:

function  article_tagnames() {}里的 for($i=1; $i<=8; $i++)
function  article_parse_tags($tag) {}里的 for($i=1; $i<=8; $i++)
function  article_make_tag($tags){}里的 for($i=1; $i<=8; $i++)

分别修改8为你想要的个数,比如我的就是12。以上的行数是相对您没有改过源代码的情况,如果改过,就按文件名搜索好了。

(3)改变数据库字段长度

ALTER  TABLE  `pre_portal_article_title` CHANGE  `tag`  `tag` smallint( 12 ) UNSIGNED  NOT NULL  DEFAULT  ’0′

默认的tinyint的unsign型最大是255,而255只能支持8个标签。
所以这里改成smallint,最大支持32位,如果还不够就继续增大int型即可。

改到这里,基本就可以啦。
后台,门户,文章管理,聚合标签,上数据!
前台,发文,看聚合标签,有值。

或者手工在数据库那修改数据也行,数据存储在 pre_common_setting 表中的 skey 字段值为 “article_tags”的记录,然后修改 svalue 即可。可以用以下sql语句把 svalue 选出来修改:

SELECT * FROM  `pre_common_setting` WHERE skey  =  ’article_tags’

第二种方法是添加一个tag模版 

第一步、修改文章添加Tag模版:/template/default/portal/portalcp_article.htm 
找到内容代码:

<div class="bm bml">
         <div class="bm_h cl">
                <h2>{lang article_description}</h2>
         </div>
         <div class="bm_c"><textarea id="summary" name="summary" cols="80" class="pt" maxlength="120" style="width: 98.7%; height: 51px;">$article[summary]</textarea>
         </div>
</div>

在此代码下面添加

<div class="bm bml">
        <div class="bm_h cl">
             <h2>Tag 标签</h2>
        </div>
        <div class="bm_c"><input type="text" id="tags" name="tags"  class="px" maxlength="120" size="80" value="$article[tags]" ></div>
         <div class="bm_h cl">多个Tag 用空格隔开,例如:宿迁波仔博客 南京服务器 宿迁博客,尾部不需任何符号</div>
</div>

第二步、添加pre_portal_article_title表字段
字段名:tags ,类型varchar(255), 默认为空。
在后台的站长->数据库->升级 下面的Discuz! 数据库升级,文本框,复制下面SQL:

alter table pre_portal_article_title add tags varchar(255)

注意:1、操作前备份数据库,2、不论表前缀是不是默认的,都可以直接用此代码(我的表前缀不是默认的已经成功),如果没有升级成功,那就请用pre_portal_article_title。

第三步、修改文章添加,修改,处理,函
数/source/include/portalcp/portalcp_article.php
查找代码

$_POST['pagetitle'] = censor($_POST['pagetitle']);

在此代码下面添加

$_POST['tags'] = censor(trim($_POST['tags']));

继续查找代码

 $setarr = array(
                 'title' => $_POST['title'], 
                 'shorttitle' => $_G[shorttitle'],
                 'author' => $_G[author'],
                 'from' => $_G[from'],
                 'fromurl' => $_G[fromurl'],               
                 'dateline' => intval($_G[dateline']),                
                 'url' => $_G['gp_url'],                
                 'allowcomment' => !empty($_POST['forbidcomment']) ? '0' : '1',                
                 'summary' => addslashes($summary),                
                 'catid' => intval($_POST['catid']),                
                 'tag' => article_make_tag($_POST['tag']),                
                 'status' => $article_status,                
                 'highlight' => $style,                
                 'showinnernav' => empty($_POST['showinnernav']) ? '0' : '1',        
);

修改为

 $setarr = array(
                 'title' => $_POST['title'],                
                 'shorttitle' => $_G['gp_shorttitle'],                
                 'author' => $_G['gp_author'],                
                 'from' => $_G['gp_from'],                
                 'fromurl' => $_G['gp_fromurl'],                
                 'dateline' => intval($_G['gp_dateline']),                
                 'url' => $_G['gp_url'],                
                 'allowcomment' => !empty($_POST['forbidcomment']) ? '0' : '1',                
                 'summary' => addslashes($summary),                
                 'catid' => intval($_POST['catid']),                
                 'tag' => article_make_tag($_POST['tag']),                
                 'status' => $article_status,                
                 'highlight' => $style,                
                 'showinnernav' => empty($_POST['showinnernav']) ? '0' : '1',
'tags' => $_POST['tags'],

(简单的就是在最后一行前加一句以上代码 )
第四步、修改文章显示函数/source/module/portal/portal_view.php
找到代码

include_once template("diy:portal/view:{$catid}", NULL, NULL, NULL, $cat['articleprimaltplname']);

在此代码上面一行插入代码

$tags=explode(" ",$article["tags"]);foreach($tags as $val) {
                $htmltags .= "<a href=\"/search.php?mod=portal&srchtxt=".$val."&searchsubmit=yes\" target=\"_blank\">".$val."</a>  ";
}

第五步、修改文章显示模版/template/default/portal/view.htm
可以自己选择要放的位置,例如放到内容下面:查找

$content[content]

然后在下面加入代码

<div>
    <b>Tab标签:</b> $htmltags
</div>

第六步、进入后台->工具->更新缓存。只选择清理数据就可以了。

推荐阅读:

如何去除discuz标题中的Powerd by Ddiscuz!(3.1版本)

如何创建discuz!频道栏目及本文导航的使用(3.1版本)

2014-03-02 | 发布:宿迁波仔博客 | 分类:discuz | 评论:39

留言列表:

  • 天涯 发布于 2016-06-03 10:12:55  回复
  • 第三步,如何改变数据库字段长度
  • noxin 发布于 2016-05-03 09:50:47  回复
  • 有个问题.
    这个tag的展示页面是调用了搜索功能,但是搜索的时候貌似不会搜索新添加的字段.
  • 蚂蚁 发布于 2016-03-24 20:23:37  回复
  • 如果我想把标签 添加到 keywords 中,该如何呢?
  • 飞机库 发布于 2015-10-30 05:06:13  回复
  • 非常不错!飞机库-第一飞机互动媒体要支持,坚持作为飞机门户,关注通用航空,私人飞机,滑翔机,通航产业发展。
  • 隔膜压滤机 发布于 2015-01-08 22:31:23  回复
  • 好文章,内容层次清晰.
  • 西门塔尔牛 发布于 2015-01-08 22:30:18  回复
  • 好文章,内容出口成章.
    • 千木论坛 发布于 2015-07-25 05:07:39  回复
    • 挺不错、赞同
  • pvc涂塑电焊网 发布于 2015-01-08 22:30:13  回复
  • 好文章,内容完美无缺.
  • 吊顶钢格板 发布于 2015-01-08 22:30:09  回复
  • 不错的文章,内容妙趣横生.
  • 中埋式橡胶止水带 发布于 2015-01-08 22:27:17  回复
  • 不错的文章,内容惊天动地.
  • 烧纸批发 发布于 2015-01-08 14:36:53  回复
  • 不错的文章,内容惊心动魄.
  • 防火板 发布于 2015-01-08 14:34:02  回复
  • 好文章,内容维妙维肖.
  • 硝化棉 发布于 2015-01-08 14:33:29  回复
  • 不错的文章,内容出类拔萃.
  • 塑料窗纱 发布于 2015-01-08 14:33:12  回复
  • 好文章,内容气吞山河.
  • 不锈钢网 发布于 2015-01-08 14:33:01  回复
  • 不错的文章,内容无与伦比.
  • 厢式压滤机 发布于 2015-01-07 22:18:49  回复
  • 好文章,内容博学多才.
  • 浸塑电焊网 发布于 2015-01-07 22:17:49  回复
  • 好文章,内容文从字顺.
  • 不锈钢网带 发布于 2015-01-07 15:29:38  回复
  • 不错的文章,内容妙不可言.
  • 压滤机工作原理 发布于 2014-12-31 11:38:07  回复
  • 不错的文章,内容文笔犀利.
  • PVC涂塑荷兰网 发布于 2014-12-31 11:34:04  回复
  • 好文章,内容十全十美.
  • 平台钢格板 发布于 2014-12-31 11:23:27  回复
  • 好文章,内容点石成金.

发表留言: