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

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

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

[复制链接]
发表于 1-17-2012 19:39 | 显示全部楼层 |阅读模式
常用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

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

GMT+8, 6-17-2025 13:14 , Processed in 0.343616 second(s), 207 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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