views_tabs 是一個drupal 的擴充套件。它可以讓view中的元素以tab的方式呈現出來。不過它有一個問題:
總是不願意依照view中的設定來好好排序。 怎麼勸都勸不聽。
這幾天追了一下,發現主要的原因應該是它所使用到的jstool tab模組中的:
function tabs_process_tabset($element)
裡面又對元素呼叫了一次 uasort($element, “_element_sort”) ; (77行附近)
而drupal中的_element_sort函式主要會根據每個$element的成員”#weight” (如果沒設定就取用#title成員)來排序。
views_tabs 在產生元素陣列的時候沒把這個成員給放進去(不過這要算誰的錯呢?)。所以解決方法很簡單,就是我們自己加進去。
底下是最簡單的方式:
在 function theme_views_tabs_display($view, $nodes, $type, $teasers = FALSE, $links = TRUE)函式中的
把
foreach ($nodes as $node) {
改成
$i =0;
foreach ($nodes as $node) {
和
111 $tabset[$title] = array(
112 '#type' => 'tabpage',
113 '#content' => $content,
114 '#title' => $title,
115 );
改成
111 $tabset[$title] = array(
112 '#type' => 'tabpage',
113 '#content' => $content,
114 '#title' => $title,
115 '#weight' =>$index,
116 );
117 $index++;
即可。
最新留言