0

我正在创建一个自定义模块和内容类型。并在我的页面上显示这些项目。我的模块是:

function theme_news(){
    global $language;

    $output = '';

    drupal_set_title('News');


    $m_query = db_select("node","n")->extend("PagerDefault")->limit(10);
    $m_query->fields("n",array('nid','title','language'));
    $m_query->condition('status','1',"=");
    $m_query->condition('n.type','news','=');
    //$m_query->condition('n.language',$language->language,'=');
    $m_query->orderBy('n.sticky','desc');

    if(arg(1) == 'latest_news'){
        $m_query->join('field_data_field_etype','fe','n.nid=fe.entity_id');
        $m_query->condition('fe.field_etype_value','ap','=');
        if(arg(2) != ''){
            $m_query->join('field_data_field_myear','fy','n.nid=fy.entity_id');
            $m_query->condition('fy.field_myear_value',arg(2),'=');
        }

    }

    if(arg(1) == 'feature_news'){
        $m_query->join('field_data_field_etype','fe','n.nid=fe.entity_id');
        $m_query->condition('fe.field_etype_value','sp','=');
        if(arg(2) != ''){
            $m_query->join('field_data_field_myear','fy','n.nid=fy.entity_id');
            $m_query->condition('fy.field_myear_value',arg(2),'=');
        }
    }

此功能创建 2 个子菜单并显示这些子菜单中的内容。工作我的代码,但我不知道,为什么我看不到 field_myear 值。

我该如何解决?

4

2 回答 2

1

如果您不想使用视图,请创建一个包含关系、顺序、字段和所有您需要的视图,然后通过模块中的视图复制生成的 sql 查询,这将起作用。

于 2012-07-22T18:30:14.797 回答
0

我建议您通过组合 Drupal 视图和过滤器来解决您的任务,而不是立即在您的自定义模块中制作自定义 SQL 查询。在大多数情况下,这就足够了,并且可以减少以后的头痛。

condition子句应该是视图过滤器。

joins 应该是视图关系

并且您的自定义字段确实应该是 CCK 字段。

于 2012-07-22T18:26:33.553 回答