不要在Drupal自定义模块上使用字段类型

时间:2012-07-22 18:22:04

标签: php drupal-7 drupal-modules field

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

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值。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

join应该是查看关系

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