3

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

我不是在谈论视图本身的样式,只是在呈现该视图的页面。

谢谢你。

@Keith Morgan - 这是页面。

4

8 回答 8

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

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

于 2012-06-19T20:10:50.580 回答
5

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

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

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

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

希望这可以帮助。

于 2010-12-03T04:32:26.617 回答
4

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

于 2010-12-02T20:54:52.613 回答
2

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

于 2011-08-12T20:56:43.797 回答
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

于 2012-05-11T10:12:29.460 回答
1

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

于 2010-12-02T20:29:35.000 回答
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 将使用它作为您的模板。

于 2011-05-06T19:53:37.780 回答
0

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

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

或者

$view = views_get_view('viewname'); 打印 $view->execute_display('default', $args);

$args 只是一个数组,可以为空..您可以完全不使用它

于 2012-08-07T13:12:14.173 回答