欢迎来到361模板(www.ke361.com),原创精品织梦模板提供商。 网站托管 桌面收藏 网站定制

361源码网

当前位置:361源码网 > 技术文档 > CMS技术 > Discuz聚合标签自由增加的问题解决办法
这篇文章主要为大家详细介绍了Discuz聚合标签自由增加的问题解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。

discuz的聚合标签功能为取分类数据提供了第二层方便。但是默认只支持8个标签,对希望更多标签的用户来说很不方便,那么该如何解决呢?

如果你也遇到此类问题,不妨看下以下的方法 !

Discuz版本 X3.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。以上的行数是相对您没有改过源代码的情况,如果改过,就按文件名搜索好了。

二.改变数据库字段长度

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'

【题外话】:

另外大致讲解下 聚合标签的存储和解析原理。

如果你研究过算法,发现是利用的经典的二进制的2次方按位与计算出来的。

比如8个标签全没选,就是00000000 = 0 ,某个标签选中了,就是1,比如 00011001这样子,翻译成十进制存储即可。

以上就是本文的全部内容,希望对大家的学习和解决疑问有所帮助,也希望大家多多支持361源码网。

感谢打赏,我们会为大家提供更多优质资源!

热词标签: discuz 聚合标签

上一篇discuz怎么关闭分享到qq空间

下一篇织梦dedecms首页调用自定义字段的方法

取消

感谢您的支持,我们会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by361模板网,分享从这里开始,精彩与您同在