DedeCMS的TAG標簽SEO問題改進及PHP源代碼講解,dedec
導讀:dedecmsdedecmsDEDECMS是最優秀的中文開源CMS系統之一了,不過,DEDE系統也不是盡善盡美的,存在許多待改善的地方,且不說它那基本廣受詬病的安全問題,今天跟版網就找其中dede模板安裝模板織夢。
DEDECMS是最優秀的中文開源CMS系統之一了,不過,DEDE系統也不是盡善盡美的,存在許多待改善的地方,且不說它那基本廣受詬病的安全問題,今天跟版網就找其中一個細節說說它的問題,那就是它的tag標簽問題。
DEdede,模板DECMS中的tag功能設計dede5.7模板得不合理,正確的方式是:如果一篇文章被加了A,B,C三個標簽,程序應該按照從A到C的順序,順次去匹配標簽,所以我們可以把與文章與貼近的長尾詞標簽放在A位置,把一些熱詞放在C位置,這樣文章既可以匹配出非常貼近的相關文章,而且整個相關文章數也能夠用足。
而DEDECMS源代碼中的匹配原則是這樣的:如果你添加了A,B,C三個標簽,在保存標簽的時候會將按照第一次A,B,C的順序保存下來,并按照id排序輸出:但是以后修改只是修改了標簽的內容就不能修改標簽的順序了。也就是說如果首先添加了A,C(圖1-1),在想添加B按照A,B,C(圖1-2)的順序修改的時候,原先的A,C標簽已存在id小于后添加的標簽id,就會無法按照A,B,C的順序保存,而是按照A,C,B進行排序,不能達到預期的效果。
一般來說,熱詞會比較早地進入數據庫,所以想插入或者添加新的熱詞保存標簽的時候就會按照最早的順序進行保存,調取相關文章的時候就不能調取出與輸入順序相似的結果。
Dedecms tag問題的程序修改說明:
(1)、當前程序的實現原理
Dedecms操作標簽的文件是/include/helpers目錄下archive.helper.php,保存標簽的函數是在文件下方的InsertOneTag函數,主要保存文章對應標簽的過程如圖:
通過上圖可以看出代碼中沒有對于文章對應表(dede_taglist)標簽排序的設置,然后在文件中GetTags($aid)讀取文章對應標簽的時候沒有對讀取排序進行操作,默認為按照tid的順序讀取,如下圖:
輸出的結果和上文所敘述的結果相同,這個tid即等于根據進入標簽數據表的順序,所以標簽的tid會比較大。
(2)、建立一個表存儲某篇文章標簽順序
如果要讓文章標簽按照用戶輸入的順序進行保存,就必須記錄用戶輸入保存標簽是的順序所以我們要修改文章標簽表dede_taglist。在表中添加一個字段作為記錄用戶輸入是排序的字段,修改表的方式如下:
ALTER TABLE `dede_taglist` ADD `order` INT( 3 ) NOT NULL COMMENT '序號' AFTER `tag`
將sql語句復制,用管理員用戶登錄dede后臺左側樹欄“系統”->"sql命令行工具" 粘貼在文本框中,點擊“確定”(sql語句中的&ldqdede免費模板uo;dede_taglist”的表前綴根據你的數據庫中設置的表前綴)。
(3)、修改匹配標簽的函數
然后修改操作文章標簽的方法,首先修改添加標簽的函數。在原函數中添加了一個參數作為序號的記錄function InsertOneTag ($tag, $aid,$i),$i是添加時的序號該函數主要修改了文章標簽添加的部分,加入對`order`排序信息的添加。修改后如圖:
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-07-18 ,文章DedeCMS的TAG標簽SEO問題改進及PHP源代碼講解,dedec主要講述標簽,源代碼,CMS網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_29153.html