dedecms中如何讓專題不顯示在文章列表中

2021-06-05 19:56:53 字數 1736 閱讀 9726

dede的對專題的構思有很多好的方面,但是也有不合理的地方,比如專題的處理。

在dede中專題會預設顯示在文章列表中,多數時候我們是不希望這樣的,設定專題就是為了和普通文章區分開來。

但是dede預設是要這樣顯示的。那麼我們可以來改arclist標籤對應的php檔案。

處理arclist文章列表的標籤對應的php檔案是檔案\include\taglib\arclist.lib.php。

然後找到查詢文章列表的sql語句,經過仔細的分析,初步認為設定查詢語句條件是在lib_arclistdone()函式的$orwhere變數裡面。在檔案中搜尋orwhere,發現orwhere其實是乙個陣列 $orwheres = array();,這個陣列是這樣賦值的: $orwheres = " and arc.channel !=-1",先判斷標籤屬性,如果有某某標籤需要更改查詢條件,就用這種方式將限制條件的字串儲存在

orwheres裡面,在最後將整個陣列用join函式連在一起,結合其他變數形成sql語句。在lib_arclistdone函式中是這樣做的

if(isset($orwheres[0])) and#is", 'and ', $orwhere);

}if($orwhere!='') $orwhere = " where $orwhere ";

上面這段**形成 where查詢條件

然後sql語句是這樣的:

$query = "select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,

tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath

$addfieldssql

from `$maintable` arc left join

`jcode_arctype` tp on arc.typeid=tp.id

$addfieldssqljoin

$orwhere $ordersql $limitsql";

弄清楚了查詢文章的sql語句在**,我們就很好修改了,不是要取消預設專題被顯示的功能麼,我們都知道所有專題都有個channel欄位,該字段為-1就表示為專題,那麼我們只需在orwheres裡面加上這個條件就行了。

$orwheres = " and arc.channel !=-1";

但是我們還需要考慮到,有些地方是需要顯示專題列表的,僅僅這樣做,會讓需要專題的地方也顯示不出來。

所以最終我決定這樣寫:

if(preg_match('#spec#i', $listtype))

$channelid=-1;

else

$orwheres = " and arc.channel !=-1";

if(!empty($channelid)) $orwheres = " and arc.channel = '$channelid' ";

把上面這段**的位置放在大概該檔案的305行的地方,需要注意的是不僅僅是增加**而已,原有的**還是有小小的改動,不過假如你讀懂了我寫的,你應該知道怎麼改。如果你不放心,可以先儲存再修改試試,不成功的話也不會有大的影響。

有了上面的**,所有arclist標籤預設情況下均不會顯示專題。

如果需要顯示專題的話需要這樣寫arclist標籤:

[field:title function=' (strlen("@me")>28 ? cn_substr("@me",28)."..." : "@me" ) '/]

如何讓DEDECMS織夢的TAGS標籤靜態化

安裝於使用說明 一 說明 本修改適用5.6 utf,可以生成 所有tag列表的靜態網頁檔案,還有生成tag的首頁靜態檔案。修改前,請備份相關的原始檔案。二 修改步驟 1 在dede 根目錄,建立 tag 目錄 小寫 2 在dede後台sql執行器裡,執行以下一條sql alter table ded...

讓DEDECMS文章內容中鏈結新視窗開啟的方法

使用織夢dedecms模板的朋友肯定對鏈結預設本地開啟非常煩惱,為什麼?我來舉例說明下 比如說在新添的文章內容裡面輸入 織夢模板預設是在本地開啟的,如果是我們自己的 鏈結還好,是別人的鏈結,就把我們的使用者轉到別人的 了,對於使用者的粘合非常不好。怎樣才能使織夢模板文章頁鏈結預設新視窗開啟呢?下面就...

怎樣讓視窗不顯示在工作列和ALT TAB中

之前想弄個像qq旋風那樣的懸浮視窗,就研究了下怎麼讓視窗不顯示在工作列中,方法其實很簡單就是將視窗的擴張屬性設定成ws ex toolwindow,msdn中對該屬性有詳細介紹,如下 setwindowlong m hwnd,gwl exstyle,ws ex toolwindow 但是這樣一來視窗...