常用drupal建站的朋友都知道,CCK是一个不能不用的模块。它太方便太强大了,能让不懂一点技术的人创建出任何想要的字段,比如有些文章需要一个副标题,但是drupal中默认只有一个Title项,这时候就要用CCK创建一个字段了。% N7 N) t- l) t: ~
* x5 ?1 T. P; }' u$ U1 b但是用我用CCK发现一个问题,如果一个内容类型用CCK创建太多的字段,那么它们的顺序很难控制,比如如果你想创建一个副标题,理想的方式是把这个sub title放到title的下面,这样比较符合常规,而且客户操作起来也更容易理解,但是用CCK创建的sub title 默认是会出现在body下面的,这时候该如何办呢?
2 q) D" q e5 X4 q) y) N
- O0 i" ]! w4 ?( ~! q经过实践,发现用以下方法可以达到效果:. T- b$ s% \# n: q
( b' r7 e, k9 {6 l' d
首先,在template.php文件中加一个函数 function garland_preprocess_node_form(&$variables) { }) m) ^3 X) U9 U4 E" j
然后再建一个node_form.tpl.php文件,在里面判断一下,比如我用CCK建的form名字叫products_node_form,就可以:! F: i+ B i% m! ~! w2 `
if ( $variables['form']['form_id']['#value'] == 'products_node_form' ){
. S5 m$ \/ R, N+ l+ x# ~$ u) n: A. r) m, A6 I3 F
print_r (drupal_render ( $variables['form']['title'] ) );9 E1 X) o% U+ d; l
print_r (drupal_render ( $variables['form']['field_subtitle'] ) );$ x) t) o, s' l- n0 i$ V
print_r (drupal_render ( $variables['form']['taxonomy'] ) );5 b) w( D% g% Y. i1 \! N; y' ~
print_r (drupal_render ( $variables['form']['menu'] ) );3 `3 g* K- P$ l8 d) U+ r5 n2 i$ h- |7 N
print_r (drupal_render ( $variables['form']['body_field'] ) );0 ?% C9 u$ ^! @
print_r (drupal_render ( $variables['form']['revision_information'] ) );$ [5 A% Y# n U2 |, |: k- m
print_r (drupal_render ( $variables['form']['comment_settings'] ) );
6 d& y- Z* L, X8 p& u% B6 v print_r (drupal_render ( $variables['form']['options'] ) );
) T+ k% q) y) V( w5 E t print_r (drupal_render ( $variables['form']['path'] ) );1 B. a6 l: g: T$ ]3 T4 Z) A9 t
print_r (drupal_render ( $variables['form']['attachments'] ) );* J' T/ P' g' r! A
print_r (drupal_render ( $variables['form']['author'] ) );$ r. x$ b0 w4 u* A
}
4 f% l9 g M4 g v6 b4 O" O' ?9 ?) ^1 P* U, E+ Y0 `$ C: N& i
这样做的好处是灵活,可以随意控制输出的顺序,坏处是很不方便,如果字段多的话这样输出要累的半死。但目前我还没有发现什么好的方法,也许有更好的方法,有代以后深入研究。6 F& l) r3 h1 t$ M( |
另外,如果你想通过程序添加一个字段,也可能通过在这里添加7 {. L, y5 r v+ S5 M6 S$ p
$variables['form']['mybutton'] =array(
9 {/ F; t; w& s2 W' T8 d ###6 W( s9 S4 y* \
);. r1 o8 }% L/ D% ]2 l, u. y. b
等等实现。. A; `# M+ a. u! i; y" ]
# N5 m8 J8 u$ W, V$ |& d5 V& _: X通过以上方法,再结合 CCK中的group分组效果,就可以达到任何想要的字段排序效果。
: P% ^. j3 b% u9 r+ q; q1 M% T
7 h Y0 I" K2 y% z# d S
, Y& Z% s. g* e/ F1 c |
|