【问题标题】:How to add a css class programmatically to a piece of code?如何以编程方式将 css 类添加到一段代码中?
【发布时间】:2013-02-26 22:06:46
【问题描述】:

我有这段代码,只要我需要粘贴drupal(7) 搜索表单。

<?php print drupal_render(drupal_get_form('search_block_form')); ?> 

问题是,如果不修改页面中的其他文本输入,我无法定位特定的 input[type="text"]

我已经尝试将代码包装到一个类 DIV 中,比如说 special-search-form,所以我可以这样做

.special-search-form input[type="text"] {}

但这不行。 有没有办法在 drupal_render() 调用中添加一个类?

【问题讨论】:

  • 嗯,你可以修改search_block_form的视图
  • 您是否尝试过只在.special-search-form input 后面加上[type="text]
  • 是的,它什么也没做......

标签: php css class drupal


【解决方案1】:

有两种方法可以解决这个问题。

A) 通过模块

function hook_form_alter(&$form, &$form_state, $form_id) {
  switch ($form_id) {
    case 'search_block_form':
      $form['#attributes']['class'][] = 'extra_class';
      break;
  }
}

我认为这也可能有效,但我需要澄清这一点......

function hook_search_block_form_alter(...) {
  $form['#attributes']['class'][] = 'extra_class';
}

B) 通过一个主题[search-block-form.tpl.php]

<div class="extra_class">
  <?php echo $search_form; ?>
</div>

【讨论】:

  • 谢谢!但是这些类不是影响所有搜索形式吗?有没有办法针对一个特殊的目标? (我需要一个顶部的搜索表单和页面底部的另一个)。
【解决方案2】:

您可以尝试使用表单 ID 作为根 css 类。类似的东西:

#search-block-form input {}

或者更详细地定义它:

#search-block-form input[name="search_block_form"] {}

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2012-02-26
    • 2018-07-05
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多