查询节点.tpl的覆盖

时间:2011-01-24 13:45:34

标签: drupal-6

我已经覆盖了node.tpl,并且需要使用视图生成的查询从db获得一些结果。 这是我使用的代码:

    <?php $res = db_query("SELECT node.nid AS nid, node.title AS node_title FROM node node LEFT JOIN content_field_is_popular node_data_field_is_popular ON node.vid
= node_data_field_is_popular.vid WHERE (node.type in ('article_thisweekend')) AND (UPPER(node_data_field_is_popular.field_is_popular_value)
= UPPER('yes'));");
    foreach($res as $reco){
        print ($reco->nid);
    }
    ?>

但我没有得到任何结果。 我缺少什么?

由于

2 个答案:

答案 0 :(得分:2)

通常最好避免将查询直接放入模板文件中。最好separate logic and presentation

相反,使用模块生成所需的内容并将其传递给主题图层。在这种情况下,如果您已经使用Views模块生成查询,请让Views为您运行它并将数据传递给页面或块显示。

否则,要调试查询,请尝试通过像phpMyAdmin或“drush sqlq”这样的代码独立于代码运行查询。

答案 1 :(得分:2)

Matt V.有很好的建议,你应该尝试将视图模板与sql查询逻辑分开。

但是,对于此特定示例,您需要使用db_fetch_object,因为$res只包含。{1}} database query result resource

而不是

 foreach($res as $reco){
    print ($reco->nid);
 }

待办事项

while ($reco = db_fetch_object($res)){
   print ($reco->nid);
}