Answers:
您还可以使用#container
form元素,并且代码类似于以下代码:
$wrapper = array(
'#type' => 'container',
'#attributes' => array(
'class' => array('class-name'),
),
);
$wrapper['twitter-icon'] => array(
'#type' => 'markup',
'#markup' => '<div class="twitter-icon"></div>'
);
$wrapper['twitter-link'] => array(
'#type' => 'markup',
'#markup' => l(t('follow us on Twitter'), 'https://twitter.com/#!/zujava'),
);
在#container的元素包装了其子元素<div>
的标签,其CSS类是一个在传递的#attributes
属性。
您甚至可以为“ twitter-icon”元素使用一个容器,但这没有任何帮助,除非您可以向其中添加元素,如以下代码所示:
$wrapper = array(
'#type' => 'container',
'#attributes' => array(
'class' => array('class-name'),
),
);
$wrapper['twitter-icon'] => array(
'#type' => 'container',
'#attributes' => array(
'class' => array('twitter-icon'),
),
);
if ($condition) {
$wrapper['twitter-icon']['twitter-icon-text'] => array(
'#type' => 'markup',
'#markup' => t('Icon text'),
);
}
$wrapper['twitter-link'] => array(
'#type' => 'markup',
'#markup' => l(t('follow us on Twitter'), 'https://twitter.com/#!/zujava'),
);
#suffix
最后一个元素的#prefix
属性或第一个元素的属性移至新添加的元素。如您所说,这不太容易出错。
这是您在找什么吗?
$output = array(
'twitter-icon' => array(
'#type' => 'markup',
'#markup' => '<div class="twitter-icon"></div>'
'#prefix' => '<div class="test">',
),
'twitter-link' => array(
'#type' => 'markup',
'#markup' => l('follow us on Twitter', 'https://twitter.com/#!/fdgf'),
'#suffix' => '</div>',
),
);
希望有帮助!
theme_render_example_add_div
见api.drupal.org/api/examples/...)
您也可以为此创建一个主题。
$form['twitter']['#theme'] = 'my_twitter_theme';
$form['twitter']['icon'] = array(
'twitter-icon' => array(
'#type' => 'markup',
'#markup' => '<div class="twitter-icon"></div>'
);
$form['twitter']['link'] = array(
'#type' => 'markup',
'#markup' => l('follow us on Twitter', 'https://twitter.com/#!/zujava'),
);
并在您的主题挂钩中:
function my_hook_theme(){
return array(
'my_twitter_theme' => array('form' => NULL)
);
}
并在主题函数中:
function theme_my_twitter_theme($form){
$output = "";
$output .= "<div class=\"twitter\">";
$output .= drupal_render($form['icon']);
$output .= drupal_render($form['link']);
$output .= "</div>";
$output .= drupal_render($form);
return $output;
}
我在Drupal 6中使用了这个,我不确定在D7中是否也可以使用,但我希望如此