自定义page.tpl.php为drupal视图

时间:2010-12-02 17:56:47

标签: drupal drupal-6 views drupal-views drupal-themes

如何为特定视图创建自定义page.tpl.php?

我不是在谈论为视图本身设置样式,而只是描述该视图呈现的页面。

谢谢。

@Keith Morgan - 这是页面。

8 个答案:

答案 0 :(得分:7)

Per 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';
    }
}

然后在您的主题目录中,创建页面 - views - galleries.tpl.php文件。 清除drupal缓存和模板应该工作。 我使用'画廊'作为示例视图名称。

答案 1 :(得分:5)

您几乎可以在视图输出的任何方面创建模板文件。在您的情况下,您想为页面显示创建自定义模板。

在视图设计器上,单击“基本设置”中的“主题”链接。您将看到一些模板文件命名选项,具体取决于您是否要主题化整个视图(例如,views-view - example - page.tpl.php),每一行(例如,views-view-fields - example --page.tpl.php)等等。

将您要自定义的相应模板从/ sites / all / modules / views / theme复制到主题并根据需要进行自定义。

创建自定义模板文件后,您可以返回视图设计器主题链接以确保正在使用它。你的模板应该加粗。

希望这有帮助。

答案 2 :(得分:4)

有一些documentation on template suggestions,您可能对page.tpl.php suggestions感兴趣。如果是页面视图,您可以使用路径建议。因此,如果您的观点位于http://www.example.com/photos,则page.tpl.php文件将被命名为page-photos.tpl.php

答案 3 :(得分:2)

有一个类似的问题,通过在我的主题的模板文件夹中放置一个.tpl.php来解决这个问题。 drupal 7中页面显示视图的命名约定是page-path-to-view.tpl.php

答案 4 :(得分: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

答案 5 :(得分:1)

假设某个视图是一个页面,您可以在预处理过程中使用page_manager_get_current_page()的结果来确定您的视图是否处于活动状态,然后采取适当的步骤(添加正文类,添加模板建议等)

答案 6 :(得分:1)

使用sillygwailo的建议我很好地为我工作:

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,请在主题目录中创建page-photos.tpl.php,drupal会将其用作模板。

答案 7 :(得分:0)

如果选中的答案不起作用(因为它不适合我),您可以创建一个页面 - (urlname).tpl.php,然后根据需要设置主题样式。然后,您可以通过以下几种方式之一导入视图...

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

$ view = views_get_view('viewname');    print $ view-&gt; execute_display('default',$ args);

$ args只是一个数组,可以是空白的......你可以完全不用它