我們做網站時,經常會把數據庫導來導去,有時偶爾不夠細心,有些參數沒有改過來,之前有做過一個系統把內容導入到dedecms中但是會發現生成時未審核的文檔也會在列表頁面顯示并且是以plus/view.php?id形式顯示的。下下我們來看看問題解決的辦法。
織夢的文檔數據都是存在MySQL數據表里面的,就默認的安裝的織夢系統來說,發的文章、軟件、圖片等等的文檔信息,都會儲存在dede_archives表中,dede_archives表是文檔的主表??棄羰侨绾蝸砼袛嘁黄臋n是否審核或者是否已經生成HTML文件的呢?
就是通過dede_archives表中的arcrank和ismake兩個字段,今天來了解這兩個字段的含義。具體來說arcrank是看這篇文章審核沒有,它有-1和0兩個值;ismake是代表是否生成了靜態文件,它有三個值:0,1,-1。
下面是對各種情況進行組合,都有可能出現的文檔狀態:
審核狀態生成html:$arcrank=-1 $ismake = 0 (但是后臺文章列表那里顯示沒有生成,點擊修改文章是顯示以生成,其實沒生成,因為是未審核,一但審核,自動變成1)。
審核狀態動態瀏覽:$arcrank=-1 $ismake = -1 ;
開放狀態生成html:$arcrank=0 $ismake = 1 ;
開放狀態動態瀏覽:$arcrank=0 $ismake = -1 ;
總結一下,通過上面四個,得出以下結論:
$arcrank =-1是代表未審核,0帶表審核:
$ismake生成html:0或者1; 入庫的時候是0,程序會判斷是不是生成了html,如果是會調整到1;
另外還有一個需要注意的地方,就是織夢還有一個文檔微表dede_arctiny,如果我們在使用SQL語句對文檔批量進行審核或者未審核操作時,必須把微表中的arcrank字段也設為相同的值
網上比較常見的辦法是使用SQL語句設置,具體的SQL語句如下:
代碼如下 |
復制代碼 |
Update dede_archives set arcrank = -1,ismake=0; |
使用這兩條SQL語句之后,所有的文章文檔的狀態就變成了未審核了。不過會遇到一個問題,有的是前臺動態還可以訪問,后臺一鍵生成的時候居然還會生成,只是不會真正的生成文件。產生這種情況的原因是什么呢?其實是織夢DedeCMS的微表和主表的狀態沒有統一。網上有一種比較死的辦法,是把文章刪除之后再恢復文章就解決了。
發菜工作室今天要說的還是使用SQL語句解決這個問題。都知道是微表的問題了,只需要使用如下的SQL語句即可解決:
代碼如下 |
復制代碼 |
Update dede_arctiny set arcrank = -1; |
綜合一下,我們在把所有的文章設置為未審核狀態的時候,一定要使用以下的SQL語句:
代碼如下 |
復制代碼 |
Update dede_archives set arcrank = -1,ismake=0 where 條件;
Update dede_arctiny set arcrank = -1 where 條件; |
這樣就把文章的主表、微表等等的信息都同步了。
最后發現是因為dede_archives與dede_arctiny表中有兩不統一導致的。
筆者這樣寫,在執行sql頁面提交就可以執行了:
Update dede_archives set arcrank = 0,ismake=0 where id>500;
Update dede_arctiny set arcrank = 0 where id>500;
OK, 關于dedecms生成靜態時列表頁面會顯示未審核的文章的問題,今天就分享到這里了。關于企業建站、網絡推廣等問題,歡迎向我們咨詢。