【问题标题】:How to add span tag in to Drupal webform element label?如何将 span 标签添加到 Drupal webform 元素标签?
【发布时间】:2016-06-19 10:03:26
【问题描述】:
我正在尝试以不同的方式设置我的网络表单复选框和单选按钮的样式。出于这个原因,我想在标签中插入 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;
}
}
【问题讨论】:
标签:
drupal
drupal-7
drupal-modules
drupal-views
【解决方案1】:
我能够通过使用 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 自行添加标签以及您自己的包装元素。
【解决方案2】:
我的回答可能看起来很傻,但你不能只用 CSS 实现这一切吗?
通过使用类似
的东西
input[type='checkbox'] { ... }
input[type='radio'] { ... }