drupal视图的custom page.tpl.php

drupal视图的custom page.tpl.php,drupal,drupal-6,views,drupal-views,drupal-themes,Drupal,Drupal 6,Views,Drupal Views,Drupal Themes,如何为特定视图创建自定义page.tpl.php 我并不是说对视图本身进行样式化,而是对视图呈现的页面进行样式化 多谢各位 @Keith Morgan-它是页面。假设视图是一个页面,您可以在预处理中使用page\u manager\u get\u current\u page()。如果是页面视图,可以使用路径建议。因此,如果您的视图位于,则page.tpl.php文件将命名为page photos.tpl.php,您可以创建一个模板文件来对视图输出的几乎任何方面进行主题化。在您的情况下,您希望为

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

我并不是说对视图本身进行样式化,而是对视图呈现的页面进行样式化

多谢各位


@Keith Morgan-它是页面。

假设视图是一个页面,您可以在预处理中使用
page\u manager\u get\u current\u page()。如果是页面视图,可以使用路径建议。因此,如果您的视图位于,则
page.tpl.php
文件将命名为
page photos.tpl.php

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

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

将要自定义的适当模板从/sites/all/modules/views/theme复制到主题中,并根据需要进行自定义

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


希望这能有所帮助。

利用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将使用该页面作为模板。

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

在drupal 7主题中,我在template.php中添加了一个模板建议:

function sovon_preprocess_page(&$variables) {   
if(views_get_page_view())   {
    $variables['theme_hook_suggestions'][] = 'page__view';      
}
}
function <theme>_preprocess_page(&$variables) {
    if (($views_page = views_get_page_view()) && $views_page->name === "galleries") {
      $variables['theme_hook_suggestions'][] = 'page__views__galleries';
    }
}
有关更多信息,请参阅和。

根据Allartk的解决方案
在Drupal 7 template.php中:

function sovon_preprocess_page(&$variables) {   
if(views_get_page_view())   {
    $variables['theme_hook_suggestions'][] = 'page__view';      
}
}
function <theme>_preprocess_page(&$variables) {
    if (($views_page = views_get_page_view()) && $views_page->name === "galleries") {
      $variables['theme_hook_suggestions'][] = 'page__views__galleries';
    }
}
函数预处理页面(&$variables){
如果($views\u page=views\u get\u page\u view())&&&$views\u page->name==“图库”){
$variables['theme\u hook\u suggestions'][='page\u views\u galleries';
}
}
然后在主题目录中,创建页面--views--gallers.tpl.php文件。 清除drupal缓存和模板应该可以工作。
我使用“图库”作为示例视图名称。

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

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

$view=views\u get\u view('viewname'); 打印$view->execute_display('default',$args)


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

方法取决于您使用的视图显示类型。例如,它是页面还是块?OP不是在一个视图处于活动状态时询问页面主题,而不是视图本身吗?当您有一个带有页面显示的视图时,最顶层的模板仍然是从views-view.tpl.php派生的,它不包含任何页面元素。这仍然会被填充到活动的页面模板中。不需要这样做,只需使用
drupal 7 is page--path to view.tpl.php
@Duncanmoo-Amir方法的优点是,如果命名约定与您有关,您可以显式地看到模板包含一个视图(就像我们有page--node-mynode.tpl.php). 我喜欢将与上面类似的内容与使用视图的机器名相结合,这样,例如,如果我的视图存在于here/there/myview中,我就可以使用page--view--myview.tpl.php,而不是标准页面--here--there--myview.tpl.phpI喜欢您答案的简单性,但我想我会在上面构建它。我也意识到它已经两年多了,但这可能会有所帮助。因此,我所做的是将函数的内部更改为:if($view=views\u get\u page\u view()){$variables['theme\u hook\u suggestions'][='page--view-'。$view->name;}这样做的目的是获取视图名称并查找前缀为“page--view-”和视图名称的任何模板文件。通过这种方式,您可以扩展它,而无需为每个视图编写if语句。