如何在Drupal webform元素标签中添加span标签?

时间:2016-06-19 10:03:26

标签: drupal drupal-7 drupal-modules drupal-views

我试图以不同的方式设置我的webform复选框和单选按钮的样式。出于这个原因,我想在标签中插入span元素并使用它而不是原始复选框。

找到此模块:https://www.drupal.org/project/webform_optionsmarkup,但未列出的选项会显示在我的网络表单字段设置中。

有没有人知道解决这个问题的好方法?

 function bigdaddy_preprocess_webform_element(&$variables) {
  if ($variables['element']['#type'] == 'textfield' || $variables['element']['#type'] == 'textarea') {
    $variables['element']['#title_display'] = 'after';
  }
  if ($variables['element']['#type'] == 'checkboxes') {
    foreach ($variables['element']['#options'] as $key => $one) {
      $variables['element']['#options'][$key] = "<span>jpnas</span>" . $one;
    }

}

2 个答案:

答案 0 :(得分:0)

通过使用hook_form_alter()函数,我能够实现所需的功能。在模块的.inc文件中,我创建了一个函数,如MY_MODULE_form_alter。我将分享我的代码...

function MY_MODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'MY_FORM_ID') {
    foreach($form['ELEMENT_#NAME']['#options'] as $key => $value) {
      // $form['ELEMENT_#NAME'][$key]['#theme_wrappers'] = array();
      $form['ELEMENT_#NAME'][$key]['#prefix'] = '<span>jpnas</span>';
      $form['ELEMENT_#NAME'][$key]['#suffix'] = '<span>jpnas</span>';
    }
  }
}

如果要将跨度放在复选框之前,请使用['#prefix']。 显然,将MY_MODULE替换为模块名称,将MY_FORM_ID替换为实际的$ form_id名称,将ELEMENT_#NAME替换为您要更改的表单元素的名称。请记住,如果需要查看任何这些值,可以执行var_dump($ form)。我正在做听起来像您想做的几乎一样的事情,只是我没有将其放入我的标签中,因为我还没有找到直接粘贴到标签上的方法。另一方面,输入元素是一个不同的故事。此外,如果取消注释循环中的第一行,则会从每个复选框周围除去包装器,但包装器将带有标签。然后,您可以使用#prefix和#suffix相应地自己添加标签以及自己的包装器元素。

答案 1 :(得分:-1)

我的回答看起来很愚蠢,但是你无法在CSS中实现这一切吗? 通过使用像

这样的东西
input[type='checkbox'] { ... }
input[type='radio'] { ... }