国外设计欣赏网站 - 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& W0 }9 x" e7 T
2  i2 ~6 y% T1 X: e3 k, V9 o3 @; q
function common_show_article($content_type='blog', $p1='value1', $p2='value2', .....$pn='value n')
5 M  x0 D$ D( w$ q2 U{ 函数内容 此处省略10000}

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

1, V: W+ D- y$ U3 \( g
<?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- H% b% F9 V5 P4 b
2: ?; L! o1 P! B. ~: H
3
+ N/ m: g( j  }4' z8 B0 P% m) c6 j  ~
5
! u# x; W) S8 U" S- Q; B7 R6( V3 Z6 s  s' a8 Z9 _
7
& n( d& X) ^5 R+ Q$ Z4 E# `8$ T5 j2 X3 _* f! R1 A
9' e5 A3 y. U2 }& z# J4 U/ M: _
10
: `" G$ Z. B7 G7 J3 ]3 l: {11
; q3 p) D# M2 r1 |, o, ?( T8 Q124 j5 k8 q' x( _+ N8 V/ }6 V0 ^
13! Z! i* {- ^# g1 x, |
14
3 q6 j2 k1 U. l2 E- P1 w152 `) T  J0 g1 ^$ N) k( f' V. o
16. v+ y# W+ X: W
17/ Q, M* {7 T! C) M9 m; C
18
8 G5 O; u( C1 s; W& ~) t197 Z/ U4 k- z( W4 [8 o* j
20
* i) p( z2 H0 ~6 p. ?0 e7 q1 ]217 H4 K5 p" `* d
22
( E4 }& Q- ?) G3 j23
) p/ ^3 P" U7 U* s+ P249 S1 u( ^  ]; o
25
" W6 z+ Z# q  C% w7 O3 R2 ~265 H% d0 m7 z+ n$ W; W8 x
27
8 f: C8 g4 A5 D% Z7 k288 ?- j, C# m4 i: u- \* f
29. n$ j0 r" u6 m0 x6 I) C
/**5 t5 C5 y" y% }0 w+ E# Q( i
 
: r% n  J  P" D; n' ]* Implements hook_block_info().
$ S; E4 W! L# Y  q*/3 q" K& w) |2 P+ v* E
function common_block_info() {
+ E: P+ l+ a& [& A4 W6 |- B8 D  $blocks['module_blog'] = array(
1 O' B' U1 l+ b& M% k6 r    'info' => t('module blog'),1 x1 o+ H) X, B" C: O: }
    'cache' => DRUPAL_NO_CACHE,
4 N+ c/ y& C! C! P+ B! [  );
3 D4 M. ]& R, n- P; X6 o  return $blocks;3 N( u. v8 o5 P8 v5 U5 S
}
' ~0 l: @, J3 K: Q/**
$ j+ ~0 s  h0 {. |3 M2 _* Implements hook_block_view().& q0 t" H7 [: u6 E' p5 U* e# S
*/# a, m& w4 g% E( @- S+ O
function common_block_view($block_name = '') {
' y) B, [2 ~  F# p+ U- P, Y% b. y" R  if ($block_name == 'module_blog') {! b1 n  O# y" d: h
    $content = show_article('参数1', '参数2', '参数3', ..... '参数n');2 B% }+ s* C1 [
    $block = array(4 c" u1 o4 T0 {1 t" Q$ k
      'subject' => t('module blog'),
) N& d* S( R% J* k1 \; f      'content' => $content,  
! g+ h, V1 g% \6 B2 F. K, @3 o" p+ X    );2 T9 N) N7 b* a# L6 B/ x  U
  ' ?4 D4 V( [8 b3 K$ I3 V
    return $block; // 返回
9 D0 m. B- g! n' C  }
6 F7 U, [9 a" `3 g# ?1 b3 U/ o( T" @6 X}
% x" q' U8 J6 R1 V+ a 
  V& N' Y9 ?# Kfunction show_article($content_type='blog', $p1='value1', $p2='value2', .....$pn='value n'). I" g3 ~; r3 Q
 
3 {( r; ^, H4 ]' S4 ^! _6 Y{ 函数内容 此处省略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, 6-16-2025 18:37 , Processed in 0.875074 second(s), 236 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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