Drupal 7:如何提取分类页面中的特定字段

Drupal 7: How do I extract specific field in a taxonomy page

如何提取特定字段以显示在分类页面中?

我有一个名为 "film" 的自定义内容类型,每部电影都有一个名为 "casting" 的术语参考字段。正如预期的那样,我可以单击 "casting"(标签),它会给我带来一个页面,其中列出了与此标签关联的所有电影。例如,如果我点击电影《泰坦尼克号》中的 "Kate Winslet",我会进入一个页面 http://localhost/mysite/tags/kate-winslet,其中列出了凯特温斯莱特的其他电影。到目前为止一切都很好。

我不希望 Drupal 引入并在其自己的显示中显示默认字段,例如 TitleBody格式。相反,我想要它,以便我可以显示每部电影的照片、发行年份,当然还有 body 的标题和修剪版本。我只想自定义此页面的内容,以便我可以控制 显示内容和显示位置 特定字段值。

这是我试过的:

我克隆 page.tpl.php 并将其放入主题的模板文件夹中。将其重命名为 page--vocabulary--tags.tpl.php。然后我从我的 page--vocabulary--tags.tpl.php 中取出了下面这行代码 (<?php print render($page['content']);?>)。目的是检查覆盖的模板是否实际上被 Drupal 访问。确实如此!

但我无法从 $page['content] 中提取 field_photofield_release_date 等字段。为了了解定义的变量及其放置方式,我使用了以下代码行: <pre><?php /*print var_export(get_defined_vars(), TRUE);*/ ?></pre>。但即使从那里我也无法像上面提到的那样提取特定字段。这些字段看起来在 $page['content']['system_main']['nodes'] 内的某处,但我不知道如何直接到达特定字段。

我还使用以下预处理挂钩函数创建了一个 template.php

<?php
function introduction_preprocess_page(&$vars) {
  if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) {
    $term = taxonomy_term_load(arg(2));
    $vars['theme_hook_suggestions'][] = 'page__vocabulary__' . $term->vocabulary_machine_name;
    $vars['content'] = $vars['page']['content']['system_main']['nodes'];
  }
}
?>

<?php print render($content) ?><?php print render($page['content']) ?> 都打印相同的结果,但我想要类似 <?php render($content['photo_field'])?> 的结果,但我无法做到。

很抱歉让这太长了。我刚刚进入 Drupal。所以想确保我试图解释的内容与我想要完成的完全匹配。

您可能正在为此尝试很长的路要走。 您可以使用 Views 模块。它允许创建查询数据库的自定义列表,但也可以覆盖现有的列表,例如分类术语页面列表的情况。

一旦安装了模块(如果尚未安装),尤其是视图 UI 模块,转到 /admin/structure/views 并滚动到底部,禁用视图(灰色行)所在的位置。您会发现一个名为 Taxonomy term,描述为 'A view to emulate Drupal core's handling of taxonomy/term.'

点击右边的Enable然后到Enablelink所在的地方,点击箭头展开,选择编辑。 进入视图编辑页面后,您可以在方便时操作列表、adding/removing 字段或您在特定情况下想要执行的任何操作。如果你对Views不熟悉,建议你了解一下,网上有很多相关内容,接近Drupal开发必备

此外,如果您想向页面添加更多自定义内容,可以对 Panels 模块使用相同的方法,该模块允许覆盖系统页面(不仅仅是视图等列表)。