Drupal 6 Drupal中主题收音机的正确方式?
我尝试在Drupal模块中对收音机进行主题化,覆盖了主题函数中的以下代码。对于实验,我没有改变下面函数中的任何内容,只是用不同的名称迁移到我的模块中,这不会与原始api函数冲突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']
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