You are here

老葛 怎么改变drupal form 生成的html啊 ?

g089h515r806 的头像
Submitted by g089h515r806 on 星期日, 2009-10-18 07:44
  • 牧草人
     

    2009-09-02 17:03:44

    老葛 怎么改变form 生成的html啊

  • 牧草人
     

    2009-09-02 17:04:44

    form api 自动会增加很多html代码 我怎么改变这些form api 自动添加的html呢

  • 牧草人
     

    2009-09-02 17:05:43

对于form api 的答复:
theme_element函数

Drupal表单自带了很多元素的默认主题函数,这些函数是可以覆写的.另外,可以为表单元素单独的定一个主题函数,负责表单元素的输出.

在覆写原来的默认函数时,你可以直接先把原来的代码复制过来,根据自己的需求做出修改.主要就是label和input的输出.

可以100%的控制表单元素的输出的.

不过通常很少这样用,通常的解决办法是使用CSS控制.

Drupal版本:

评论

g089h515r806 的头像

牧草人
 

2009-09-03 09:51:01

老师在吗?

  • 牧草人
     

    2009-09-03 10:11:35

    怎么覆写这个函数啊theme_textfield($element)

  • 牧草人
     

    2009-09-03 10:34:08

    老葛 请问 怎么覆写这个函数theme_textfield ($element)

  • 葛红儒 (55381091)
     

    2009-09-03 13:19:22

    你看一下开发指南的主题一章

  • 葛红儒 (55381091)
     

    2009-09-03 13:20:06

    在当前主题下的template.php文件中,创建一个themename_textfield ($element),就可以实现了

参考答案:

上面是对默认表单元素输出的覆写,对于特定表单元素的覆写,可以指定对应的主题函数,例如:

function rega_theme() {
    return array(
        'rega_username_element' => array(
            'arguments' => array(),
        ),        
    );
}

$form['name']['#theme'] ='rega_username_element';

function theme_rega_username_element($element){
 $title = $element['#title'];
 $size = empty($element['#size']) ? '' : ' size="'. $element['#size'] .'"';
  $maxlength = empty($element['#maxlength']) ? '' : ' maxlength="'. $element['#maxlength'] .'"';
  $class = array('form-text');
 $output = '<p><b>'.filter_xss_admin($title).':<span style="color:#9b2228">*</span></b></p>';
  $output .=  '<p id="pn">';
  $output .= '<input type="text"'. $maxlength .' name="'. $element['#name'] .'" id="uname"'. $size .' value="'. check_plain($element['#value']) .'"'. drupal_attributes($element['#attributes']) .' />';
  $output .= '</p>';
  return $output;
}

这样就可以100%的定制特定元素的输出了,从而也就可以100%的控制整个表单元素的输出了.

g089h515r806 的头像

  • 牧草人
     

    2009-09-03 13:38:13

    themename_textfield ($element),name指什么呀?

  • 葛红儒 (55381091)
     

    2009-09-03 13:39:18

    name是主题名字

  • 葛红儒 (55381091)
     

    2009-09-03 13:40:37

    theme_form_element($element, $value)

  • 葛红儒 (55381091)
     

    2009-09-03 13:41:07

    好像是这个函数,学习一下什么是主题函数的覆写吧

  • 牧草人
     

    2009-09-03 13:41:19

    在哪儿学?

  • 葛红儒 (55381091)
     

    2009-09-03 13:42:10

    Drupal开发指南的第8章