discuz的聚合標(biāo)簽功能為取分類數(shù)據(jù)提供了第二層方便。但是默認(rèn)只支持8個(gè)標(biāo)簽,對(duì)希望更多標(biāo)簽的用戶來說很不方便,那么該如何解決呢?
如果你也遇到此類問題,不妨看下以下的方法 !
Discuz版本 X3.2
聚合標(biāo)簽所在的文件里的個(gè)數(shù)限制是寫死的,就是8,所以自定義增多幾乎是不可能的,除非核心程序改變。
要改的幾個(gè)核心文件有:
(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為你想要的個(gè)數(shù),比如我的就是12。以上的行數(shù)是相對(duì)您沒有改過源代碼的情況,如果改過,就按文件名搜索好了。
ALTER TABLE `pre_portal_article_title` CHANGE `tag` `tag` smallint( 12 ) UNSIGNED NOT NULL DEFAULT '0'
默認(rèn)的tinyint的unsign型最大是255,而255只能支持8個(gè)標(biāo)簽。
所以這里改成smallint,最大支持32位,如果還不夠就繼續(xù)增大int型即可。
改到這里,基本就可以啦。
后臺(tái),門戶,文章管理,聚合標(biāo)簽,上數(shù)據(jù)!
前臺(tái),發(fā)文,看聚合標(biāo)簽,有值。
或者手工在數(shù)據(jù)庫那修改數(shù)據(jù)也行,數(shù)據(jù)存儲(chǔ)在 pre_common_setting 表中的 skey 字段值為 “article_tags” 的記錄,然后修改 svalue 即可。可以用以下sql語句把 svalue 選出來修改:
SELECT * FROM `pre_common_setting` WHERE skey = 'article_tags'
【題外話】:
另外大致講解下 聚合標(biāo)簽的存儲(chǔ)和解析原理。
如果你研究過算法,發(fā)現(xiàn)是利用的經(jīng)典的二進(jìn)制的2次方按位與計(jì)算出來的。
比如8個(gè)標(biāo)簽全沒選,就是00000000 = 0 ,某個(gè)標(biāo)簽選中了,就是1,比如 00011001這樣子,翻譯成十進(jìn)制存儲(chǔ)即可。
以上就是Discuz聚合標(biāo)簽自由增加的問題解決辦法的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)和解決疑問有所幫助,也希望大家多多支持武林網(wǎng)。
|
新聞熱點(diǎn)
疑難解答
圖片精選