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

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

[Drupal问题] drupal 7.X:如何制作多级栏目列表页

[复制链接]
发表于 4-16-2012 15:18 | 显示全部楼层 |阅读模式

首页     ;P


写四种方法给参考:
1,可以通过panels +views组建出来。这两个模块都是很普及的模块,中文资料也比较多,可以百度找到相关文章。


2,module_invoke 方法,这种方法需要写模块跟代码,需要一定的php基础跟模块编写基础。(9idz.com 用此方法)
具体方法:
2.1,创建一个模块:在此我们命名为 common 模块,并且建立 common.info,common.module,模块创建过程可以参考:http://www.drupalla.com/node/248
2.2,假使要读出最新blog文章,可以在common.module创建一个function:

1: e( ~, R4 l( o
2- z; |7 V  G' U/ B8 J6 h
function common_show_article($content_type='blog', $p1='value1', $p2='value2', .....$pn='value n')
3 Q0 V" m$ a( [. p: M{ 函数内容 此处省略10000}

2.3,开启common模块,并在page.tpl.php 相应的位置输入:

14 Y/ [5 D* B0 _& t; l
<?php print module_invoke('common', 'show_article', '参数1', '参数2', '参数3', ..... '参数n');?>

 

3,跟方法2有点类似,也是得建一个module,不过3用的是hook_block_info,hook_block_view 两个hook,这两个hook能实现建立一个block,这里假使也是建为 common
3.1,建立block

1$ ~; n/ q' s0 d" d! W7 X, g9 C
2! o5 i/ D5 ?8 k0 H: r! N  l
3
$ a+ c* Q; I: |3 j5 @' r4 |4
% c. Q3 ^: B( b1 n3 ~5 V5& ?) C5 d: p9 V/ N0 N4 a) [
6% I/ P0 P& q6 }8 V2 l
7
+ }/ f- T  b+ H0 n  X+ H3 d, c81 E2 l' S" p) L# N0 a8 W9 F
9
2 A1 ^5 t7 V# j6 {( P/ \" h10
$ O3 M1 `$ r4 k) H* Q4 s11* L* g# W. d/ i. T' H1 e6 {
12
# o5 ?: b2 t; t, b13
9 R4 ?2 C5 F2 ^  g! {, [1 b9 m14& f" a6 d  k! K/ I- o. `, |+ Z0 \
15
5 c1 Q' V) b" F6 p169 K3 g4 q! }. Y, |% U5 n: K
17! L, ^5 {; _) b
18& T0 g6 @9 f+ s$ }8 u1 U
19. P! A. A% Y3 {7 E' c; c9 X# O
20
" @& P! k" ^4 F' h! v" Z4 ?214 v, r4 v. e- ^; ~( K6 \
22
. M* z* Y0 Q* X- [$ h1 @+ s234 `1 L+ V- G; w. S3 m7 {) H$ Y9 Y
24; m) s! c( r. z* N4 i
25
, r; D5 m+ T, X% K/ s& E26
. _' h# A3 G0 n1 L0 @9 M27) f7 Q( j& X, i2 ^6 Q* @8 \
284 {+ m8 Q2 M: U0 D$ i4 k5 P
294 Y1 S( o( s- S# r/ Q# O
/**3 ]2 ?" c7 z9 B5 i- B! c% a
 
2 {8 I4 Q6 ?  t4 ^: f* Implements hook_block_info().% T+ z* p9 n6 F9 Z
*/: c1 @2 n3 v+ D, Y( ^6 j5 S6 `
function common_block_info() {
! h# a+ s! _* V- N' G$ ]  $blocks['module_blog'] = array(4 w6 ]6 H; h4 B8 ]$ e- B0 X
    'info' => t('module blog'),
1 X+ a9 |' m, \0 U    'cache' => DRUPAL_NO_CACHE,
1 ~0 C) k( y. s8 n  );
9 g) d! g: G4 U' i  return $blocks;& w. C1 |$ g! F& Y7 X+ `
}
' P' B2 A; D2 P7 Y1 a- V/**/ l2 @0 x3 b( B- Q; o" Q% o5 O
* Implements hook_block_view().
$ h* l% `! I/ s# p' ^  k) _5 m*/* `4 R1 j. ]/ E0 p6 x- D% ~& ~
function common_block_view($block_name = '') {
! e& }! A. y) O8 F8 k  if ($block_name == 'module_blog') {
2 j: R! t$ Z7 t/ Z! W% f2 Y    $content = show_article('参数1', '参数2', '参数3', ..... '参数n');
% B* x, R+ u  e' c9 F    $block = array(: v/ c* V% g" {
      'subject' => t('module blog'),
) `0 }9 S4 E6 `1 u# T$ o      'content' => $content,  
- R/ C! k: K6 J  z  Q6 ]8 H& Q" m5 }    );
) l9 O/ w" h5 D  
5 J  y. `5 t2 N' y    return $block; // 返回
( ~! F% D" J# ~2 G  }: {& }4 ~( T% ?: ?' ~1 ^8 B) Y
}, ~0 s: i2 I9 ^# W; s
 
1 q" |* t* s4 R/ p0 |, f+ R9 P% {function show_article($content_type='blog', $p1='value1', $p2='value2', .....$pn='value n')
# r# r/ o" O" r* ]& w% w 
$ a6 c$ G) x/ Z3 _! a* \# A  k& E+ u{ 函数内容 此处省略10000}

 

3.2,开启common模块,并在block 页面找到common生成的block,拉到相应区域

4,开启 PHP filter 模块,让drupal 的block 支持php,然后新建block,在block里面写phpcode。。。

 

方法2,方法3性能应该比较好



本文从猪跑啦走私而来,谢谢分头诗人没看见!  



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

GMT+8, 11-11-2025 19:54 , Processed in 0.257047 second(s), 238 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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