如何将class / ID添加到任何元素?

时间:2012-01-06 03:07:12

标签: html drupal dom drupal-7

我无法找到简明的答案或对此有所帮助。我希望能够在Drupal中为 ANY 元素添加一个类或ID。因此,为了方便页面上的按钮,我想添加类“按钮”。这是怎么做的和在哪里做的?我在form.inc中看到了一个引用,并使用了类似module.php的东西,但是我正在努力获得一些具体的帮助。

3 个答案:

答案 0 :(得分:0)

这取决于您想要改变的元素。
例如,您可以使用hook_form_alter向表单添加类和ID 其他元素必须在自定义主题模板中进行更改或否决,具体取决于元素出现的位置,例如html.tpl.php,page.tpl.php,block.tpl.php,node.tpl.php等。
使用DevelDevel themer模块,您可以更好地了解要查看的位置。

编辑:BTW永远不会入侵核心,这会让你以后遇到很多麻烦!

答案 1 :(得分:0)

您需要为提供表单项标记的核心主题实现替代。其中包括theme_buttontheme_submittheme_textfield以及更多内容。

要执行此操作,请在活动主题的template.php文件中实现MYTHEME_theme_name()并根据需要覆盖输出:

function mytheme_button(&$variables) {
  $element = $variables['element'];
  $element['#attributes']['type'] = 'submit';
  element_set_attributes($element, array('id', 'name', 'value'));

  $element['#attributes']['class'][] = 'form-' . $element['#button_type'];
  if (!empty($element['#attributes']['disabled'])) {
    $element['#attributes']['class'][] = 'form-button-disabled';
  }

  $element['#attributes']['class'][] = 'my-new-class';

  return '<input' . drupal_attributes($element['#attributes']) . ' />';
}

以上函数直接从theme_button()函数复制,只需添加一行,即可为按钮元素添加额外的类。

确保在实现钩子后清除Drupal的缓存,以便主题注册表将其拾取。

值得注意的是,Drupal已经将form-textform-submit等类添加到单个元素中,因此如果您尝试使用CSS定位元素,可以尝试使用这些类。

答案 2 :(得分:-1)

浏览page.tpl.php中的sites/all/themes/yourthemes/...,您可以根据需要输入ID或类名。