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 即可??梢杂靡韵聅ql語句把 svalue 選出來修改:
SELECT * FROM `pre_common_setting` WHERE skey = 'article_tags'
【題外話】:
另外大致講解下 聚合標簽的存儲和解析原理。
如果你研究過算法,發現是利用的經典的二進制的2次方按位與計算出來的。
比如8個標簽全沒選,就是00000000 = 0 ,某個標簽選中了,就是1,比如 00011001這樣子,翻譯成十進制存儲即可。
以上就是Discuz聚合標簽自由增加的問題解決辦法的全部內容,希望對大家的學習和解決疑問有所幫助,也希望大家多多支持武林網。新聞熱點
疑難解答