|
1
2
3
4
5 |
name = Drupalladescription = 猪跑啦.core = 7.xpackage = Drupallafiles[] = 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 |
<?phpfunction
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