您在這裡

一個傻問題: 如何能調整內容類型在創建內容頁面上的排列順序?

say2sky's 的頭像
say2sky 在 2008-07-10 (四) 18:35 發表

自建新的內容類型在菜單上的排列順序可以用權重(weight)來調整, 但是在創建內容的頁面上的排列順序卻是按字母順序排列, 能不能自己定義和調整呢?

看了一下 node 模組
應該是因為列出 nodetype 的 sql 為:

$type_result = db_query(db_rewrite_sql('SELECT nt.type, nt.* FROM {node_type} nt ORDER BY nt.type ASC', 'nt', 'type'));

所以會依照 type 的順序排列
但是 db_rewrite_sql 內沒辦法調整原有的 order by

我想
把需要的連結作成一個 page

或是參考 node 模組內的 function node_add ()
自己另外做一個類似的頁面

再自己調整順序吧

謝謝hom給予的幫助!

本來想偷懶將type名改一下讓他符合要求的順序, 但是仔細看了這個node/add頁面上的內容類型列表還不是按type的順序排序的, 而是按照name順序排列的.

英文站點上有提到:
http://drupal.org/node/208023

我的name是用的中文名, 這下企圖改名繞道解決也不行了. 可能是只有另外做一個類似的頁面

系統將node/add頁面的內容類型, 按照數據庫的node_type表中name字段以字母順序排列, 這個細節感覺drupal處理的不是很好.

本來我的用戶內容類型的創建是按照期望的顯示順序建立的, 在node_type表中也還是創建時的順序. 現在要調整順序確實只能用新的page-node-add..tpl.php. 可是又還要處理用戶權限的問題, 嗨...

不過想想drupal可能還有一定道理因為, 他們是用英文的吧.

$item[$type->name] = $out;
+
uksort($item, 'strnatcasecmp');

使原本按type排序變為按name排序.

現在用了很不好的方法解決了問題, 希望不要有問題!
先comment out "uksort($item, 'strnatcasecmp')"
再選擇用符合排列要求的type英文名稱.