我之前在 D6 上做过这个,基本上我只是为我的 View-1 创建了几个模板 tpl.php 文件。
在用于显示输出的 View-1 模板中(现在 D7 中的views-view--default.tpl.php)
我会简单地以编程方式查找 View-1 为该行传递或返回的值。
在您的每一行的情况下,您将检查 View-1 返回哪个节点,然后我会在我的 View-1 模板中添加代码以基于当前 View-1 行以编程方式加载 View-2(即你的情况下的节点。)
有意义吗?回复晚了 5 个月,但我一直在寻找复习,看看现在在 D7 中是否有更好的方法来做到这一点。
更新:
刚刚在我的新 D7 安装中执行此操作。作为一个例子,我将解释它与我的 Ubercart 实现的关系。
Ubercart 安装后,其主“主页”商店页面位于 mysite.com/catalog
此页面在加载时会调用由 Ubercart 创建的名为 uc_catalog_terms 的视图。这是一个基于分类的视图,它所做的只是抓取所有目录分类并呈现它们。
例如
作为一家服装店,当您导航到mysite.com/catalog 时,您将在此页面上看到的只是一个网格结构,例如:
毛衣 衬衫 牛仔裤
我的要求是我需要在此页面上显示商店目录类别/术语,但 ALSO 在每个目录类别下方显示该类别/术语中的 3 个随机产品(图像)。
例如
毛衣
随机毛衣 #1 - 随机毛衣 #2 - 随机毛衣 #3
牛仔裤
随机牛仔裤 #1 - 随机牛仔裤 #2 - 随机牛仔裤 #3
这是如何实现的?
我创建了自己的全新自定义视图(没有页面或锁,只是默认),它基于 分类术语 ID 参数抓取 3 个随机产品图像并呈现 3 个链接的产品图像。我将此自定义视图称为random_catalog_items。如果 15 是 Sweaters 的术语 ID,当使用参数 15 调用此视图时,它只会呈现 3 个随机链接的毛衣产品图像。
我现在回到uc_catalog_terms 视图并创建了一个views-view-fields--uc-catalog-terms.tpl.php(行样式输出)模板文件。
此文件的默认查看版本(修改前)是:
<?php foreach ($fields as $id => $field): ?>
<?php if (!empty($field->separator)): ?>
<?php print $field->separator; ?>
<?php endif; ?>
<?php print $field->wrapper_prefix; ?>
<?php print $field->label_html; ?>
<?php print $field->content; ?>
<?php print $field->wrapper_suffix; ?>
<?php endforeach; ?>
修改版变为:
<?php foreach ($fields as $id => $field): ?>
<?php if (!empty($field->separator)): ?>
<?php print $field->separator; ?>
<?php endif; ?>
<?php print $field->wrapper_prefix; ?>
<?php print $field->label_html; ?>
<?php
$title = str_replace('/','-',strtolower($field->raw));
print '<img src="'.drupal_get_path('theme','my_theme').'/images/catalog/'.$title.'-header.png" />';
print '<hr style="width: 100%; background: #000; height: 2px; margin-top: 3px;"/>';
// get the taxonomy term ID
$tid = $row->tid;
// render the 3 random items
if ($random_products = views_get_view('random_catalog_items' )) {
print $random_products->execute_display('default', array($tid));
}
?>
<?php print $field->wrapper_suffix; ?>
<?php endforeach; ?>
正如您在第一个视图中看到的那样,对于呈现的每一行,我都会通过可用的行结果对象 - $row->tid 显示当前分类术语 ID,然后我只需为每一行调用我创建的视图,传递这个术语 ID 作为它的参数。我在那里留下了很多默认代码,但在我的视图配置中,标签等设置为 HIDDEN,因此它们甚至都不会渲染。
在您的情况下,它应该很容易适应只传递节点 NID 而不是分类术语 ID。
瞧,一切正常!在视图中查看!希望这会有所帮助:)
从那时起,在这些视图模板中加载开发模块会有所帮助,您可以通过print krumo($row) 之类的方式进行调试并查看哪些变量可供您使用。