Drupal 6 Drupal中主题收音机的正确方式?

Drupal 6 Drupal中主题收音机的正确方式?,drupal-6,radio-button,drupal-theming,Drupal 6,Radio Button,Drupal Theming,我尝试在Drupal模块中对收音机进行主题化,覆盖了主题函数中的以下代码。对于实验,我没有改变下面函数中的任何内容,只是用不同的名称迁移到我的模块中,这不会与原始api函数冲突 function theme_radios($element) { $class = 'form-radios'; if (isset($element['#attributes']['class'])) { $class .= ' ' . $element['#attributes']['class']

我尝试在Drupal模块中对收音机进行主题化,覆盖了主题函数中的以下代码。对于实验,我没有改变下面函数中的任何内容,只是用不同的名称迁移到我的模块中,这不会与原始api函数冲突

function theme_radios($element) {
  $class = 'form-radios';
  if (isset($element['#attributes']['class'])) {
    $class .= ' ' . $element['#attributes']['class'];
  }
  $element['#children'] = '<div class="' . $class . '">' . (!empty($element['#children']) ? $element['#children'] : '') . '</div>';
  if ($element['#title'] || $element['#description']) {
    unset($element['#id']);
    return theme('form_element', $element, $element['#children']);
  }
  else {
    return $element['#children'];
  }
}
功能主题\u收音机($element){
$class='格式收音机';
if(isset($element['#attributes']['class'])){
$class.=''.$element['#attributes']['class'];
}
$element['#children']=''(!empty($element['#children'])?$element['#children']:'';
if($element['#title']|$$element['#description'])){
未设置($element['#id']);
返回主题('form#element',$element,$element['#children']);
}
否则{
返回$element['#children'];
}
}
主题注册和所有罚款。不幸的是,我没有得到任何结果。我只能看到表单标签(收音机的标签)。有什么想法吗


编辑:我设法解决了它。谢谢大家

问题解决了。我已经发布了一篇关于如何做的博客文章。任何需要类似问题帮助的人都可以参考该链接。


注意:此解决方案适用于Drupal 6。

问题已解决。我已经发布了一篇关于如何做的博客文章。任何需要类似问题帮助的人都可以参考该链接。


注意:此解决方案适用于Drupal6。

对于Drupal7,您必须深入挖掘才能解决此问题

首先在template.php中创建
MY\u-THEME\u-form\u-element()
,复制
THEME\u-form\u-element()
中的所有代码-您可以从中获得这些代码。在
开关($element['.\element\u display')
语句之前添加一个条件以检查元素是否为单选按钮。然后创建一个新函数以处理以不同方式呈现单选按钮的问题

if ($element['#type'] == 'radio') {
  $variables['rendered_element'] = ' ' . $prefix . $element['#children'] . $suffix . "\n";
  $output .= theme('form_element_label', $variables);
} else {
  switch ($element['#title_display']) {
从上面我们将单选按钮的呈现传递给函数
form\u element\u label()
,因此创建
MY\u THEME\u form\u element\u label()
,并将
form\u element\u label()的内容插入其中。编辑此新函数,将return语句替换为:

if (!empty($variables['rendered_element'])) {
    return ' <label' . drupal_attributes($attributes) . '>' . $variables['rendered_element'] . $t('!title !required', array('!title' => $title, '!required' => $required)) . "</label>\n";
} else {
    return ' <label' . drupal_attributes($attributes) . '>' . $t('!title !required', array('!title' => $title, '!required' => $required)) . "</label>\n";
}
if(!empty($variables['rendered_element'])){
返回'.$variables['rendered_element'].$t('!title!required',数组('!title'=>$title',!required'=>$required))。“\n”;
}否则{
返回'.$t('!title!必选',数组('!title'=>$title',!必选'=>$required))。“\n”;
}
这将给你一个单选按钮放在它的标签,而不是下面或上面

最后,您可以连接到主题_收音机,为单选按钮列表的呈现方式添加其他格式

这个答案是在它描述了一个使用复选框的解决方案时找到的


NB您也可以在格式化任何元素时应用此方法。

对于Drupal 7您必须深入挖掘才能解决此问题

首先在template.php中创建
MY\u-THEME\u-form\u-element()
,复制
THEME\u-form\u-element()
中的所有代码-您可以从中获得这些代码。添加一个条件以检查元素是否是
开关($element['\u-element\u-display')之前的单选按钮
语句。然后创建一个新函数来处理以不同方式呈现单选按钮

if ($element['#type'] == 'radio') {
  $variables['rendered_element'] = ' ' . $prefix . $element['#children'] . $suffix . "\n";
  $output .= theme('form_element_label', $variables);
} else {
  switch ($element['#title_display']) {
从上面我们将单选按钮的呈现传递给函数
form\u element\u label()
,因此创建
MY\u THEME\u form\u element\u label()
,并将
form\u element\u label()的内容插入其中。编辑此新函数,将return语句替换为:

if (!empty($variables['rendered_element'])) {
    return ' <label' . drupal_attributes($attributes) . '>' . $variables['rendered_element'] . $t('!title !required', array('!title' => $title, '!required' => $required)) . "</label>\n";
} else {
    return ' <label' . drupal_attributes($attributes) . '>' . $t('!title !required', array('!title' => $title, '!required' => $required)) . "</label>\n";
}
if(!empty($variables['rendered_element'])){
返回'.$variables['rendered_element'].$t('!title!required',数组('!title'=>$title',!required'=>$required))。“\n”;
}否则{
返回'.$t('!title!必选',数组('!title'=>$title',!必选'=>$required))。“\n”;
}
这将给你一个单选按钮放在它的标签,而不是下面或上面

最后,您可以连接到主题_收音机,为单选按钮列表的呈现方式添加其他格式

这个答案是在它描述了一个使用复选框的解决方案时找到的


NB您也可以将其应用于任何元素的格式设置。

编辑:我设法解决了它。谢谢大家!我可以在许多地方看到这个问题没有解决。如果可能的话,我会尝试写一篇博文并在将来发布链接。请记住,您可以随时发布您自己问题的答案并选择itEDIT:我设法解决了e it.谢谢大家!我可以在很多地方看到这个问题没有解决。如果可能的话,我会尝试写一篇博文并在将来发布链接。记住,你可以随时发布你自己问题的答案并选择它。请不要只发布链接答案。尝试添加更多内容。哇,不是更好。+1请不要只发布链接答案。尝试添加更多的内容。哇,不是更好。+1