1
2
3
4
5 |
name = Drupalla description = 猪跑啦. core = 7.x package = Drupalla files[] = mytaxonomy.module |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 |
/** * Implements hook_menu(). */ function
mytaxonomy_menu() { // Admin settings for the site. $items [ ‘category/%‘ ] = array ( ‘title‘
=> ‘分类‘ , ‘description‘
=> ‘分类‘ , ‘page callback‘
=> ‘show_product‘ , //指定函数 ‘page arguments‘
=> array (1), ‘file‘
=> ‘mytaxonomy.pages.inc‘ , //指定函数的所在文件 ‘access arguments‘
=> array ( ‘view product‘ ), ‘access callback‘
=> TRUE, ‘type‘
=> MENU_NORMAL_ITEM, ); return
$items ; } function
mytaxonomy_theme(){ return
array ( ‘product‘
=> array ( ‘template‘
=> ‘product‘ , ‘variables‘
=> array () ), ‘catetory_block‘
=> array ( ‘template‘
=> ‘catetory_block‘ , ‘variables‘
=> array () ), ); } function
mytaxonomy_permission() { return
array ( ‘view product‘
=> array ( ‘title‘
=> t( ‘View product‘ ), ), ); } /** * Implements hook_block_info(). */ function
mytaxonomy_block_info() { $blocks [ ‘catetory_block‘ ] = array ( ‘info‘
=> t( ‘Category‘ ), ‘cache‘
=> DRUPAL_NO_CACHE, ); //如有多个分类,就写多个block,复制多份 return
$blocks ; } /** * Implements hook_block_view(). */ function
mytaxonomy_block_view( $block_name
= ‘‘ ) { if
( $block_name
== ‘catetory_block‘ ) { $content
= show_catetory(); // 定义block的函数 $block
= array ( ‘subject‘
=> t( ‘Category‘ ), ‘content‘
=> $content , ); } //如有多个分类,就写多个block,复制多份 return
$block ; } function
show_catetory() //只提供大概db_select 写法。根据自己改写 { $output
= ‘‘ ; $query
= db_select( ‘taxonomy_term_data‘ , ‘td‘ ); $query ->leftJoin( ‘taxonomy_term_hierarchy‘ , ‘th‘ , ‘td.tid = th.tid‘ ); $query ->fields( ‘td‘ )->fields( ‘th‘ , array ( ‘parent‘ )) ->condition( ‘td.vid‘ , ‘2‘ )->condition( ‘th.parent‘ , 0)->orderBy( ‘weight‘ , ‘ASC‘ )->orderBy( ‘tid‘ , ‘DESC‘ ); $query
= $query ->execute()->fetchAll(); $rows
= array (); foreach
( $query as $ob ) { $row
= array (); $row [ ‘tid‘ ] = $ob
-> tid; $row [ ‘name‘ ] = l( $ob
-> name, ‘category/‘ . $ob
-> tid); //指定路径到 hook_menu 中的$items[‘category/%‘] $p
= db_select( ‘taxonomy_term_hierarchy‘ , ‘t‘ )->fields( ‘t‘ )->condition( ‘t.parent‘ , $ob
-> tid)->execute(); $row [ ‘num_of_results‘ ] = ‘ (‘ . $p ->rowCount(). ‘)‘ ; //分类下有多少个文章; $rows [] = $row ; } $output
.= theme( ‘catetory_block‘ , array ( ‘rows‘
=> $rows )); //用catetory_block.tpl.php 模版 return
$output ; } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 |
<?php function
show_product( $tid ){ //通过获取过来的tid写sql,写法如步骤三的function show_catetory() //注意 $output .= theme(‘product‘, array(‘rows‘ => $rows));//用product.tpl.php 模版 $output
= ‘‘ ; $query
= db_select( ‘field_data_field_manufacturers‘ , ‘f‘ )->extend( ‘PagerDefault‘ )->limit(50); //注意这行field_data_field_manufacturers是你的表 $query ->fields( ‘f‘ , array ( ‘entity_id‘ )) ->condition( ‘f.field_manufacturers_tid‘ , $tid )->orderBy( ‘field_manufacturers_tid‘ , ‘DESC‘ ); $query
= $query ->execute()->fetchAll(); $rows
= array (); foreach
( $query as $ob ) { $row
= array (); $node
= node_load( $ob ->entity_id); //print_r($node); $row [ ‘title‘ ] = l( $node ->title, ‘node/‘ . $node ->nid); $image
= "" ; if (! empty ( $node ->field_thumb)){ $image
= ‘<img src="‘ .file_create_url( $node ->field_thumb[ ‘und‘ ][0][ ‘uri‘ ]). ‘">‘ ;} $row [ ‘image‘ ] = $image ; $row [ ‘author‘ ] = $node ->name; $row [ ‘created‘ ] = $node ->created; $rows [] = $row ; } $output
.= theme( ‘pager‘ ); $output
.= theme( ‘product‘ , array ( ‘rows‘
=> $rows )); //用product.tpl.php 模版 $output
.= theme( ‘pager‘ ); return
$output ; } |
只给出大概写法,参数得自己根据传过来的data变
product.tpl.php
1
2
3
4
5 |
<?php foreach ( $rows
as $data ){?> <div class = "productlist" > <?php print
$data [ ‘image‘ ] ?><div style= "height:50px;width:260px;" ><?php print
$data [ ‘title‘ ] ?></div> </div> <?php }?> |
catetory_block.tpl.php
1
2
3
4
5 |
<ul> <?php foreach ( $rows
as $data ){?> <li><?php print
$data [ ‘name‘ ] ?></li> <?php }?> </ul> |
原文:http://www.cnblogs.com/ginikeer/p/3549339.html