·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

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

344 1
发表于 2022-3-20 21:30:14 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
由于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的地方:
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)改变数据库字段长度
  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">          <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>
复制代码
在此代码下面添加
  1. <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 用空格隔开,例如:宿迁波仔博客 南京[url=https://bbs.piaoxian.net/forum-67-1.html]服务器[/url] 宿迁博客,尾部不需任何符号</div> </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(                  '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',         );
复制代码
修改为
  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',<div>                 'tags' => $_POST['tags'],</div>
复制代码
(直白的来讲就是給该数组添加上一个元素
'tags' => $_POST['tags'],


第四步、修改文章显示函数/source/module/portal/portal_view.php
找到代码
  1. include_once template("diy:portal/view:{$catid}", NULL, NULL, NULL, $cat['articleprimaltplname']);
复制代码
在此代码上面一行插入代码
  1. $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]
然后在下面加入代码
  1. <div>     <b>Tab标签:</b> $htmltags </div>
复制代码
第六步、进入后台->工具->更新缓存。只选择清理数据就可以了。
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 2025-3-21 08:06:13 | 查看全部
要在DiscuzX门户文章中增加聚合标签的数量,确实需要对核心文件进行一些修改。你提到的第一种方法是通过修改核心文件来实现的,以下是详细的步骤和解释:

### 1. 修改 `source/admincp/admincp_article.php`
在这个文件中,你需要找到聚合标签的数量限制。通常这个限制是写死的,比如8个标签。你需要找到相关的代码并修改它。

  1. // 找到类似这样的代码
  2. for($i=1; $i<=8; $i++) {
  3.     // 标签相关的代码
  4. }

  5. // 修改为
  6. for($i=1; $i<=12; $i++) { // 将8改为你想要的标签数量
  7.     // 标签相关的代码
  8. }
复制代码


### 2. 修改 `source/function/function_portalcp.php`
在这个文件中,你需要找到处理标签的函数,并修改标签数量的限制。

  1. // 找到类似这样的代码
  2. function article_tagnames() {
  3.     for($i=1; $i<=8; $i++) {
  4.         // 标签相关的代码
  5.     }
  6. }

  7. // 修改为
  8. function article_tagnames() {
  9.     for($i=1; $i<=12; $i++) { // 将8改为你想要的标签数量
  10.         // 标签相关的代码
  11.     }
  12. }
复制代码


### 3. 修改 `source/module/portal/portal_article.php`
在这个文件中,你需要找到处理文章标签的数组,并添加一个新的元素来存储标签。

  1. // 找到类似这样的代码
  2. $setarr = array(
  3.     'title' => $_POST,
  4.     'shorttitle' => $_G,
  5.     'author' => $_G,
  6.     'from' => $_G,
  7.     'fromurl' => $_G,
  8.     'dateline' => intval($_G),
  9.     'url' => $_G,
  10.     'allowcomment' => !empty($_POST) ? '0' : '1',
  11.     'summary' => addslashes($summary),
  12.     'catid' => intval($_POST),
  13.     'tag' => article_make_tag($_POST),
  14.     'status' => $article_status,
  15.     'highlight' => $style,
  16.     'showinnernav' => empty($_POST) ? '0' : '1',
  17. );

  18. // 修改为
  19. $setarr = array(
  20.     'title' => $_POST,
  21.     'shorttitle' => $_G,
  22.     'author' => $_G,
  23.     'from' => $_G,
  24.     'fromurl' => $_G,
  25.     'dateline' => intval($_G),
  26.     'url' => $_G,
  27.     'allowcomment' => !empty($_POST) ? '0' : '1',
  28.     'summary' => addslashes($summary),
  29.     'catid' => intval($_POST),
  30.     'tag' => article_make_tag($_POST),
  31.     'status' => $article_status,
  32.     'highlight' => $style,
  33.     'showinnernav' => empty($_POST) ? '0' : '1',
  34.     'tags' => $_POST, // 添加一个新的元素来存储标签
  35. );
复制代码


### 4. 修改 `source/module/portal/portal_view.php`
在这个文件中,你需要找到显示文章的函数,并添加代码来处理和显示标签。

  1. // 找到类似这样的代码
  2. include_once template("diy:portal/view:{$catid}", NULL, NULL, NULL, $cat);

  3. // 在此代码上面插入代码
  4. $tags = explode(" ", $article);
  5. foreach($tags as $val) {
  6.     $htmltags .= "<a href='#'>".$val."</a> ";
  7. }
复制代码


### 5. 修改文章显示模板 `template/default/portal/view.htm`
在这个模板文件中,你需要找到合适的位置来显示标签。

  1. <!-- 找到类似这样的代码 -->
  2. {$content}

  3. <!-- 在下面加入代码 -->
  4. <div>Tab标签: {$htmltags}</div>
复制代码


### 6. 更新缓存
最后,进入Discuz后台,选择“工具” -> “更新缓存”,然后只选择“清理数据”即可。

### 注意事项
- 修改核心文件前,请务必备份相关文件,以防出现问题。
- 修改后,建议在测试环境中先进行测试,确保功能正常后再应用到生产环境。
- 如果你不熟悉PHP和Discuz的代码结构,建议在修改前先学习相关知识,或者寻求专业开发人员的帮助。

通过以上步骤,你应该能够成功增加DiscuzX门户文章的聚合标签数量。如果你在实施过程中遇到任何问题,欢迎随时提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.223.238.183,GMT+8, 2025-4-30 21:05 , Processed in 1.568067 second(s), 71 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表