国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

[Drupal教程] Drupal问题:如何自定义CCK字段的输出顺序

[复制链接]
发表于 1-17-2012 19:39 | 显示全部楼层 |阅读模式
常用drupal建站的朋友都知道,CCK是一个不能不用的模块。它太方便太强大了,能让不懂一点技术的人创建出任何想要的字段,比如有些文章需要一个副标题,但是drupal中默认只有一个Title项,这时候就要用CCK创建一个字段了。" E/ W4 j0 G- i* F6 E0 Q- t( W
9 E4 W  S# x4 t1 r
但是用我用CCK发现一个问题,如果一个内容类型用CCK创建太多的字段,那么它们的顺序很难控制,比如如果你想创建一个副标题,理想的方式是把这个sub title放到title的下面,这样比较符合常规,而且客户操作起来也更容易理解,但是用CCK创建的sub title 默认是会出现在body下面的,这时候该如何办呢?5 |0 I1 f8 e, z: ^' t6 H& e+ O" ~' R3 r

1 p& c# K6 m. Q3 x  `2 w" e! K3 u经过实践,发现用以下方法可以达到效果:( b( C/ T* @9 C2 n+ w# D( {' \
; k6 b: e- I& F1 C$ Z3 T4 @
首先,在template.php文件中加一个函数 function garland_preprocess_node_form(&$variables) { }
* O0 {! \; J1 K/ B0 g. U8 D& [然后再建一个node_form.tpl.php文件,在里面判断一下,比如我用CCK建的form名字叫products_node_form,就可以:
7 z) T2 o8 l* A6 e9 W1 [6 d. Uif (     $variables['form']['form_id']['#value'] == 'products_node_form' ){% @+ I& ]0 T! {0 e) |, J2 x! I. C! I
8 \( b/ S; `8 s
         print_r (drupal_render (  $variables['form']['title']  ) );
" M5 g, i) A0 I0 [( f6 t         print_r (drupal_render (  $variables['form']['field_subtitle']  ) );
* S" i' `1 b2 S! Y) `$ F         print_r (drupal_render (  $variables['form']['taxonomy']  ) );
+ @0 t7 D) r: W7 W4 {& m. |         print_r (drupal_render (  $variables['form']['menu']  ) );' U4 o; f7 N' g+ I; X. `
         print_r (drupal_render (  $variables['form']['body_field']  ) );
+ f+ t; W4 ^7 U7 q2 Z" m* p          print_r (drupal_render (  $variables['form']['revision_information']  ) );0 L3 h+ p- @- y2 T3 i" e/ O9 i
          print_r (drupal_render (  $variables['form']['comment_settings']  ) );
+ W- |' |" p6 s: b% \* ?          print_r (drupal_render (  $variables['form']['options']  ) );
0 b9 q0 b2 q1 R% B! v( l           print_r (drupal_render (  $variables['form']['path']  ) );
9 g; e2 P2 I- l% _. f/ u          print_r (drupal_render (  $variables['form']['attachments']  ) );! e. o6 o8 _. O4 q
           print_r (drupal_render (  $variables['form']['author']  ) );
( _# _- u+ B( W) }) T) n}9 ^  s7 S# D+ s9 H* p) k, a

, |, s$ N; g8 A6 H# L( P: l! u这样做的好处是灵活,可以随意控制输出的顺序,坏处是很不方便,如果字段多的话这样输出要累的半死。但目前我还没有发现什么好的方法,也许有更好的方法,有代以后深入研究。
- v" j+ M7 O% r另外,如果你想通过程序添加一个字段,也可能通过在这里添加2 f# w3 [7 Q% d2 N9 {/ T
              $variables['form']['mybutton'] =array(
3 n" n! l5 F3 b3 i. F5 G% w6 |    ###+ Y; O+ L) X0 n( ?9 t5 P* K
              );( P$ l: j3 W6 i3 a( h2 ?/ j
等等实现。
' N: s4 s+ M8 {* A+ o
. j, f" n- m0 i) B; c通过以上方法,再结合 CCK中的group分组效果,就可以达到任何想要的字段排序效果。
# x# R" n/ n) u% d( ]6 ~* D% C6 I0 \5 f( U4 W. `; m& z
! ~; J$ T2 @$ I  C

|2011-2026-版权声明|平台(网站)公约|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 2-12-2025 18:52 , Processed in 0.546683 second(s), 206 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表