我一直在使用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);
非常感谢您提前帮助我并提前致谢。
答案 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
,那么说明将是上述内容的变体。