有點瘋狂的問題在這裏...Drupal 6 - 強制頁面視圖顯示不同的視圖?
我有一個視圖顯示設置爲一個頁面。它在主題A(桌面)上看起來很棒,但在主題B(手機)中很糟糕。因此,我爲主題B製作了不同版本的視圖。由於桌面/移動「網站」與不同主題相同,因此無論選擇何種主題,此頁面的網址都將保持不變。
所以我希望能夠將用戶指向:
的mysite/this_crazy_view
,並有返回的頁面中選擇正確的看法取決於它在哪一個主題,我知道,如果我是使用塊,我只是分配適當的塊到有問題的頁面逐個主題的基礎上,但由於顯示器正在使用頁面顯示,我不知道什麼是正確的方法。
我寧願不重建視圖作爲塊如果我可以幫助它(如果它不能幫助,所以它...)所以我希望有一種方式來有條件地加載視圖通過tpl PHP文件或類似的東西...
的代碼我用我的模塊中(每下面@Clive的建議)是:
<?php
function bandes_custom_hook_menu() {
$items['charley_test'] = array(
'title' => 'Title',
'access arguments' => array('access content'),
'page callback' => 'bandes_custom_set_page_view',
'type' => MENU_NORMAL_ITEM );
return $items;
}
function bandes_custom_set_page_view() {
global $theme_key;
$view_name = $theme_key == 'mobile_jquery' ? 'course_views_mobile' : 'course_views';
$display_id = 'page_5';
return views_embed_view($view_name, $display_id);
}
?>
我已清除高速緩存中的一些次,並在$ items數組中嘗試了各種不同的路徑。 course_views和course_views_mobile都可以獨立使用。
我還想知道是否可以創建views-view-course-views-page-5.tpl.php,其中除了views_embed_view(course_views_mobile,page_5)部分幾乎沒有包含任何內容? (只有兩個主題之一...)
其實我認爲答案比上述所有都簡單。重定向的東西給了我適合,所以我刪除了模塊,重新設置了我一直使用的路徑,並嘗試使用模板/主題方法。
這是:views-view-course-views-page-5.tpl.php,僅用於移動主題,但是指的是非移動視圖(有點讓我頭痛,但它起作用)
<?php
//get the view
print "IM IN YR VUE, MESSING THNGZ UP!"; //yeah, I'm going to remove this part...
$view_name="course_views_mobile";
$display_id="page_5";
print views_embed_view($view_name, $display_id);
?>
任何不應該起作用的原因? (或者爲什麼它是一個非常糟糕的主意?)
這看起來很有希望!我想我錯過了一個關鍵點(你能告訴我正在學習Drupal編碼嗎?) - 原始路徑將在哪裏?或者是items數組的this_crazy_view部分? –
沒錯,在'hook_menu()'中''items'的數組鍵被成爲你在'page callback'中定義的回調被調用來提供頁面內容的物理路徑。我其實已經忘了在該函數的末尾添加'return $ items',我已經更新了代碼以反映這個 – Clive
假設我有多個需要做這種事情的'頁面' - 我需要爲每一個定製一個模塊? (我的手指越過,這個特殊的情況是唯一的,但很難知道......) –