Drupal 7 开发内部培训资料, 分头诗人

关于views获取分类列表的问题

赞成!
0
否决!

现有分类树形结构如下:

主分类1

           |   子分类A

           |    子分类B

           |    子分类C

主分类2

           |    子分类α

           |    子分类β

           |    子分类γ

 

在子分类A的页面添加views block,请问要怎样设置views才能够获取同级的子分类B和子分类C的链接呢?

 

2 个回答

赞成!
0
否决!

不明白你的需求。说不清啊。

赞成!
0
否决!

views我不太熟悉,这里给一个模块方式:

通过 hook_block_info() 跟hook_block_view() 

然后通过arg(0) 获得地址第一个参数, arg(1)获得地址第二个参数,这样的方式读取。

/**
 * Implements hook_block_info().
 */
function modulename_block_info() {
  $blocks['fenlei'] = array(
    'info' =>'分类',
    'cache' => DRUPAL_NO_CACHE,
  );
  return $blocks;
}
/**
 * Implements hook_block_view().
 */
function modulename_block_view($block_name = '') {
  if ($block_name == 'fenlei') {
    $content = fenlei_block(arg(2));//  分类的地址形式如:site.com/taxonomy/term/180,第一个参数是taxonomy,获取方法是arg(0),第二个参数是term,获取方法是arg(1),要获得180这个参数,正好是 arg(2)
    $block = array(
      'content' => $content,
    );
	}
  return $block; 
}
function fenlei_block($parent = 0) {	
$output = '<ul>';
	$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('td.language', $language->language)->condition('th.parent', $parent)->orderBy('weight', 'ASC')->orderBy('tid', 'DESC');
	$query = $query->execute()->fetchAll();
	foreach ($query as $ob)
	{
		$output .= '<li>';
		$output .= l($ob -> name, 'taxonomy/term/'.$ob -> tid);
		$p = db_select('taxonomy_term_hierarchy', 't')->fields('t')->condition('t.parent', $ob -> tid)->execute();
		$num_of_results = $p->rowCount();
		//$output .= ' ('.$num_of_results.')';
		if($num_of_results > 0){
			$output .= fenlei_block($ob -> tid);
		}
		$output .= '</li>';
	}	
	$output .= '</ul>';
	return $output;
}