Views 中获取taxonomy 中当前分类和子分类的所有node

function ty_blog_get_all_taxonomy() {
    $all_tax = array();
    $taxname = '';
    $i=1;
    while (arg($i) !== NULL) {
        $taxname = (arg($i));
        $i++;
    }
    if($taxname!='' && $current_tax = taxonomy_get_term_by_name($taxname)){
        $current_tax = reset($current_tax);
        $all_tax[] = $current_tax->name;    
        $childrens = taxonomy_get_tree($current_tax->vid,$current_tax->tid);
        foreach($childrens as $children) {
            $all_tax[] = $children->name;
        }
    }
    return $all_tax;
}

/**
 * implements Hook_views_query_alter
 */
function ty_blog_views_query_alter(&$view, &$query){
    
    if($view->name == 'page_views') {
        $all_taxonomy = ty_blog_get_all_taxonomy();
        if(empty($all_taxonomy) && arg(0)!=='admin') {
           drupal_not_found();
        }

        $query->where[0]['conditions'][0]['value'] = $all_taxonomy;
        $query->where[0]['conditions'][0]['operator'] = 'in';
    }
}

在Views中字段的自动整合你field relationship

如果你需要在Views中添加一个字段,而这个字段并不在你的relationship 中,从而你使用就会出错
你的field字段可以这样获取

$this->view->field

使用以下可以进行自动 relationship

$this->view->field[$field_key]->ensure_my_table();

还有一个问题是当你把你的字段调到最上面去的时候(调weight),你的left jion 的另名会乱, 所以你也需要在添加字段的时候也添加relationship,后面就不会乱了

$this->view->field[$field_key]->set_relationship();
$this->view->field[$field_key]->ensure_my_table();

在Views handlers中字段没有初始化

在Views Sort中field没有字段初始化, 在Filter handler中。如果你想使用$this->query->fields 这是不可能的。因为现在他还是一个空数组。并没有初始化, 这个fields 是你add_field添加的字段,如果你要使用你就必须初始化

解决方案:

//这样就可以初始化你的field
$this->view->_build('field');

options_form算是最开始运行的,所以如果你要在这里面使用$this->query->fields,你还需要初始化handlers和query

$this->view->init_handlers();      
$this->view->init_query();
$this->view->_build('field');

Drupal 网址收藏/经典blog

开发人员blog:

http://www.angrydonuts.com/

http://kahthong.com/blog

方医生: http://www.fang798.com

http://munich2012.drupal.org/

http://drupal.stackexchange.com/

http://www.deciphered.net/blog

http://buytaert.net/

http://www.alexweber.com.br/

http://www.kristen.org/
http://www.trellon.com/content/blog/creating-own-entities-entity-api
http://www.wunderkraut.com/blog/
 

 

API:

http://drupalcontrib.org/api/drupal/7
http://api.drupal.org

经典文章:

http://www.majormoves.net/