国外设计欣赏网站 - 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
8 |% F( A+ k5 g" [2
/ ]' Z# U# M+ M" Y1 }; V; D
function common_show_article($content_type='blog', $p1='value1', $p2='value2', .....$pn='value n')
9 O% e# Y2 T% l" Z- `& e# A0 [3 d{ 函数内容 此处省略10000}

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

1/ t$ F2 \+ S; Q, z/ O: M% R
<?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

19 |# Y" e9 Q" k6 r/ D: V* X( {
2
+ y0 B2 }( ~* T) R" ?3
) W& o+ O  T' k. B/ ~; Q4+ b* f& \2 _& |7 O1 D8 Z0 U
5
( B- B. P" `( P2 b% f9 C6  s0 ~0 k" T3 q* d$ U4 g
7  E$ I+ R0 F- @, r1 C; A
8/ M6 y  j/ x0 R8 R+ a
9
* p+ i, ]+ c  ^! u( I7 y10
2 S3 C2 C$ U" e9 [' }116 M3 O: z4 G' j: t+ l* k
12* l4 g' A; ~$ |4 j0 ~
13: N  ]3 N$ U9 F1 F
14+ W3 S9 w6 f8 w- O& `9 i8 m
15
8 Q3 t! H; g; K7 x4 q* J* R16
  a( J$ \, |8 L. J4 ~6 m8 C$ y17
4 Z# t2 T8 l. V( [8 E1 W18
* _# f% t3 K# a% S19
" N1 l! q# H  N" X20
% y; L1 [  I& k- V" q5 K21
% f- K* @: R+ T3 {* B/ O8 n* Y+ A* E221 ]7 F: W) D6 R0 p$ g
236 j/ p6 u2 L+ b2 |0 i2 [7 r$ u7 x
240 g7 j" {6 B$ d' w1 Z0 X& E1 L
25
: E! M0 r2 P1 Y6 p# b4 b' `$ g26! s9 }3 B; W" y- Q5 i& p
27( l2 n5 j; |' W! A1 I& J! [  l4 c# B
28/ O5 V$ T/ P" t! f3 c
29( E2 k2 y! W' U# J- m" e. I  O
/**
- B* `* J& |8 r2 w! c 
, X+ o, h% t: R. x+ h; C. u* Implements hook_block_info().
8 J. w- }# j) F*/
4 C; N. C7 B! T' J2 Ffunction common_block_info() {* h! w+ t: H$ P& U7 I
  $blocks['module_blog'] = array(
9 s& r" s2 u- \  z* P    'info' => t('module blog'),
1 R" M) U9 e8 t* x$ C    'cache' => DRUPAL_NO_CACHE,. Y" D$ |5 e& |
  );
  v+ E) h5 S1 a, {. Z1 J! t! j  return $blocks;
& V4 D+ [2 U8 l3 x9 c5 i# ~4 \}1 ^- i# T  U1 W0 N7 H* i
/**
1 d# J. d. M' D0 z4 r# }, K* Implements hook_block_view().
% H6 [. ~) s; j. [# w*/
6 B" @: p' d# [6 E' j$ Afunction common_block_view($block_name = '') {
( ~. y" O2 V. j& @* N1 }* M( f% z7 I  if ($block_name == 'module_blog') {
( O8 Z6 g+ H, c$ a    $content = show_article('参数1', '参数2', '参数3', ..... '参数n');# t; }  w; c; g& L# B4 J
    $block = array(
# _& V: V( ^' F$ y+ g7 t0 t2 T      'subject' => t('module blog'),
5 D% e. x# H; M      'content' => $content,  ( I6 n, j" R. k, u/ _& m; r: X
    );
- O. @# `% X8 K% s  ) O: G! u( a3 L! J. @2 G$ D5 S
    return $block; // 返回5 o( f3 b& B1 |+ y, k
  }
+ ^8 ]0 U) U9 ^; J# D}
  B- x( ^& v# S' }& _7 D( S7 m$ Q 1 Y- C% }6 F: B; I! m
function show_article($content_type='blog', $p1='value1', $p2='value2', .....$pn='value n')! G. e% N- s& K  D" z$ o3 F% w
 5 P% V" S) K2 k" N& E, d0 E% ?
{ 函数内容 此处省略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, 5-1-2025 12:09 , Processed in 0.480332 second(s), 238 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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