如何在页面回调构建阵列上设置特定于页面的CSS类? -- 7 领域 和 theming 领域 drupal 相关 的问题

How to set page-specific CSS classes on the page callback build array?


4
vote

问题

中文

我有一个页面回调:

  function example_page() {   $build = array();    $build['#attributes'] = array('class' => array('example-class'));    $build[] = array(     '#markup' => '<p>My text here</p>',   );    return $build;  }   

正如您所看到的,我已尝试将类添加到DIV中,以与表单API工作相同的方式包裹渲染阵列的输出。我还尝试了设置 <body class="melbourne theme_parks">0 <body class="melbourne theme_parks">1 ,但所有这些树语法都被忽略,内容只是包装在 <body class="melbourne theme_parks">2 中,这是不是很有帮助。

英文原文

I have a page callback like this:

function example_page() {   $build = array();    $build['#attributes'] = array('class' => array('example-class'));    $build[] = array(     '#markup' => '<p>My text here</p>',   );    return $build;  } 

As you can see, I have attempted to add classes to the div that wraps the output of the render array in the same fashion as the form API works. I have also tried setting $build['classes'] or $build['classes_array'], but all of these tree syntaxes are ignored, and the content is simply wrapped in <div class="content">, which is not very helpful.

     

回答列表

2
 
vote
vote
最佳答案
 

#attributes 是正确的属性,但问题是$ build本身不是实际渲染元素(除非做一个),它只是渲染元素的集合。

要使它成为一个实际的渲染元素,您必须将#type属性设置为"容器" 。这只不过是包含其他元素的属性的div。请参阅应该使用"容器" 表单元素? theme_container()。

您可以影响所提到的内容div,即在您的控制之外。添加容器将在其中添加一个新的div。

 

#attributes is the correct property, but the problem is that $build itself is not actually an render element (unless make it one), it's just a collection of render elements.

To make it an actual render element, you have to set the #type property to for example 'container'. That is nothing more than a div with attributes that contains other elements. See When should the "container" form element be used? and theme_container().

You can however not affect the mentioned content div, that is outside of your control. Adding a container will add a new div inside that one.

 
 
 
 
1
 
vote

假设您的模块被称为"示例" ,您可以执行此操作:

  function example_preprocess_node(&$variables, $hook) {   $variables['content_attributes_array']['class'][] = 'my_class'; }   
 

Assuming your module is called 'example', you can do this:

function example_preprocess_node(&$variables, $hook) {   $variables['content_attributes_array']['class'][] = 'my_class'; } 
 
 
 
 
0
 
vote

除了伯迪尔给出的答案外,还可以查看使用 99887665 来使用主题函数包装元素。我认为它可能有类似的结果。

  <div class="content">   

是Drupal中的一个非常标准元素,用于定义页面内容。如果您删除它,您可能会发现您有不必要的侧面会影响。

 

In addition to the answer which Berdir gave you could also look at using #theme_wrappers to wrap the element using a theme function. I think it may have similar results.

<div class="content"> 

is a pretty standard element in Drupal to define the page content. You may find you have unwanted side affects if you remove it.

 
 
 
 

相关问题

3  Drupal 7 - 在Template.php中访问页面内容  ( Drupal 7 access to page content in template php ) 
在drupal 7中,我正在尝试从template.php访问页面的正文字段。我想在文本中找到一个关键字,然后将后续文本发送到单独的变量,以便我可以在page.tpl.php 中格式化它。 我可以使用该节点 $ var ['node'] 但找不到访问节点内容部分的方法。 我可以使用以下内容访问page.t...

0  是否有任何方法可以将Java进入Drupal? [关闭]  ( Is there any way to implement java into drupal ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅关注一个问题,只有编辑此帖。 closed 1年前。 ...

10  如何将条件JavaScript添加到主题?  ( How to add conditional javascript to theme ) 
我想使用 selectizr 脚本在IE6-8中模拟CSS3选择器。 但我很难将它添加到我的主题中。到目前为止尝试: 1)将其强制到html.tpl.php头部分: <!--[if lt IE 9]> <script src="<?php print base_path() . path_to_theme()...

2  建议管理和故障排除模块  ( Advise for managing and troubleshooting modules ) 
我认为任何使用Drupal的人迟早都会进入这个。您正在尝试到解一些解决方案,并开始添加模块。那么有些事情开始打破。我最后一次有这个问题,我卸载,然后通过在模块页面上启动/可重新设置复选框重新安装模块。 这次我有很多新的内容类型和视图和wot wot,而且我害怕。 (&gt; _&lt;)我不知道我是否会丢失这些比特。...

1  我应该在drupal 7中实现哪些钩子,这是相当于hook_comment()和hook_nodeapi()?  ( Which hooks should i implement in drupal 7 that are the equivalent of hook comme ) 
这是我使用的代码,用于drupal 6: /** * @Implement of hook_nodeapi() */ function mycaptcha_nodeapi(&$node, $op, $teaser, $page) { global $user; switch ($op) { c...

15  删除render和node.tpl.php添加的div  ( Removing divs added by render and node tpl php ) 
我正在尝试为drupal 7构建一个html5模板,我很特别地了解干净的代码。我希望完全控制HTML和CSS,这是我使用自己的自定义主题的大多数情况下。换句话说,我有一个HTML5和CSS集,我想用Drupal完全使用。我不是太多了解整个预处理功能如何工作。 当我使用'打印渲染时($ page [content'])...

2  $ form ['cid'] ['#value']是什么意思?  ( What is the meaning of formcidvalue ) 
/** * @Implement of hook_form_alter() */ function mycaptcha_form_alter(&$form, &$form_state, $form_id) { if ($form_id == 'comment_form...

4  如何使用XML SiteMap模块设置每个内容类型的频率?  ( How can i set frequency of each content type with the xml sitemap module ) 
我使用XML SiteMap模块(7.x-2.0-beta3)为我的网站生成XML网站地图。问题是我无法设置内容类型的更改频率。 在"admin / config / search / xmlsitemap / settings" 中我有一个"更改频率" 组合框,但这仅适用于前页。 我有一些其他内容类型和分类标签。如...

1  需要帮助阻止缓存  ( Need help with block caching ) 
我在 a drupal 7站点中,运行闪存卡游戏。 下面的那个主块我显示前一周和前7名最佳球员的获胜者的另外一个块: 和这3个块实际上拖动了我的网站的性能(加载页面比没有它们超过5-10秒)。我更愿意每15-30分钟缓存一次,因为每周的前7个不经常改变。 如何做到这一点 - 没有危害我的主块与游戏? IE。主块...

5  多个上下文块订单/重量  ( Multiple context block order weight ) 
我有2个上下文设置,每个上下文都在同一区域中块。 有时间在两个上下文中都会同时发生,并且随着这两个块一起出现在一起。 当前似乎他们不按照我所要求的顺序,有一种加权这些上下文的方法吗?我知道在上下文中的加权作品,但这不是我在这一点上所需要的。 目前使用: Drupal 6.22, 背景6.x-3.0 更新: 大...

17  如何检测从“发布”将节点更改为“未发布”时?  ( How can i detect when a node is changed from published to unpublished ) 
在 hook_node_update() ,我可以轻松地告诉节点的"状态" (无论是发布的还是不发布)。 但是,是否有一种简单的方法来检查更新的节点是否已发布,但现在不是? (或反之亦然)? 我认为规则可能对"节点值已经改变" 或沿着这些行的某些条件,但我想以编程方式进行此操作。 我找到了似乎在drupal.org上...

1  我应该使用什么样的观点?  ( What kind of views should i use ) 
我将下载我正在创建的Drupal 7网站的视图模块,但有2个不同的版本:有一个alpha3,开发快照,另一个没有我可以看到的名称(它以绿色突出显示。我应该使用哪三个版本? ...

2  使用Drupal和MySQL查询匹配的用户数据  ( Querying matching user data with drupal and mysql ) 
我正在使用drupal 7与当前的mysql版本。我有一个自定义配置文件字段表,包括Entity_ID(与用户ID对应)和一个值字段,其具有用户可以选择作为个人兴趣的许多文本字符串之一。用户可以选择其配置文件的字符串数量是可变的。 我需要查询登录用户的兴趣列表,然后查询有任何匹配兴趣和用户ID的用户。我有一个基本上有...

14  在添加或编辑节点后重定向到自定义页面  ( Redirect to a custom page after a node has been added or edited ) 
使用 hook_form_alter ,如何在创建或编辑节点而不是创建或编辑的节点之后将用户重定向到自定义页面? hook_form_alter() 的当前代码是以下一个: function custom_form_alter(&$form, &$form_state, $form_id) { if ($...

3  如何使用户仅在Drupal 7中从某些页面(并且只有一次)添加内容  ( How to enable users to add content only from some pages and only once in drup ) 
我目前需要在drupal中实现这个用例。 我们有两种不同类型的用户:注册用户和主持人。 我需要执行以下操作: 注册用户只能添加一个 特定内容类型:VideoCV(没有 这个主题需要的帮助) 注册用户可以添加此内容 只能从预定的页面中称为 "创建视频CV" (页面是 可在主菜单中访问) 一旦 主持人可以在任何地方添加...

7  有一个替代品的替代方案 - 一个有7个主题的人吗?  ( Is there an alternative to themegarden org one that has drupal 7 themes ) 
我喜欢themegarden.org,我认为这将是一个有用的工具,帮助我向客户解释和同事如何满足和演示和应该分开。它看起来像主题花园只适用于Drupal 4.7,5和6.有谁知道D7兼容网站,我可以轻松浏览主题吗? ...

19  页面布局的最佳实践  ( Best practices for page layouts ) 
我正在尝试弄清楚最佳实践在Drupal中的页面布局。许多页面上有几个不同的元素,如主内容,标题图像等。我不是在寻找创建"基本页面" 或类似的东西(即整页的一个节点)。 对每个页面使用面板是好的,它们将块放入其中?我可以删除视图,可能是节点,联系表单等... ...

0  Nicemenu标记的建议TPL帮助吗?  ( Suggestion tpl help for nicemenu markup ) 
我正在使用Nicemenus显示我的分类树。由于我选择了没有父菜单,因此模块将根目录显示为单独的可处理的菜单"图块" ,这是可以的。然而,它们是 <li> 括在一个 <ul> 中的项目。由于造型/布局问题,我想要的是每个瓷砖都有单个父级 <ul> 。 所以所以而不是拥有: <ul> <li>root item ...

2  如何解决CKEDITOTER显示问题?  ( How to fix display problems with ckeditor ) 
我已安装CKEditor 3.6.0.6,我已启用一些按钮,如图所示: CKEDITOR 3.6.0.6在全尺寸浏览器中 但是当我调整小于按钮区域小小的浏览器时,这里是如何寻找的: 如何制动CKEDITOR按钮以在多行上显示?以及为什么这种CKEDITOR的行为? 我的浏览器chrome 12.0.742....

1  在打印前隐藏表单元素  ( Hidding a form element before printing ) 
我想只打印一个非常大的形式,我的第一个方法如下: function THEME_preprocess_user_profile(&$variables) { global $user; $account = user_load($user ->uid); $variables['use...




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


Licensed under cc by-sa 3.0 with attribution required.