如何基于页面路径/深度动态地将类添加到正文标记? -- 7 领域 和 theming 领域 drupal 相关 的问题

How to add classes to BODY tag dynamically based on page path/depth?


22
vote

问题

中文
如何动态地将类添加到正文标记,例如下面的此示例?

-home

--melbourne <body class="melbourne">
---主题公园 <body class="melbourne theme_parks">
---餐厅<代码> <body class="melbourne restaurants">
- 新约克<代码> <body class="new_york">
---主题公园 <body class="new_york theme_parks">
---餐厅<代码> <body class="new_york restaurants">
- 联系我们<代码> <body class="contact_us">

在这里和没有编程背景的情况下,杜布尔纽比尔。因此,如果您在共享解决方案时可以详细说明,我非常欣赏。
英文原文

How to add classes to the body tag dynamically such as this example below?

-Home
-Cities xc2xa0xc2xa0xc2xa0xc2xa0xc2xa0
--Melbourne xc2xa0xc2xa0xc2xa0xc2xa0xc2xa0 <body class="melbourne">
---Theme Parks xc2xa0xc2xa0xc2xa0xc2xa0xc2xa0 <body class="melbourne theme_parks">
---Restaurants xc2xa0xc2xa0xc2xa0xc2xa0xc2xa0 <body class="melbourne restaurants">
--New York xc2xa0xc2xa0xc2xa0xc2xa0xc2xa0 <body class="new_york">
---Theme Parks xc2xa0xc2xa0xc2xa0xc2xa0xc2xa0 <body class="new_york theme_parks">
---Restaurants xc2xa0xc2xa0xc2xa0xc2xa0xc2xa0 <body class="new_york restaurants">
-Contact Us xc2xa0xc2xa0xc2xa0xc2xa0xc2xa0 <body class="contact_us">

Drupal newbie here and without programming background. Therefore, I'd much appreciate if you could be as detailed as possible when sharing a solution.

     

回答列表

37
 
vote
vote
最佳答案
 

阐述了Nikhil Mohan的答案,您可以实现 template_preprocess_html() < / code> 在主题的template.php文件中。阅读覆盖标注输出以了解此处发生的基础知识。

在此函数中,您可以访问变量 $vars['classes_array'] ,它包含将应用于页面上的html 998887666 标记的类列表。

不幸的是,没有立即可用的关于菜单中当前页面位置的信息。你可以使用 menu_get_item() 然后<一个href ="http://api.drupal.org/api/drupal/includes!inmenu.inc/function/menu_get_ancestors/7" > menu_get_ancestors() 获取此信息,但这我们可以使用SIMPILER方法来实现很多处理能力。

假设您使用PathAuto模块根据菜单路径自动为内容页面创建语义路径(即,您的墨尔本主题公园页面将具有路径'Melbourne / Theme_Parks'),您可以使用页面的路径来创建您正在寻找的课程:

  function THEMENAME_preprocess_html(&$vars) {   $path = drupal_get_path_alias();   $aliases = explode('/', $path);    foreach($aliases as $alias) {     $vars['classes_array'][] = drupal_clean_css_identifier($alias);   }  }   

就是这样。 Drupal现在将查看当前页面的路径别名,并为path别名的每个块添加到 9988876610 标记。

 

To expound on Nikhil Mohan's answer, you can implement template_preprocess_html() inside your theme's template.php file. Read the documentation on Overriding Themable Output to understand the basics of what is going on here.

Within this function, you have access to the variable $vars['classes_array'], which holds a list of classes that will be applied to the HTML <body> tag on the page.

Unfortunately, information about the current page's location in the menu is not immediately available. You could use menu_get_item() and then menu_get_ancestors() to get this information, but that is a lot of processing power for something that we can probably get to with a simpiler approach.

Assuming you are using the pathauto module to automatically create semantic paths for your content pages based on the menu path (i.e., your Melbourne Theme Parks page would have the path 'melbourne/theme_parks') you can use the page's path to create the classes you are looking for:

function THEMENAME_preprocess_html(&$vars) {   $path = drupal_get_path_alias();   $aliases = explode('/', $path);    foreach($aliases as $alias) {     $vars['classes_array'][] = drupal_clean_css_identifier($alias);   }  } 

That's it. Drupal will now look at the path alias of the current page and add a class to the <body> tag for each chunk of the path alias.

 
 
   
   
1
 
vote

您可以使用 template_preprocess_html < / code> ,html.tpl.php

的预处理变量

另请参见 html.tpl.php

默认主题实现,以显示单个drupal页面的基本HTML结构

 

You can make use of template_preprocess_html, which Preprocess variables for html.tpl.php

See also html.tpl.php

Default theme implementation to display the basic html structure of a single Drupal page

 
 
1
 
vote

此处是基于角色或页面在正文标签上添加类的模块。

常见的身体类

 

Here is the module to add classes on body tag based on role or pages.

Common Body Class

 
 
0
 
vote

创建了 shob等级drupal module 协助这一点。随意创建问题以添加更多的身体类集成点。

 

Created the Body Classes Drupal module to assist with this. Feel free to create issues to add more body class integration points.

 
 

相关问题

3  如何在叠加模式中表单提交后重定向用户?  ( How to redirect user after form submit in overlay mode ) 
以下代码将用户重定向到 node/add/article 但不使用叠加。 $form_state['redirect'] = 'node/add/article' 如何在叠加模式中打开 node/add/article ? ...

7  如何选择要跳过Drush SQL-Sync @dev @staging的哪些表?  ( How to choose what tables to skip for drush sql sync dev staging ) 
在我以前的问题之后 如何设置Drush SQL-sync不在@dev和@staging之间克隆用户? 我手动预选了80多个表,不应该自动同步(内容,角色和权限,用户,临时,缓存)。我对这个解决方案并不完全满意。为什么?因为我的过滤器决策是基于经验,直觉和猜测,当我想使用最好的实践方法时。 如何正确选择要跳过 drus...

9  在节点上“更改”  ( Changed by on nodes ) 
mysql> select nid, uid, created, changed from node; +-----+-----+------------+------------+ | nid | uid | created | changed | +-----+-----+------------...

1  进口推文,Blogpost,Flickr照片,幻灯片,[关闭]的好方法  ( A good way to import tweets blogpost flickr photos slideshare ) 
关闭。这个问题是基于意见的。它目前不接受答案。 想要改进这个问题?更新问题,以便通过编辑此帖的事实和引用来回答。 关闭 4年前。 ...

1  如果使用AJAX加载了评论表单,则忽略Ajax提交  ( Ajax submit ignored if comments form is loaded with ajax ) 
在D7中,我有一个自定义模块,在注释表单上启用Ajax表单。这是伟大的。 我也有注释在 commessblock 模块中使用 block_refresh 用下面的片段。这很好地展示评论和表格。但是,Ajax表单提交停止工作。 我试过呼叫 $Drupal.attachBehaviors() (如下所示)和 $Drupa...

3  自定义节点状态  ( Custom node status ) 
在 admin/content 中有"状态" 过滤器默认提供给我们: any published not published promoted not promoted sticky not sticky 我可以将这些映射直接到数据库中的 node 表格: mysql> select nid, stat...

3  视图中的位置/距离计算字段结果?  ( Location distance based calculated field in views results ) 
使用模块: drupal 7.12 意见3.3 位置3.x-dev (当然更多) 我有一个漂亮的标准视图,用户输入了距邮政编码的距离的接近过滤器,用于显示某个位置附近的商店(您的标准经销商/存储定位器搜索)。我想添加一个计算的字段(或其他东西)来显示每个商店从输入的邮政编码中的距离。此字段仅在视图中使用,...

8  查看3,语言上的上下文过滤器 - 允许多种语言  ( Views 3 contextual filter on language allow for multiple languages ) 
所以对于这个网站,我正在建立我需要能够执行以下操作。 当用户观看英语网站时显示所有英语文章 当用户在荷兰语中查看网站时,显示所有荷兰文章 - 但也是未经翻译的英语 当用户以德语查看网站时,显示所有德语文章 - 也是未经翻译的英语。 上下文过滤器,'内容翻译:语言'只允许放入一个值。这是指定的语言或全部。 但在我...

2  将查询转换为db_query_range [关闭]  ( Convert query to d7 for db query range ) 
这个问题不太可能帮助任何未来的访客;它仅与小地理区域,特定时刻及时的特定时刻或非常狭窄的情况,这些情况通常不适用于互联网的全球观众。有关帮助提出这个问题更广泛适用,请访问帮助中心。 ...

1  Mollom CAPTCHA小部件未显示在自定义表单上  ( Mollom captcha widget not showing up on a custom form ) 
d7 + mollom。我希望我的用户每次点击我网站上的 /file/123/download 如 /file/123/download 这样的链接时都会填写CAPTCHA。我正试图向我的需求弯曲Mollom Captcha,但还没有取得任何成功。 Mollom公共和私钥表示,他们已经被Mollom Server验...

2  显示菜单的子链接  ( Displaying a menus child links ) 
似乎是,默认情况下,emega和其他主题不会呈现子链接。 我已经尝试过各种模块(例如超级鱼和megamenu),但他们没有提供一个允许我主题到设计的结构。 我找到了这个页面,但它似乎没有使用 theme_links() 。 有没有一种简单的方法来启用我的所有菜单链接,并且在渲染之前仍然能够钩住它? ...

52  配置临时目录  ( Configuring the temporary directory ) 
我最近将一个站点从localhost移动到vps。我已经设法使公共和私人文件可写;但是,我不确定在哪里找到临时文件夹以及如何更改权限。我继续收到此消息: 无法复制指定的文件:// file3hl91e,因为未正确配置目标目录。这可能是由文件或目录权限的问题引起的。系统日志中有更多信息。 我正在使用Virtualm...

0  Drupal 7 - 完成在视图中嵌入观点的想法所需的建议  ( Drupal 7 advice needed to accomplish the idea of embedding a view in a view ) 
使用drupal 7 - 我的视图显示每个员工的所有项目分配。此视图正常工作,并以部门节点显示为块。 我有另一个显示页面"部门目录" 的视图。其中目录列出了诸如部门名称,地址,电话,传真,电子邮件等字段。 我尝试完成的想法是有一个部门的字段列表,然后将其列出员工分配。示例: view页面:部门: 财务部门 地址...

3  如何在分类法中向儿童展示父项条款?  ( How to show children terms of parent terms in taxonomy ) 
好的这件事是让我完全猛拉!我认为这个问题在某种程度上被问到了,但我似乎太愚蠢了,以调整我的要求。 我创建了一个名为"品牌" 的分类词汇,如此如此如此 级别1:品牌名称,如罗技,千兆字节等。 2级:产品类别如小鼠,键盘,耳机等每个品牌内。 3级:每个类别内的实际产品。 这些级别可以在必要时更深入。就像在老鼠一样,可...

1  有些麻烦AutoPath  ( Some trouble autopath ) 
我对用户路径别名有一些麻烦。我希望每个用户都有一个小页面 /member/username 。强制执行我在 user path下的设置( /admin/config/search/path/patterns )下建立( 99887665 )拼盘: member/[user:name] 。 这个似乎很好,但如果我看看联...

0  页面构建的$内容在哪里?  ( Where is the content of a page build ) 
我想将一些东西添加到我的 99887663 变量中添加到我的节点模板文件上,但在哪里组成这个变量?我假设它在template.php文件中,但具体函数归结 $content 变量的内容? ...

3  从核心模块中删除代码而不修改它(使用挂钩?)  ( Remove a code from core module without modifying itusing hooks ) 
参考我的问题< / a>关于从书页链接区域中删除"添加新注释" 链接,有没有办法在钩子的帮助下删除代码。我是实现钩子的新手。我找到了解决方案问题,但我需要更好的方法来实现它(也许是通过钩子,IDK)。 编辑 当我不得不从Core Book模块的 book-navigation.tpl.php 中发表 998...

5  如何在Drupal 7中使用Smarty  ( How to use smarty in drupal 7 ) 
我在PHP编程中有一些先前的经验,但我已经使用Smarty作为我的模板引擎,并发现易于使用。我读到Drupal正在利用Phptemplate作为模板引擎。所以,我只是想知道如何在Drupal中实现Smarty模板引擎? ...

2  清洁和简便的方法将元标记添加到我的D7网站  ( Clean and easy way to add meta tags to my d7 website ) 
我正在寻找一个简单的方法来向我的D7网站添加元标记。不是我害怕代码或任何类似的东西,而是内容经理(市场营销=&gt;你见过的最大IT Noobs)想通过使用Drupal UI来添加元标签。 我已经检查了 metatags快速 -module,但似乎这个模块只有能力添加Path-Meta标签。有替代方案吗?或者添加元标...

2  如何正确使用两个语境过滤器进行分类  ( How to properly use two contextual filter for taxonomy ) 
这是我的情况: 我有一个名为"rang" 的内容类型。 每个常量有两个具有分类术语的领域:"发行机构" 和"规范类型" 。 每个分类法都有自己的词汇。 我要查看意志: 过滤"机构A" 或"机构B" 颁发的所有"规范" 。 有两个上下文过滤器。一个用于"物质" ,第二为"规范类型" 。 如果未给出第一个参数,只需...




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


Licensed under cc by-sa 3.0 with attribution required.