Drupal 7 修改「最新內容」區塊的文章排序

今天 DR 心血來潮,終於改掉了網站上一個自己覺得不太順眼的小問題,那就是左側的「最新內容」區塊預設是以修改日期來排序的,而這會有什麼問題呢?問題在於如果 DR 在過去的文章裡改錯字、或者大砍錯誤內容……那麼其文章排序就會跟主區塊不一致,因為主區塊是以文章的建立日期來排序的。這個問題不大,但多看幾眼就會覺得還是把兩個區塊都按照建立日期來排序會比較好。

 

Drupal 7 本身的管理介面並沒有提供這方面的設定,所以只能直接改程式碼。由於 DR 不諳 PHP,因此整個的研究和解決流程算是很懶人,先簡單用肉眼判斷相關程式碼應該是在 node 模組裡,接著對 node 的程式碼搜尋關鍵字,最後直接改改看就改好了……

 

其實 Drupal 有提供完整的線上 API 文件,所以想認真處理問題的人可以不用像 DR 這樣搞。至於實際修改的位置,就在 modules/node/node.module 這個檔案裡,找到 node_get_recent() 這支函式,將裡頭的「n.changed」註解掉換成「n.created」即可:

  $nids = $query
    ->fields('n', array('nid'))
    //->orderBy('n.changed', 'DESC')
    ->orderBy('n.created', 'DESC')
    ->range(0, $number)
    ->addTag('node_access')
    ->execute()
    ->fetchCol();

 

分類: