2010-12-02 34 views
3

如何爲特定視圖創建自定義page.tpl.php?爲drupal視圖定製page.tpl.php

我不是在談論風格的視圖本身,只是該視圖得到呈現的頁面。

謝謝。

@凱斯摩根 - 這是頁。

+1

的方法取決於什麼樣的視圖顯示你正在使用。例如,它是頁面還是塊? – keithm 2010-12-02 18:09:53

回答

5

您可以創建一個模板文件,以主題幾乎視圖輸出的任何方面。在你的情況下,你想爲你的頁面顯示創建一個自定義模板。

在視圖設計器上,單擊基本設置中的主題鏈接。您會看到一些模板文件的命名選項,具體取決於您是否想要整個視圖的主題(例如,views-view-example-page.tpl.php),每行(例如views-view-fields - example --page.tpl.php)等等。

將您想要自定義的相應模板從/ sites/all/modules/views/theme複製到您的主題並根據需要進行自定義。

一旦您創建了自定義模板文件,您可以返回到視圖設計器主題鏈接以確保它正在被使用。你的模板應該用粗體顯示。

希望這會有所幫助。使用sillygwailo的建議

+11

當視圖處於活動狀態而不是視圖本身時,OP是不是詢問主題頁?當您有頁面顯示的視圖時,最頂層的模板仍然來自views-view.tpl.php,該視圖不包含任何頁面元素。這仍然會塞進任何頁面模板處於活動狀態。 – mpdonadio 2010-12-03 17:59:27

1

假設視圖爲頁面,可以在預處理中使用page_manager_get_current_page()的結果來確定您的視圖是否處於活動狀態,然後採取適當的步驟(粘貼正文類,添加模板建議等)。

1

我得到這個工作對我來說非常漂亮:

function YOUR-THEME-NAME_preprocess_page(&$vars) { 

//allow template suggestions based on url paths. 
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q'])); 
if ($alias != $_GET['q']) { $suggestions = array(); 
$template_filename = 'page'; 
foreach (explode('/', $alias) as $path_part) { 
$template_filename = $template_filename . '-' . $path_part; 
$suggestions[] = $template_filename; 
} 
$alias_array = explode('/', $alias); 
$variables['template_files'] = $suggestions; 

那麼如果你的觀點是www.example.com/photos,在你的主題創建一個頁面photos.tpl.php目錄和drupal將使用它作爲你的模板。

2

有一個類似的問題,這是通過將.tpl.php放入我的主題的模板文件夾中解決。對於意見的Drupal 7頁顯示的命名約定頁面 - 路徑到view.tpl.php

2

在Drupal 7的主題,我加入的template.php模板建議:

function sovon_preprocess_page(&$variables) { 
if(views_get_page_view()) { 
    $variables['theme_hook_suggestions'][] = 'page__view';  
} 
} 

有關更多信息,請參見http://api.drupalize.me/api/drupal/function/views_get_page_view/7http://drupal.org/node/223440#custom-suggestions

+1

我喜歡你的答案的簡單性,但我想我會建立它。我也意識到它已經兩歲多了,但這可能會有所幫助。所以,我所做的是將函數內部改爲:\t if($ view = views_get_page_view()){ $ variables ['theme_hook_suggestions'] [] ='page-view - '。$ view - >名稱; } 這樣做是抓住視圖名稱,並尋找任何模板文件的前綴「page - view-」和您的視圖名稱。通過這種方式,您可以在不爲每個視圖編寫if語句的情況下擴展該視圖。 – Kirkland 2014-11-11 20:08:27

7

每Allartk的解決方案
在的Drupal 7的template.php:

function <theme>_preprocess_page(&$variables) { 
    if (($views_page = views_get_page_view()) && $views_page->name === "galleries") { 
     $variables['theme_hook_suggestions'][] = 'page__views__galleries'; 
    } 
} 

然後在你的主題目錄下創建的頁面 - 視圖 - galleries.tpl.php文件。 清除drupal緩存和模板應該可以工作。 我使用'畫廊'作爲和示例視圖名稱。

+4

不需要這個,只需使用'drupal 7是page-path-to-view.tpl.php' – Duncanmoo 2012-11-06 09:50:54

0

如果選中的答案不起作用(因爲它不適合我),您可以創建一個頁面 - (urlname).tpl。PHP然後風格你的主題,但你想要的。然後,你可以導入你的視圖的幾種方法之一...

 print render($page['content']); 

$視圖= views_get_view( '視圖名'); print $ view-> execute_display('default',$ args);

的$ args只是一個數組,可以blank..you可以只把它完全關閉