常用drupal建站的朋友都知道,CCK是一个不能不用的模块。它太方便太强大了,能让不懂一点技术的人创建出任何想要的字段,比如有些文章需要一个副标题,但是drupal中默认只有一个Title项,这时候就要用CCK创建一个字段了。/ t/ c2 j0 }& p/ T ^& Q
' ]& ?, {0 Q( h p
但是用我用CCK发现一个问题,如果一个内容类型用CCK创建太多的字段,那么它们的顺序很难控制,比如如果你想创建一个副标题,理想的方式是把这个sub title放到title的下面,这样比较符合常规,而且客户操作起来也更容易理解,但是用CCK创建的sub title 默认是会出现在body下面的,这时候该如何办呢?
2 G l6 a% u, @9 \3 _
9 t; S+ R+ P% R" i; V- ~7 _4 m$ a经过实践,发现用以下方法可以达到效果:
& r0 O5 q. @- B8 B; h9 }, P9 V
" V8 ]1 u+ v' ~8 k3 H首先,在template.php文件中加一个函数 function garland_preprocess_node_form(&$variables) { }
6 _; l* a& d! |3 X8 {然后再建一个node_form.tpl.php文件,在里面判断一下,比如我用CCK建的form名字叫products_node_form,就可以: K! }7 f+ M+ Z5 { e
if ( $variables['form']['form_id']['#value'] == 'products_node_form' ){
& B. L0 K$ F& L% L/ A; a3 B4 ~; l2 ]/ ?8 Q
print_r (drupal_render ( $variables['form']['title'] ) );' g, H' V: g4 ~: A8 z7 G6 w8 u
print_r (drupal_render ( $variables['form']['field_subtitle'] ) );
/ p5 ~! d }1 c2 l print_r (drupal_render ( $variables['form']['taxonomy'] ) );
) K: R* \0 N) R8 k" H6 j print_r (drupal_render ( $variables['form']['menu'] ) );
^$ S4 a/ [) m9 ?1 M2 g print_r (drupal_render ( $variables['form']['body_field'] ) );
: Z" c$ ]* c7 n* v$ D print_r (drupal_render ( $variables['form']['revision_information'] ) );$ N: e4 b# p! y; d* a7 j2 m+ D1 y+ z+ C4 W
print_r (drupal_render ( $variables['form']['comment_settings'] ) );
7 m0 y) D/ O& N$ |" m i print_r (drupal_render ( $variables['form']['options'] ) );
) e( b$ k+ c r, P print_r (drupal_render ( $variables['form']['path'] ) );6 Z9 I! E- \- m& l
print_r (drupal_render ( $variables['form']['attachments'] ) );
/ Q6 E3 v, O/ j" r# U, h8 S print_r (drupal_render ( $variables['form']['author'] ) );5 ?8 H+ d/ X/ C) t4 ~
}, u) Q9 N* ]2 U8 v$ w
& _- m; ]4 E8 _. y, X* ^6 B
这样做的好处是灵活,可以随意控制输出的顺序,坏处是很不方便,如果字段多的话这样输出要累的半死。但目前我还没有发现什么好的方法,也许有更好的方法,有代以后深入研究。! t' }3 t' l) L# Z" f
另外,如果你想通过程序添加一个字段,也可能通过在这里添加
' S# u% }* H6 d6 t; F" l: ~ $variables['form']['mybutton'] =array(
- d. E6 _( b( M# R% `) z ###) u/ O6 X J! f" j5 q
);* N' D; P0 m: x# D9 I, }* s
等等实现。
* `/ e+ E* C" \1 [9 ?+ ]4 |! g4 ~: N+ H9 z# o$ c
通过以上方法,再结合 CCK中的group分组效果,就可以达到任何想要的字段排序效果。
" I7 S2 C$ k- A9 N% E* x. Z3 L
: L; w. H( x4 }: h1 ^! \. X7 \" I0 t L+ N& ?
|
|