国外设计欣赏网站 - 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! T* J% x) {: i) }
27 L, E9 @' V% P
function common_show_article($content_type='blog', $p1='value1', $p2='value2', .....$pn='value n')* n5 n$ }- E" H' e7 b$ L
{ 函数内容 此处省略10000}

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

1
0 h. {& W1 g' w, E" d1 F4 H
<?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
5 U. J( N* t( D4 u2, X' e# c7 M$ Y5 ~4 `, o
3
5 i! Q6 P+ f# @) ?" R, [# L4, P9 I4 Z# }$ D/ L. k
5- c/ ]( B: u  ^9 `! y! m% V
6( P( @2 A3 N* M  w4 i
7
( B1 b/ F7 H8 }2 L4 m8
3 t6 b, v2 k. I" q# l6 G* Q% J91 G8 N% v% k8 W+ b1 \) ]6 |/ h
10
9 V& d. V$ u- u* G. @11
; \' I' d8 D/ k+ `+ Z* S. y12, X$ `: X+ P# q4 }7 Z
136 o7 I0 ?8 B1 v2 i3 y1 n
14
" q, s/ s, Y* L+ x6 f- Q4 v15- z. O- j! Z/ X8 K% @5 }+ g
16  M4 m. V0 b, I) P3 \9 G
17( R, g' i+ \/ E& M/ C$ y
18
, R. \* D& h4 s6 e( `- e19
9 V8 T% X% `) W! p/ G' w" d20) J$ G$ k- J3 y  T: b
21
; [1 V2 M3 y& P6 @+ o22. S2 N, o9 ?. F) O/ i% |
23
1 W2 a; F3 z+ l3 g6 Q1 J24
2 }5 |+ U5 n6 V257 g0 T( Z6 v' j% x
26
  _. I  T- G$ u- l6 c7 b27
' g7 n) W6 I2 v% t5 B/ l% U28
" C. o/ C% s& T( A' R29
8 V2 g% E- R7 m1 d9 t7 i3 i
/**) u6 x5 z/ s% e7 X! Z6 g; }
 , r7 F* J* z" q& z, x4 e4 G  b! j
* Implements hook_block_info().
9 {$ h0 L5 R9 c7 D0 u*/4 \! w' _; t1 i
function common_block_info() {( _( I4 m2 J! ?, e
  $blocks['module_blog'] = array(
, l2 _% C& _7 U  p2 \" ?    'info' => t('module blog'),0 Z( E9 B2 f7 `  N
    'cache' => DRUPAL_NO_CACHE," S+ F  t. q* a; k' v
  );$ m; [# g& U0 {5 b: C
  return $blocks;
* S2 F  w8 g3 e( Q}
. b: i' d, p6 l# [: l/**' C( R* X( o* T/ }
* Implements hook_block_view().( S) H9 h( |* v$ W
*/
( \; {! I1 M4 [# {; _* dfunction common_block_view($block_name = '') {
6 ?: f! k( C% E" o" c/ x  if ($block_name == 'module_blog') {3 S% U+ p2 e& z$ `. W( u8 [; g
    $content = show_article('参数1', '参数2', '参数3', ..... '参数n');1 C* E/ C8 \/ H
    $block = array(
% C: l5 B" g# V5 O" h3 q) C      'subject' => t('module blog'),% w5 }1 \9 F; w- x& ?
      'content' => $content,  
- X9 V+ s' k+ u& K9 @1 |    );
7 a' e' J# r, i2 T6 |3 T  
$ q; D0 `$ r  a4 W  B) q    return $block; // 返回0 |4 U$ S/ L  @) P
  }
# n  ~+ U% z# B4 K* P2 n- b}
% `9 `- P" o/ N- K+ e 
% v8 Y( }6 p: n$ `function show_article($content_type='blog', $p1='value1', $p2='value2', .....$pn='value n')3 s' Y  U2 o( d% w/ B
 % k4 [3 D) L/ U+ |8 P3 }7 b$ r* _
{ 函数内容 此处省略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, 4-16-2025 15:26 , Processed in 0.353347 second(s), 238 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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