如何在主题中创建自定义区域? -- theming 领域 和 regions 领域 drupal 相关 的问题

How do I create custom regions in a theme?


58
vote

问题

中文

我想添加一个网站宽的新区域。描述将此新区域进入我的主题的过程,如果可能的是,将其概括为添加任何新的自定义区域。

英文原文

I want to add a new area which will be site wide. Describe the process of getting this new region into my theme, if possible generalize it for adding any new, custom region.

     
 
 

回答列表

68
 
vote
vote
最佳答案
 

您在主题中定义区域.INFO文件。请参阅: .info文件的结构

然后需要将相关的模板标签放在page.tpl.php文件中。

所以例如,如果您在主题中定义了该区域 sidebar .info文件,然后将 9988876610 添加到您的页面中的相关位置.TPL.php 。

 

You define regions in your theme .info file. See: Structure of the .info file

You then need to put the relevant template tags in your page.tpl.php file.

So for example if you defined the region sidebar in your themes .info file, you would then add: <?php print render($page['sidebar']); ?> to the relevant place in your page.tpl.php.

 
 
   
   
20
 
vote

另一点:不要错过所需的地区!

  regions[content] = Content regions[help] = Help regions[page_top] = Page top regions[page_bottom] = Page bottom   

更多就可以在 http://drupal.org/update/themes/6/7#关闭

要澄清这一点:如果定义自己的区域,则需要定义您使用的所有内容,包括所需的所有内容。换句话说,您不能只定义其他地区:如果您定义任何内容,则必须定义所有这些区域。
 

One other point: Don't miss the required regions!

regions[content] = Content regions[help] = Help regions[page_top] = Page top regions[page_bottom] = Page bottom 

More on this can be found at http://drupal.org/update/themes/6/7#closure.

To clarify on this point: If you define your own regions, you need to define all that you are using, including those that are required. In other words, you cannot just define additional regions: If you define any, you must define them all.

 
 
9
 
vote

为Drupal 7创建区域,主题与创建Drupal 6区域的区域没有不同; Drupal 7和以前版本之间的差异基本上是:

  • 该区域未使用 mytheme_regions() 函数定义,因为它在Drupal 5中完成,但它们在MyTheme.info中定义了使用 regions[] 指令,这是什么也与Drupal 6主题完成。
  • 这些区域使用drupal函数 render() ,而不是打印变量的内容。

默认的drupal 7区域是以下内容:

  regions[header] = Header regions[highlighted] = Highlighted regions[help] = Help regions[content] = Content regions[sidebar_first] = Left sidebar regions[sidebar_second] = Right sidebar regions[footer] = Footer   

drupal 7核心主题现在包括一个名为"突出显示" 的区域,它使用与Drupal 6中的命令语句区域相同的显示;它们还包括一个名为'help'的区域,默认情况下,默认情况下的 $help 变量的内容相同。

 

Creating a region for a Drupal 7 theme is not different from creating a region for a Drupal 6 region; the differences between Drupal 7 and the previous versions are essentially:

  • The regions are not defined using a mytheme_regions() function as it was done in Drupal 5, but they are defined in mytheme.info using regions[] directives, which is what is done also with Drupal 6 themes.
  • The regions are rendered using the Drupal function render(), instead of printing the content of a variable.

The default Drupal 7 regions are the following ones:

regions[header] = Header regions[highlighted] = Highlighted regions[help] = Help regions[content] = Content regions[sidebar_first] = Left sidebar regions[sidebar_second] = Right sidebar regions[footer] = Footer 

Drupal 7 core themes now include a region named 'highlighted' which uses the same display as the mission statement area in Drupal 6; they also include a region named 'help', that by default has the same content of the $help variable used by Drupal 6.

 
 
4
 
vote

主题区域是在您的主题中定义的.info文件 - 请参阅文档。只需添加一个带 regions[corner] = Corner 以获得一个角落区域。

然后您需要编辑Page.tpl.php文件并添加 <php print render($corner); ?> 您希望该区域显示出来。如果您的主题没有Page.tpl.php,则从基本主题或系统模块复制。

常见缺陷:

  • 如果主题文件没有声明的区域,则使用Drupal默认区域。如果要添加,则必须重新声明默认区域。当然,您可以删除任何区域,但请支持所需的区域。请参阅 docs 。

  • 对.info文件的更改或将新文件添加到主题(如page.tpl.php)只会在清除缓存后被注意到。

  • omega,一个非常流行的基本主题,不需要Page.tpl.php的任何更改,只是.info文件。但您必须访问UI中的主题设置并将您的区域分配给区域。

 

The theme regions are defined in your theme .info file xe2x80x94 see docs. Just add a line with regions[corner] = Corner to get a Corner region.

Then you need to edit the page.tpl.php file and add <php print render($corner); ?> where you want the region to show up. If your theme doesn't have a page.tpl.php, copy from the base theme or from the system module.

Common pitfalls:

  • If the theme.info file had no regions declared, it was using Drupal default regions. If you want to add, you will have to re-declare the default regions. You can, of course, remove any region but please support the required regions. See the docs again.

  • Changes to the .info file or adding new files to the theme (like page.tpl.php) will only be noticed after you clear caches.

  • Omega, a very popular base theme, won't need any change in page.tpl.php, just the .info file. But you will have to visit the theme settings in the UI and assign your region to a zone.

 
 
     
     
2
 
vote

按照以下步骤在主题中创建自定义区域:

  1. 转到您的主题.info文件并添加此行。

      regions[machine_name_of_your_region] = Name of your region   
  2. 虽然您还可以调用节点模板中的区域块 嗯,您通常将该区域添加到主题页面 模板。这通常是page.tpl.php,或者如果您有自定义 不同页面的模板文件,也要编辑这些文件。新的 区域将仅显示在模板周围的页面上 将新区域添加到。无论你想要你的新地区到哪里粘贴它 出现。

      <?php if ($page['machine_name_of_your_region']): ?>   <div id="sidebar-first" class="column sidebar"><div class="section">   <?php print render($page['machine_name_of_your_region']); ?>   </div></div> <!-- /.section, /#sidebar-first -->  <?php endif; ?>   
  3. 配置 - 性能 - 清除所有缓存

 

Follow the below steps to create custom region in your theme:

  1. Go to your theme.info file and add this line.

    regions[machine_name_of_your_region] = Name of your region 
  2. Although you can also call region blocks in the node template as well, you will generally add the region to the theme's page template. This is usually page.tpl.php, or if you have custom template files for different pages, edit those ones too. The new region will appear only on the pages built around the template you add the new region to. Paste it wherever you want your new region to appear.

    <?php if ($page['machine_name_of_your_region']): ?>   <div id="sidebar-first" class="column sidebar"><div class="section">   <?php print render($page['machine_name_of_your_region']); ?>   </div></div> <!-- /.section, /#sidebar-first -->  <?php endif; ?> 
  3. Configuration - Performance - Clear all caches

 
 
0
 
vote

在主题中创建一个新区域

您只需要在两个文件中定义它。

  • 主题.info
  • page.tpl.php

主题.info

  mytheme_regions()0  

page.tpl.php

现在渲染这个区域

  mytheme_regions()1  

现在清除所有缓存,在这里,你走了,你有一个新的区域。您可以在块配置页面上看到它。

要更多地访问 http://drupal.org/node/171205

 

Create a New region in Theme

You Just need to define it in two files.

  • Theme.info
  • Page.tpl.php

Theme.info

;;;;;;;;;;;;;;;;;;;;; ;; Regions ;;;;;;;;;;;;;;;;;;;;;  regions[navigation]      = 'Navigation' regions[header]          = 'Top Bar' regions[highlighted]     = 'Highlighted' regions[new_region_name] = 'Region Name' ;; Add New Region 

Page.tpl.php

Now render this region

  <?php if ($page['new_region']): ?>       <div class="new_region_class">         <?php print render($page['new_region']); ?>      </div>   <?php endif; ?> 

Now Clear all cache, Here you go, you have a new region in your theme. You can see it at your block configuration page.

For more visit http://drupal.org/node/171205

 
 

相关问题

23  正确的方法以编程方式更改主动Drupal主题?  ( Correct way to change the active drupal theme programmatically ) 
以编程方式更改主动渣元主题的正确方法是什么? ...

4  如何使用子主题覆盖主题的Template.php的单一函数?  ( How to override single function of themes template php using sub theme ) 
目标: drupal 7子主题开发 我不想覆盖整个template.php文件。我只是想覆盖template.php文件的单一函数。 ...

3  如何处理博客标签在贡献主题中?  ( How to handle blog tags in a contrib theme ) 
在博客或博客的网站中,分类通常用于标签和类别。 在Drupal 6中,Node.TPL.php文件可以使用$分类系统,如果它们需要访问与当前节点相关联的UnRended分类链接数组。该变量通常是通过Control主题假设来包含帖子标记和或类别,并且相应地呈现。 在Drupal 7中,$分类学不再可用。 是什么选择...

11  hook_preprocess_page():如何讲述视图页面?  ( Hook preprocess page how to tell a views page ) 
im写一个需要在视图页面中插入一些javascript和css文件的自定义模块。 im使用hook_preprocess_page,但我无法判断当前页面是否来自视图: function mymodule_preprocess_page(&vars) { var_dump($vars); //outpu...

5  视图幻灯片VS列表视图+ jQuery Cycle Lite?  ( Views slideshow vs list viewjquery cycle lite ) 
在我的工作站主页上的旋转图像是以列表格式的视图创建。我正在使用 jquery循环Lite 插件,用于旋转效果。 CycliT.Lite.js文件在我的主题的.info文件中的脚本数组中设置,页面中有一点代码.TPL.php检查这是否是主页,如果是,则设置旋转器。< / p> 现在我正在第二个旋转器用于另一个部分,我一...

51  如何使用模板文件来主题表单?  ( How to a use a template file to theme a form ) 
虽然drupal中的节点,注释,块和许多其他东西使用主题模板文件(如node.tpl.php)主题,表单是一个不同的故事。表单没有主题模板文件。如何获得特定的表单来使用自定义主题模板? ...

5  从Drupal表单字段/标签中删除冒号  ( Remove colons from drupal form fields labels ) 
如何删除:从使用Drupal形式API制作的表单后出现: ...

5  主题Drupal表单API复选框作为网格  ( Theme drupal form api checkboxes as a grid ) 
我有一个自定义表单,显示大约2多个复选框的表单元素。如果可能,我想在表中每行输出3个。我怎么能做到这一点? $form['preference'] = array( '#type' => 'checkboxes', '#default_value' => 1373, '#require...

11  如何转换WordPress主题? [关闭]  ( How do i convert a wordpress theme ) 
关闭。这个问题需要详细信息或清晰度。它目前不接受答案。 想要改进这个问题?添加详细信息并通过编辑此帖的问题。 关闭 2个月前。 ...

2  如何在节点/编辑页面上加载用hook_library()定义的库?  ( How do i load a library defined with hook library on node edit pages ) 
我已经定义了使用 hook_library() 的模块函数所需的JavaScript文件和CSS文件库。 如何在节点/编辑页面上加载此库? ...

8  移动设备的主题  ( Theme for mobile devices ) 
我希望Android,iPhone和其他移动平台可访问我的部位。是否有一个特定的主题我应该从中开始,或者我应该在一个主题中寻找的东西,除了干净简单吗? 我会更好地从头开始创造主题吗? ...

3  我该如何升级自定义主题?  ( How should i upgrade a customized theme ) 
我已经对我的主题文件模板,CSS和TPL文件进行了一些自定义更改。是否有最好的实践方法,在上传新主题之后通过线路并重新插入我的自定义更改以外更新主题的方法? 有没有更好的方法可以在未来接近这个? ...

5  定制登录/注册的最佳方法  ( Best method for custom login register ) 
我想创建一个自定义登录名和寄存器页面。我希望两种表格在彼此上方的模板的内容区域中显示在正面上,而不是在单独的节点上。此外,我想尝试重复使用已存在的代码以验证表单。 我已经四处寻找并找到了不同的方式来实现这一目标,所以我想知道做这个问题的最佳方法。案例块,模块或模板或......? 将欣赏到内容或特定示例的链接。 ...

1  使用打印机,电子邮件和PDF版本模块打印内容窗格  ( Printing a content pane with printer email and pdf versions module ) 
我正试图确定如何将内容窗格添加到与自定义tpl.php文件添加到打印版本的自定义tpl.php文件。我之前用过这个块完成了这个,添加了我需要用块打印出来的区域,但在这种情况下,我认为我不认为我可以打印出"content_bottom" 等。 ...

5  从给定页面删除特定样式表  ( Remove specific stylesheets from a given page ) 
将样式表添加到特定页面很简单:实现 hook_preprocess_page() ,呼叫 drupal_add_css(...) 并设置 $vars['styles'] = drupal_get_css() 。 但是,删除的适当方法一个样式表(或在我的情况下,所有的"媒体=屏幕" 样式表),而不会干扰缓存系统? (...

4  在模块中覆盖视图表布局  ( Overriding a view table layout in module ) 
我正在尝试从我的模块中覆盖视图表。我无法找到参数的假设是什么,并以什么顺序(对于我的hook_theme func)。我从视图/主题复制了主题文件,没有修改。有谁知道出现了什么问题,以及争论值应该是什么? 我的主题配置目前: 'views_view_table__opportunities_mentions' =...

2  如何将宽度提高到Omega子主题超过950个可用像素  ( How to increase the width to the omega sub theme more than 950 usable pixels ) 
我在Drupal 7中创建了omega主题(版本7.x-2.1)的新子主题。 但我想使用970个可用像素而不是950像素作为"默认容器宽度" 中的子主题。 我该怎么办?我是否应该从主题/ omega / omega / css / 960.css 更改960.css文件。或者我应该覆盖960.css文件形成我的子主...

2  hook_preprocess_page:“node_load()+ node_page_view()”Versus“%节点+ node_page_view()”  ( Hook preprocess page node load node page view versus node node page ) 
存在基本节点(NID"123" ),并且使用 hook_menu :注册了两个路径的模块 first/%node second 两个页面回调使用 node_page_view($node) 要显示节点的全部页面视图,除了第二个回调还使用 99887668 以获得 $node 。 因此 <div ...

3  如何使用条件逻辑在Page.tpl.php中显示<div>,基于节点ID?  ( How can i use conditional logic to not display a div in page tpl php based on ) 
我正在使用包含面板"禁用Drupal块/区域" 设置的区域的区域。我尝试在PHP中删除使用if语句,但我的php语法是错误的,或者我不使用正确的drupal变量。现在,该部分如下所示: <?php if ($node->nid != 51) { echo '<div id="left">'...

7  Drupal 7中的主题_Menu_Item是什么?  ( What is the equivalent of theme menu item in drupal 7 ) 
我知道在drupal 6存在: theme_menu_item ,但在drupal 7中没有。是否有替换,以便我修改主系统菜单的输出? 实际上我想做一个菜单项的过滤器,具体取决于一些标准,我将设置在功能中。 ...




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


Licensed under cc by-sa 3.0 with attribution required.