如何使用其他模板创建自定义页面? -- theming 领域 和 7 领域 drupal 相关 的问题

How can I create a custom page with a different template?


1
vote

问题

中文

我想要一个页面(例如,在 http://example.com/mypage )显示作为空白页面。如何为该特定页面使用不同的模板,以将其显示为空白页面?

英文原文

I want to have a page (e.g. the one at http://example.com/mypage) shown as a blank page. How can I use a different template for that specific page, to show it as a blank page?

     

回答列表

4
 
vote

您可以通过建议将使用的新模板文件使用不同的模板。

这可以通过在主题中完成,通过在实现 function mymodule_image_default_styles() { $styles = array(); $styles['mymodule_thumb'] = array( 'label' => 'MyModule Thumbnail', 'effects' => array( array( 'name' => 'image_scale', 'data' => array( 'width' => 200, 'upscale' => 1, 'height' => 200, ), 'weight' => 0, ), array( 'name' => 'image_crop', 'data' => array( 'width' => 210, 'height' => 210 ), ) ), 'name' => 'mymodule_thumb', 'storage' => IMAGE_STORAGE_NORMAL ); return $styles; } 0 中编写其 9988876669 ,或者在模块中完成。

  function mymodule_image_default_styles() {   $styles = array();    $styles['mymodule_thumb'] = array(     'label' => 'MyModule Thumbnail',     'effects' => array(       array(         'name' => 'image_scale',         'data' => array(           'width' => 200,           'upscale' => 1,           'height' => 200,         ),         'weight' => 0,       ),       array(         'name' => 'image_crop',         'data' => array(           'width' => 210,           'height' => 210         ),       )     ),     'name' => 'mymodule_thumb',     'storage' => IMAGE_STORAGE_NORMAL   );   return $styles; } 1  

此代码适用于Drupal 7;对于Drupal 6,您需要用 function mymodule_image_default_styles() { $styles = array(); $styles['mymodule_thumb'] = array( 'label' => 'MyModule Thumbnail', 'effects' => array( array( 'name' => 'image_scale', 'data' => array( 'width' => 200, 'upscale' => 1, 'height' => 200, ), 'weight' => 0, ), array( 'name' => 'image_crop', 'data' => array( 'width' => 210, 'height' => 210 ), ) ), 'name' => 'mymodule_thumb', 'storage' => IMAGE_STORAGE_NORMAL ); return $styles; } 3 替换 function mymodule_image_default_styles() { $styles = array(); $styles['mymodule_thumb'] = array( 'label' => 'MyModule Thumbnail', 'effects' => array( array( 'name' => 'image_scale', 'data' => array( 'width' => 200, 'upscale' => 1, 'height' => 200, ), 'weight' => 0, ), array( 'name' => 'image_crop', 'data' => array( 'width' => 210, 'height' => 210 ), ) ), 'name' => 'mymodule_thumb', 'storage' => IMAGE_STORAGE_NORMAL ); return $styles; } 2 。在您在模块中使用它的情况下, function mymodule_image_default_styles() { $styles = array(); $styles['mymodule_thumb'] = array( 'label' => 'MyModule Thumbnail', 'effects' => array( array( 'name' => 'image_scale', 'data' => array( 'width' => 200, 'upscale' => 1, 'height' => 200, ), 'weight' => 0, ), array( 'name' => 'image_crop', 'data' => array( 'width' => 210, 'height' => 210 ), ) ), 'name' => 'mymodule_thumb', 'storage' => IMAGE_STORAGE_NORMAL ); return $styles; } 4 需要重命名 function mymodule_image_default_styles() { $styles = array(); $styles['mymodule_thumb'] = array( 'label' => 'MyModule Thumbnail', 'effects' => array( array( 'name' => 'image_scale', 'data' => array( 'width' => 200, 'upscale' => 1, 'height' => 200, ), 'weight' => 0, ), array( 'name' => 'image_crop', 'data' => array( 'width' => 210, 'height' => 210 ), ) ), 'name' => 'mymodule_thumb', 'storage' => IMAGE_STORAGE_NORMAL ); return $styles; } 5 ,其中"mymodule" 是模块的短名称。
而不是使用 function mymodule_image_default_styles() { $styles = array(); $styles['mymodule_thumb'] = array( 'label' => 'MyModule Thumbnail', 'effects' => array( array( 'name' => 'image_scale', 'data' => array( 'width' => 200, 'upscale' => 1, 'height' => 200, ), 'weight' => 0, ), array( 'name' => 'image_crop', 'data' => array( 'width' => 210, 'height' => 210 ), ) ), 'name' => 'mymodule_thumb', 'storage' => IMAGE_STORAGE_NORMAL ); return $styles; } 6 您也可以使用 9988766617 ,但是从此函数返回的输出类似于"/ dr72 / devel / php?render = overlay& render =覆盖" 当Drupal安装在Web服务器根目录的子目录中时。 function mymodule_image_default_styles() { $styles = array(); $styles['mymodule_thumb'] = array( 'label' => 'MyModule Thumbnail', 'effects' => array( array( 'name' => 'image_scale', 'data' => array( 'width' => 200, 'upscale' => 1, 'height' => 200, ), 'weight' => 0, ), array( 'name' => 'image_crop', 'data' => array( 'width' => 210, 'height' => 210 ), ) ), 'name' => 'mymodule_thumb', 'storage' => IMAGE_STORAGE_NORMAL ); return $styles; } 8 不会将别名更改为规范路径;假设example.com/node-1-title是exame.com/node/1的别名,在我的测试站点中,函数将返回"/ dr72 / node-1-title" ,而 function mymodule_image_default_styles() { $styles = array(); $styles['mymodule_thumb'] = array( 'label' => 'MyModule Thumbnail', 'effects' => array( array( 'name' => 'image_scale', 'data' => array( 'width' => 200, 'upscale' => 1, 'height' => 200, ), 'weight' => 0, ), array( 'name' => 'image_crop', 'data' => array( 'width' => 210, 'height' => 210 ), ) ), 'name' => 'mymodule_thumb', 'storage' => IMAGE_STORAGE_NORMAL ); return $styles; } 9 sudo apt-get remove --purge [mail package that did not work] 0 将分别返回"节点" 和"1" (路径的前两个元素)。

 

You can use a different template for a page by suggesting a new template file that will be used.

This can be done in a theme, by writing its template_preprocess_page(), or in a module by implementing hook_preprocess_page().

function template_preprocess_page(&$variables) {   if (arg(0) == "node" && arg(1) == "1") {     array_unshift($variables['theme_hook_suggestions'], "page--custom-template");   } } 

This code is for Drupal 7; for Drupal 6 you need to replace $variables['theme_hook_suggestions'] with $variables['template_files']. In the case you are using it in a module, template_preprocess_page() needs to be renamed mymodule_preprocess_page(), where "mymodule" is the short name of your module.
Instead of using arg() you can also use request_uri(), but the output returned from this function is similar to "/dr72/devel/php?render=overlay&render=overlay" when Drupal is installed in a subdirectory of the web server's root directory. request_uri() doesn't change an alias into the canonical path; supposing that example.com/node-1-title is an alias for example.com/node/1, in my test site, the function will return "/dr72/node-1-title" while arg(0) and arg(1) would return, respectively, "node" and "1" (the first two elements of the path).

 
 
       
       
1
 
vote

如果要在代码中实现这一点,在自定义主题或模块中,您需要查看模板建议< / a>。

如果您想要基于UI的解决方案,有一些模块有助于为您网站的特定主题/部分具有自定义主题。查看 tumekey module ,自定义页面模块和页面主题模块用于几个模块,这是一些这样做的。

p> P>个人,我会选择在自定义模块中的模板建议。
 

If you want to implement this in code, within a custom theme or module, you need to look into template suggestions.

If you want a ui-based solution, there are a few modules that assist in having custom themes for specific themes/sections of your site. See themekey module, custom page module and page theme module for a few modules that do this.

Personally, I would opt for a template suggesion in a custom module.

 
 
     
     
0
 
vote
  sudo apt-get remove --purge [mail package that did not work] 1  

然后我们可以通过以下方式访问此页: http://yoursite.com/?q=mypage或以清除URL模式: http://yoursite.com/mypage/

 
function yourTheme_preprocess_html(&$vars) {   if ($node = menu_get_object()) {     if($node->type == "mypage") {       $vars['theme_hook_suggestions'][] = 'html__mypage';     }   } } 

then we can access to this page from : http://yoursite.com/?q=mypage or in clear url mode : http://yoursite.com/mypage/

 
 

相关问题

0  建议页面节点视图的新模板文件  ( Suggest a new template file for a page node view ) 
我有一个有两个主要观点的网站,一个男士博客和女性博客,都是他们自己的内容类型,男士博客文章和妇女博客文章。我面临的问题是它们共享相同的页面 - node.tpl文件(节点页面视图,默认文件:page.tpl而不是node.tpl),但需要具有不同的内容(例如侧栏区域中的其他相关视图)。我需要建议两个名为page ...

2  列出日期范围内的节点  ( List nodes within a date range ) 
我正在寻找一个在日期范围内显示节点列表的解决方案。要求是从今天到期6天的展示活动。我有一个内容类型"agenda" ,启用日期字段。所以显示屏应该如: 2012年1月2日 - 上午8:00 AM议程A - 9:00 AM议程B 2012年1月3日 - 上...

3  一个主题是面板(或添加风格)  ( How does one theme a panel or add a style ) 
我正在使用drupal 7和面板3. 我正在寻找一个良好的教程,或者教程视频,描述了它们的面板。我理解使用模板文件,通常锄头到主题节点和它们字段,但我真的不明白如何主题面板。我看到在布局设计师中,它允许您向面板窗格添加"样式" 。我理解这可能是基于主题的,但是人们将如何添加另一个风格。 任何帮助都会很棒。 感谢 ...

2  主题维护模式的登录页面  ( Theme the login page for maintenance mode ) 
我创建了我的主题作为禅宗的象限,我已经创建了我的维护页面模板,它在启用维护页面时工作。 如果我尝试访问example.com/user,则使用标准模板显示登录页面,而不是维护页面模板。 如何使drupal 7使用维护页面模板也适用于登录页面? ...

3  如何在地址域显示城市与州之间放置逗号?  ( How to put a comma between city and state in addressfield display ) 
我正在使用带有drupal 7.10的 addressfield 模块。在显示地址域时,我想要一个逗号。目前地址如下所示: 123 Main St SomeCity California 90100 我希望它显示: 123 Main St SomeCity, California 90100 ...

5  如何修改页面中的分类术语路径呈现数组?  ( How to modify taxonomy term path in the page render array ) 
我正在尝试在节点页面上显示之前更改一个术语的路径。我在template.php中使用这个预处理函数: function bartik_preprocess_node(&$variables) { $variables['field_photo_topic']['0']['taxonomy_term']->...

0  可以使用数字启动主题名称吗?  ( Can a theme name be started with a number ) 
我可以用数字开始主题名称吗?例如:"123Go" drupal识别文件夹&amp;以其开头的文件? 它在寺庙中工作.PHP作为函数的开始? ...

1  以错误的形式获取所有元素的ID  ( Getting the id of all the elements in a form with errors ) 
我正在使用drupal 6。 我想要的只是找到form_get_errors中存在错误的每个元素的ID。 我正在使用Preprovess来主题表单错误部分,并尝试使用$ vars ['form'],到目前为止没有运气。 我该怎么办? ...

5  在Drupal 7中,我如何只有在查看前页面时才能包含CSS文件?  ( In drupal 7 how can i include a css file only when the front page is being view ) 
我想仅在查看前页面时包含特定的CSS文件,因为它只适用于前页,并且它是一个相对大的文件。我知道解决方案将涉及使用 drupal_add_css()我不确定在我的主题 theme/template.php3 文件中的位置。我的主题内有特定的钩子,我应该实施它吗?谢谢。 编辑:我基本上有代码,我只是不确定我的主题文件可以...

1  CSS移动兼容的耳机主题吗?  ( Css mobile compatible theme for drupal ) 
是否有CSS移动兼容的主题,用于DRUPAL? CSS移动兼容站点的示例: http://framelessgrid.com/ ...

0  模板没有被拿起?  ( Template not being picked up ) 
我将node-product.tpl.php文件添加到我的主题上,它完全忽略了。 我重置缓存,多次,并使用devel + devel_themer测试,以查看名称是否正确且它是。它说它搜索: node-product.tpl.php node-product.tpl.php node.tpl.php ...

1  YouTube缩略图 - 单击时调整接口小部件和行为的选项?  ( Youtube thumbnails options for adjusting interface widgets and behaviour when ) 
我希望将YouTube视频添加到我的网站作为链接 - 我想使用视频缩略图。我不关心使用哪种缩略图(如本文所讨论的:如何控制YouTube中的预览图像) 我所关注的是戏剧等等。按钮在缩略图上看(即,一切都从youtube中出现的方式减少了大小)。 YouTube自己提供了哪些选项?三方解决方案怎么样? facebo...

2  将评论表单/呈现出node.tpl.php(进入单独的区域)  ( Move comment form render out of node tpl php into separate region ) 
我想呈现 99887668 在node.tpl.php文件之外的节点的一部分,并在主题的单独区域中呈现评论(表单和所有)。 我注意到了 commesblock 在这些行中做某事,但需要一个视图,而不是似乎太完了。 我可以做一些预处理,以将渲染数组中的整个评论变为page.tpl.php模板如果我在某个节点类型页面上,...

0  如何在浏览器宽度宽于900像素时折叠*侧边栏第一个*区域?  ( How can i collapse the sidebar first region when the browser width is less tha ) 
如何在浏览器宽度宽于900像素时折叠侧边栏第一个区域? 在主题的.info文件中设置以下内容: 设置[sidebar_first_width] = 4 如何以上述方式编程方式更改为0,以便当包含浏览器宽的浏览器宽度小于900像素时,侧边栏第一个区域不会占用页面内的任何空格? 一种可能的方法是利用主题相关的.css文件...

6  基于节点类型的评论自定义模板  ( Custom template for comment based on node type ) 
我正在尝试每个内容类型为我的评论添加自定义模板文件。 comment--[contenttype].tpl.php 默认未拾取。我读到这可能是D7错误或者设计。然后我也读到我可以向我的template.php添加预处理函数,但我仍然有点困惑。我已经将此添加到我的主题; function bartik_prep...

1  如何在页面-Caxonomy.tpl或块中打印标志?  ( How to print flag in page taxonomy tpl or in block ) 
我正在使用标志术语模块,我正在尝试在我的页面-caxonomy.tpl文件中放一个标志链接,因为我希望在某个区域/块中定位的标志。使用FLAG_CREATE_LINK功能读取它建议的文档。我将以下代码添加到我的页面 - caxonomy.tpl文件: print flag_create_link('like',...

0  为Acquia_Marina实施粘性页脚  ( Implement sticky footer for acquia marina ) 
我已经搜索了Drupal 7的Acquia Marina主题的Drupal友好的粘性页脚解决方案,但我找不到任何东西。 2示例在此处给出drupal 6: http://drupal.org/node/554048 。第一个解决方案是基于JavaScript的,第二个解决方案是基于CSS的。 CSS / JS示...

2  查看具有不同CSS的随机列表,结果1  ( Views random list with different css for result 1 ) 
我想在Drupal 7中创建一个随机图片的图片3,其中第一张照片大于另一个图片。 所以每次我重新加载我都有一个随机列表,第一个结果总是更大。 我该怎么做? ...

6  主题用户在Drupal 7中的评论中的图片  ( Theme user pictures in comments in drupal 7 ) 
我正在尝试在Drupal 7中的评论中为用户图片设置特定样式,但找不到如何执行此操作。 我知道这个模块(http://drupal.org/project/imageCache_profiles),但这真的是一个矫枉过正,因为我只是希望在评论中被主题的照片,根据我已经在image_cache配置中创建的样式。 在co...

3  将CSS类添加到字段  ( Add css class to fields ) 
我有以下代码段。 function <themename>_preprocess_node(&$vars) { if ($vars['teaser'] && !$vars['is_front']) { $vars['theme_hook_suggestions'][] = 'node__teaser'...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.