返回列表 

discuzX 门户文章 增加 聚合标签 数量的方法

[复制链接]

欢迎加入兔源码站长交流群,您的加入是我们前行的动力!

DZ站长建站交流群:493651246

[ 温馨提示:点击上方群文字,可快速加入QQ群 ]

由于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
大概从678行开始,依次找到8的地方:
  1. function  article_tagnames() {}里的 for($i=1; $i<=8; $i++)
  2. function  article_parse_tags($tag) {}里的 for($i=1; $i<=8; $i++)
  3. function  article_make_tag($tags){}里的 for($i=1; $i<=8; $i++)
复制代码
分别修改8为你想要的个数,比如我的就是12。以上的行数是相对您没有改过源代码的情况,如果改过,就按函数名搜索好了。
(3)改变数据库字段长度
  1. 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 选出来修改:
  1. SELECT * FROM  `pre_common_setting` WHERE skey  =  ’article_tags’
复制代码
第二种方法是添加一个tag模版
第一步、修改文章添加Tag模版:/template/default/portal/portalcp_article.htm
找到内容代码:
  1. <div class="bm bml">
  2.          <div class="bm_h cl">
  3.                 <h2>{lang article_description}</h2>
  4.          </div>
  5.          <div class="bm_c"><textarea id="summary" name="summary" cols="80" class="pt" maxlength="120" style="width: 98.7%; height: 51px;">$article[summary]</textarea>
  6.          </div>
  7. </div>
复制代码
在此代码下面添加
  1. <div class="bm bml">
  2.         <div class="bm_h cl">
  3.              <h2>Tag 标签</h2>
  4.         </div>
  5.         <div class="bm_c"><input type="text" id="tags" name="tags"  class="px" maxlength="120" size="80" value="$article[tags]" ></div>
  6.          <div class="bm_h cl">多个Tag 用空格隔开,例如:宿迁波仔博客 南京[url=https://bbs.piaoxian.net/forum-67-1.html]服务器[/url] 宿迁博客,尾部不需任何符号</div>
  7. </div>
复制代码
第二步、添加pre_portal_article_title表字段
字段名:tags ,类型varchar(255), 默认为空。
在后台的站长->数据库->升级 下面的Discuz! 数据库升级,文本框,复制下面SQL:
  1. alter table pre_portal_article_title add tags varchar(255)
复制代码
注意:1、操作前备份数据库,2、不论表前缀是不是默认的,都可以直接用此代码(我的表前缀不是默认的已经成功),如果没有升级成功,那就请用pre_portal_article_title。
第三步、修改文章添加,修改,处理,函数/source/include/portalcp/portalcp_article.php
查找代码
  1. $_POST['pagetitle'] = censor($_POST['pagetitle']);
复制代码
在此代码下面添加
  1. $_POST['tags'] = censor(trim($_POST['tags']));
复制代码
继续查找代码
  1. $setarr = array(
  2.                  'title' => $_POST['title'],
  3.                  'shorttitle' => $_G[shorttitle'],
  4.                  'author' => $_G[author'],
  5.                  'from' => $_G[from'],
  6.                  'fromurl' => $_G[fromurl'],               
  7.                  'dateline' => intval($_G[dateline']),               
  8.                  'url' => $_G['gp_url'],               
  9.                  'allowcomment' => !empty($_POST['forbidcomment']) ? '0' : '1',               
  10.                  'summary' => addslashes($summary),               
  11.                  'catid' => intval($_POST['catid']),               
  12.                  'tag' => article_make_tag($_POST['tag']),               
  13.                  'status' => $article_status,               
  14.                  'highlight' => $style,               
  15.                  'showinnernav' => empty($_POST['showinnernav']) ? '0' : '1',        
  16. );
复制代码
修改为
  1. $setarr = array(
  2.                  'title' => $_POST['title'],               
  3.                  'shorttitle' => $_G['gp_shorttitle'],               
  4.                  'author' => $_G['gp_author'],               
  5.                  'from' => $_G['gp_from'],               
  6.                  'fromurl' => $_G['gp_fromurl'],               
  7.                  'dateline' => intval($_G['gp_dateline']),               
  8.                  'url' => $_G['gp_url'],               
  9.                  'allowcomment' => !empty($_POST['forbidcomment']) ? '0' : '1',               
  10.                  'summary' => addslashes($summary),               
  11.                  'catid' => intval($_POST['catid']),               
  12.                  'tag' => article_make_tag($_POST['tag']),               
  13.                  'status' => $article_status,               
  14.                  'highlight' => $style,               
  15.                  'showinnernav' => empty($_POST['showinnernav']) ? '0' : '1',<div>                 'tags' => $_POST['tags'],</div>
复制代码
(直白的来讲就是給该数组添加上一个元素
  1. 'tags' => $_POST['tags'],
复制代码
第四步、修改文章显示函数/source/module/portal/portal_view.php
找到代码
  1. $tags=explode(" ",$article["tags"]);foreach($tags as $val) {
  2.                 $htmltags .= "<a href="/search.php?mod=portal&srchtxt=".$val."&searchsubmit=yes" target="_blank">".$val."</a>  ";
  3. }
复制代码
第五步、修改文章显示模版/template/default/portal/view.htm
可以自己选择要放的位置,例如放到内容下面:查找
$content[content]
然后在下面加入代码
  1. <div>
  2.     <b>Tab标签:</b> $htmltags
  3. </div>
复制代码
第六步、进入后台->工具->更新缓存。只选择清理数据就可以了。

版权声明
1、转摘或引用本站内容资源须注明原网址,并标明本站网址(兔源码www.tuyuanma.com);
2、对于转摘或引用本站内容资源而引起的民事纠纷、行政处罚或其他损失,本站不承担责任;
3、对于不遵守本声明或其他违法、恶意使用本站内容者,本站保留其追究法律责任的权利。



快速回复 返回顶部 返回列表