默认版块

您所在的位置:合元网络»|||默认版块222222论坛 代码学习 默认版块 如何实现discuz!门户文章的标签功能  

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

查看: 1721 发表于 2016-10-15 11:23:41 [复制链接]
  1. 昨天在建设那个IT产品网站的时候遇到了一个问题:那就是建立一个经销商栏目。而在这个经销商栏目中需要添加大量的商家信息,如商家所在地区,商家名称,商家主营产品,商家联系方式等,这时候问题来了,这么多的商家信息访客该如何快速的筛选呢?

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

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

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

  6. (1)source/admincp/admincp_article.php

  7. 第51行:

  8. 1
  9. showformheader(‘article&operation=tag’);showtableheader(‘article_tag_setting’);for($i=1;  $i<=8; $i++) {修改8=>12
  10. (2)source/function/function_portalcp.php

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

  12. 1
  13. 2
  14. 3
  15. function  article_tagnames() {}里的 for($i=1; $i<=8; $i++)
  16. function  article_parse_tags($tag) {}里的 for($i=1; $i<=8; $i++)
  17. function  article_make_tag($tags){}里的 for($i=1; $i<=8; $i++)
  18. 分别修改8为你想要的个数,比如我的就是12。以上的行数是相对您没有改过源代码的情况,如果改过,就按文件名搜索好了。

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

  20. 1
  21. ALTER  TABLE  `pre_portal_article_title` CHANGE  `tag`  `tag` smallint( 12 ) UNSIGNED  NOT NULL  DEFAULT  ’0′
  22. 默认的tinyint的unsign型最大是255,而255只能支持8个标签。
  23. 所以这里改成smallint,最大支持32位,如果还不够就继续增大int型即可。

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

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

  28. 1
  29. SELECT * FROM  `pre_common_setting` WHERE skey  =  ’article_tags’
  30. 第二种方法是添加一个tag模版

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

  33. 1
  34. 2
  35. 3
  36. 4
  37. 5
  38. 6
  39. 7
  40. <div class="bm bml">
  41.          <div class="bm_h cl">
  42.                 <h2>{lang article_description}</h2>
  43.          </div>
  44.          <div class="bm_c"><textarea id="summary" name="summary" cols="80" class="pt" maxlength="120" style="width: 98.7%; height: 51px;">$article[summary]</textarea>
  45.          </div>
  46. </div>
  47. 在此代码下面添加

  48. 1
  49. 2
  50. 3
  51. 4
  52. 5
  53. 6
  54. 7
  55. <div class="bm bml">
  56.         <div class="bm_h cl">
  57.              <h2>Tag 标签</h2>
  58.         </div>
  59.         <div class="bm_c"><input type="text" id="tags" name="tags"  class="px" maxlength="120" size="80" value="$article[tags]" ></div>
  60.          <div class="bm_h cl">多个Tag 用空格隔开,例如:宿迁波仔博客 南京服务器 宿迁博客,尾部不需任何符号</div>
  61. </div>
  62. 第二步、添加pre_portal_article_title表字段
  63. 字段名:tags ,类型varchar(255), 默认为空。
  64. 在后台的站长->数据库->升级 下面的Discuz! 数据库升级,文本框,复制下面SQL:

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

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

  70. 1
  71. $_POST['pagetitle'] = censor($_POST['pagetitle']);
  72. 在此代码下面添加

  73. 1
  74. $_POST['tags'] = censor(trim($_POST['tags']));
  75. 继续查找代码

  76. 1
  77. 2
  78. 3
  79. 4
  80. 5
  81. 6
  82. 7
  83. 8
  84. 9
  85. 10
  86. 11
  87. 12
  88. 13
  89. 14
  90. 15
  91. 16
  92. $setarr = array(
  93.                  'title' => $_POST['title'],
  94.                  'shorttitle' => $_G[shorttitle'],
  95.                  'author' => $_G[author'],
  96.                  'from' => $_G[from'],
  97.                  'fromurl' => $_G[fromurl'],               
  98.                  'dateline' => intval($_G[dateline']),               
  99.                  'url' => $_G['gp_url'],               
  100.                  'allowcomment' => !empty($_POST['forbidcomment']) ? '0' : '1',               
  101.                  'summary' => addslashes($summary),               
  102.                  'catid' => intval($_POST['catid']),               
  103.                  'tag' => article_make_tag($_POST['tag']),               
  104.                  'status' => $article_status,               
  105.                  'highlight' => $style,               
  106.                  'showinnernav' => empty($_POST['showinnernav']) ? '0' : '1',        
  107. );
  108. 修改为

  109. 1
  110. 2
  111. 3
  112. 4
  113. 5
  114. 6
  115. 7
  116. 8
  117. 9
  118. 10
  119. 11
  120. 12
  121. 13
  122. 14
  123. 15
  124. $setarr = array(
  125.                  'title' => $_POST['title'],               
  126.                  'shorttitle' => $_G['gp_shorttitle'],               
  127.                  'author' => $_G['gp_author'],               
  128.                  'from' => $_G['gp_from'],               
  129.                  'fromurl' => $_G['gp_fromurl'],               
  130.                  'dateline' => intval($_G['gp_dateline']),               
  131.                  'url' => $_G['gp_url'],               
  132.                  'allowcomment' => !empty($_POST['forbidcomment']) ? '0' : '1',               
  133.                  'summary' => addslashes($summary),               
  134.                  'catid' => intval($_POST['catid']),               
  135.                  'tag' => article_make_tag($_POST['tag']),               
  136.                  'status' => $article_status,               
  137.                  'highlight' => $style,               
  138.                  'showinnernav' => empty($_POST['showinnernav']) ? '0' : '1',
  139. 1
  140. 'tags' => $_POST['tags'],
  141. (简单的就是在最后一行前加一句以上代码 )
  142. 第四步、修改文章显示函数/source/module/portal/portal_view.php
  143. 找到代码

  144. 1
  145. include_once template("diy:portal/view:{$catid}", NULL, NULL, NULL, $cat['articleprimaltplname']);
  146. 在此代码上面一行插入代码

  147. 1
  148. 2
  149. 3
  150. $tags=explode(" ",$article["tags"]);foreach($tags as $val) {
  151.                 $htmltags .= "<a href=\"/search.php?mod=portal&srchtxt=".$val."&searchsubmit=yes\" target=\"_blank\">".$val."</a>  ";
  152. }
  153. 第五步、修改文章显示模版/template/default/portal/view.htm
  154. 可以自己选择要放的位置,例如放到内容下面:查找

  155. 1
  156. $content[content]
  157. 然后在下面加入代码

  158. 1
  159. 2
  160. 3
  161. <div>
  162.     <b>Tab标签:</b> $htmltags
  163. </div>
  164. 第六步、进入后台->工具->更新缓存。只选择清理数据就可以了。
复制代码


— 产品中心

PRODUCT CENTER

— 产品中心

PRODUCT CENTER

CopyRight 2012-2017 合元网络 版权所有
公司地址:郑州市高新区升龙又一城A区2号楼2单元17楼 热线电话:15303843903 豫ICP备14027215号
快速回复 返回列表