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

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

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

[复制链接]
发表于 1-17-2012 19:39 | 显示全部楼层 |阅读模式
常用drupal建站的朋友都知道,CCK是一个不能不用的模块。它太方便太强大了,能让不懂一点技术的人创建出任何想要的字段,比如有些文章需要一个副标题,但是drupal中默认只有一个Title项,这时候就要用CCK创建一个字段了。
% G# w2 x' `8 [( Y9 B, H6 l8 I/ V3 w( m% _. d
但是用我用CCK发现一个问题,如果一个内容类型用CCK创建太多的字段,那么它们的顺序很难控制,比如如果你想创建一个副标题,理想的方式是把这个sub title放到title的下面,这样比较符合常规,而且客户操作起来也更容易理解,但是用CCK创建的sub title 默认是会出现在body下面的,这时候该如何办呢?
2 z1 _5 d! d0 L8 P6 y2 g
; W$ c2 l: X, ~( @" @  U5 W- \% h经过实践,发现用以下方法可以达到效果:
1 `" i% _6 A! |! U* n' v/ h4 b0 g3 H* A1 L# z) P0 S# ^6 t, I( c$ o) p
首先,在template.php文件中加一个函数 function garland_preprocess_node_form(&$variables) { }, U$ u3 @* p/ |% B
然后再建一个node_form.tpl.php文件,在里面判断一下,比如我用CCK建的form名字叫products_node_form,就可以:
& U8 p$ m- D# q" |if (     $variables['form']['form_id']['#value'] == 'products_node_form' ){
' I0 I1 y9 {+ ^  K: e; P7 E3 a9 y0 j, {9 t
         print_r (drupal_render (  $variables['form']['title']  ) );
5 A  v/ F) E) D         print_r (drupal_render (  $variables['form']['field_subtitle']  ) );: M; K- W& d" X$ \  E1 {
         print_r (drupal_render (  $variables['form']['taxonomy']  ) );: ?1 ^: G- e" u9 B4 N
         print_r (drupal_render (  $variables['form']['menu']  ) );  {0 n4 u# t: Y6 ~3 c' i2 G9 B7 E% N
         print_r (drupal_render (  $variables['form']['body_field']  ) );
; q2 z' F& L( W/ n          print_r (drupal_render (  $variables['form']['revision_information']  ) );7 v: a0 |" I7 X1 \2 i( V7 |9 b& K/ t
          print_r (drupal_render (  $variables['form']['comment_settings']  ) );6 V, q: A% t$ I9 x8 R
          print_r (drupal_render (  $variables['form']['options']  ) );
7 n6 Z6 f( ]' J+ U4 w9 J           print_r (drupal_render (  $variables['form']['path']  ) );+ H  m9 |; Y" W7 L0 Q/ D! K
          print_r (drupal_render (  $variables['form']['attachments']  ) );  S/ R6 u8 n8 |5 e
           print_r (drupal_render (  $variables['form']['author']  ) );
( R! z1 r  n+ y/ y& G9 K- e}
5 X; d" B4 o5 J) g. f  d& G+ m1 T  ~# j7 P4 k0 F9 H0 U* Q' c
这样做的好处是灵活,可以随意控制输出的顺序,坏处是很不方便,如果字段多的话这样输出要累的半死。但目前我还没有发现什么好的方法,也许有更好的方法,有代以后深入研究。
, P) a" x% _7 y- d另外,如果你想通过程序添加一个字段,也可能通过在这里添加, n' N2 ~$ h0 x& f/ o
              $variables['form']['mybutton'] =array(
! S9 \! g2 T, H# j6 R$ K$ b. j    ###0 y1 Q1 ]" `, ~' x. G
              );9 H* ~  T8 U1 @
等等实现。
, R2 j3 H, A& H+ J5 Y' l% Z
9 }0 S: o; S/ ~# X1 f9 H通过以上方法,再结合 CCK中的group分组效果,就可以达到任何想要的字段排序效果。
: H0 J1 i4 V2 l* c' F! c5 W8 k/ n" f0 ?& _+ B+ h# q, v$ H

8 |& S9 v5 a& u) @5 |! d! h' p

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

GMT+8, 5-1-2025 10:32 , Processed in 0.529734 second(s), 207 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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