Drupal 7,不确定如何从查询数据中正确地输出我的输出

时间:2011-09-03 13:28:52

标签: drupal drupal-7 drupal-modules drupal-theming

我一直在使用Views来有选择地返回节点,但是现在我想返回我的节点并使用Taxonomy术语作为组头。我无论如何都看不到View为我做这个,然后在一个页面上创建多个视图。

所以我认为我对了一个模块。我已经编写了SQL来返回正确的节点,但我无法弄清楚如何正确地将它们发送到主题引擎。我想就如何解决这个问题提出一些建议,我的教程书中有如下构建列表的示例。

foreach ($result as $row2) {
$items[]  = l($row2->title,'node/'.$row2->nid.'/edit');
}
return array('#markup' => theme('item_list',array('items' => $items)));

现在我想在Teaser模式下返回我的节点附加图像文件,以及节点的标题,加上(我不想超越自己)我可能还想要一些附加节点字段附加到标题。应该很容易吗?我根本无法解决这个问题。

通过使用我确定的非drupal方法看起来有点像这样,我已经纠缠了一下(有点),麻烦的是我无法让我的输出与ColorBox模块一起工作,所以我我在想,如果我能得到官方的Teaser节点数据,它可能会更好,而且我会更清楚地知道我是以德鲁巴派的方式做事:)

foreach ($result as $row2) {
$items .= '<img title="'.$row2->title.' '.$row2->fielddata.'" alt="'.$row2->title.'" src="http://localhost/theme/sites/default/files/styles/thumbnail/public/field/image/'.$row2->filename .'"></a>';
$items .= '</div></div></div></div>';                       
}
return array('#markup' => $items);

非常感谢您提前帮助我并提前致谢。

2 个答案:

答案 0 :(得分:1)

以下代码应该有所帮助。如果您还没有它,请安装devel module,它会为您提供一个名为dpm()的精彩功能,它会将数组/对象的内容打印到消息区域。

// Get some nodes ids
$nids = db_query('SELECT nid FROM {node}')->fetchCol();

// Load up the node objects
$nodes = node_load_multiple($nids);

// This will print the node object out to the messages area so you can inspect it to find the specific fields you're looking for
dpm($nodes); 

// I guess you'll want to do something like this:
$terms = array();

foreach ($nodes as $node) {
  // Load the taxonomy term associated with this node. This will be found in a field as this is how taxonomy terms and nodes are related in D7
  $term = taxonomy_term_load($node->field_vocab_name['und'][0]['tid']);

  // Set up the array
  if (!isset($terms[$term->name])) {
    $terms[$term->name] = array();
  }

  // Create some markup for this node
  $markup = '<h3>' . l($node->title . ' ' . $node->field_other_field['und'][0]['value'], "node/$node->nid") . '</h3>';

  // Add an image
  $image = theme('image', array('path' => $node->field_image['und'][0]['uri'], 'alt' => $node->title));
  $markup.= $image;

  // Add the markup for this node to this taxonomy group's list
  $terms[$term->name][] = $markup;
}

// Make up the final page markup
$output = '';
foreach ($terms as $term_name => $node_list) {
  $output .= '<h2>' . check_plain($term_name) . '</h2>';
  $output .= theme('item_list', array('items' => $node_list));
}

return $output;

希望有所帮助

答案 1 :(得分:0)

您可以获取视图,按照分类术语对返回的节点进行分组。假设您使用的是field视图类型,只需添加分类字段,然后在其中显示Format:Unformatted list | Settings,点击右侧的设置,然后选择您的分类字段作为分组字段。

注意:如果您没有使用field视图类型,或者您没有使用unformatted list,那么说明将是上述内容的变体。