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

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

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

[复制链接]
发表于 1-17-2012 19:39 | 显示全部楼层 |阅读模式
常用drupal建站的朋友都知道,CCK是一个不能不用的模块。它太方便太强大了,能让不懂一点技术的人创建出任何想要的字段,比如有些文章需要一个副标题,但是drupal中默认只有一个Title项,这时候就要用CCK创建一个字段了。9 s  n- j# ~, k' R* k6 R+ `( G

; k  e2 Y1 x2 c( h但是用我用CCK发现一个问题,如果一个内容类型用CCK创建太多的字段,那么它们的顺序很难控制,比如如果你想创建一个副标题,理想的方式是把这个sub title放到title的下面,这样比较符合常规,而且客户操作起来也更容易理解,但是用CCK创建的sub title 默认是会出现在body下面的,这时候该如何办呢?
1 H1 k- ~: G8 A
$ {1 p1 y# ]' @/ u经过实践,发现用以下方法可以达到效果:
1 @8 }" Y9 ~7 V3 ~0 ~& x3 [
7 X; }4 _" ?* X: ]; e: \首先,在template.php文件中加一个函数 function garland_preprocess_node_form(&$variables) { }( d3 R4 ]3 A4 z& g5 f
然后再建一个node_form.tpl.php文件,在里面判断一下,比如我用CCK建的form名字叫products_node_form,就可以:/ l0 v$ ]0 `0 T9 m& ?& u9 n
if (     $variables['form']['form_id']['#value'] == 'products_node_form' ){
1 V6 b7 _0 A1 w  a: j/ }5 O% z, x  d8 A3 H
         print_r (drupal_render (  $variables['form']['title']  ) );: h' S! M' C8 ~+ C6 H$ m
         print_r (drupal_render (  $variables['form']['field_subtitle']  ) );
3 p" Y, W# {4 d' y; o6 t         print_r (drupal_render (  $variables['form']['taxonomy']  ) );
8 [: w2 L5 T7 m5 ?! R3 L/ ?! v         print_r (drupal_render (  $variables['form']['menu']  ) );" c& [1 [+ E3 U9 G: O6 }% U
         print_r (drupal_render (  $variables['form']['body_field']  ) );
) l1 ~' ]  N8 R2 G, x          print_r (drupal_render (  $variables['form']['revision_information']  ) );
% H! `% ^6 [- Q  {: O& K          print_r (drupal_render (  $variables['form']['comment_settings']  ) );( @/ l! E4 I: @  r$ [% B. W
          print_r (drupal_render (  $variables['form']['options']  ) );
3 J' R5 I+ v. x/ M$ q' `           print_r (drupal_render (  $variables['form']['path']  ) );5 L1 P& t' H3 x8 g
          print_r (drupal_render (  $variables['form']['attachments']  ) );' ?; @+ F( Z3 a. ], A
           print_r (drupal_render (  $variables['form']['author']  ) );
1 A) b3 X* Y$ D' d}
7 h) ?5 W3 R3 |. B
& o$ E/ w; d" A& r0 e6 {这样做的好处是灵活,可以随意控制输出的顺序,坏处是很不方便,如果字段多的话这样输出要累的半死。但目前我还没有发现什么好的方法,也许有更好的方法,有代以后深入研究。
+ G/ ^. ^3 [6 Q. `另外,如果你想通过程序添加一个字段,也可能通过在这里添加0 s  s$ o+ w# }7 g- S
              $variables['form']['mybutton'] =array(  c8 x! ^+ f; J: _8 h
    ###( A9 f8 |* x- x7 g; g- o
              );
5 H1 F" h3 d3 ~. i7 @5 M等等实现。& q  n+ g4 E# D) V* }
- T& \5 @7 T& |5 [$ L/ ^0 p! N
通过以上方法,再结合 CCK中的group分组效果,就可以达到任何想要的字段排序效果。3 j' s  A4 [* j# L
8 i: V9 S0 @. U/ p# X4 n% Y
" A. L+ _' U. T

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

GMT+8, 11-11-2025 18:31 , Processed in 0.336331 second(s), 208 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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