【发布时间】:2016-05-30 10:27:16
【问题描述】:
如何提取特定字段以显示在分类页面中?
我有一个名为“电影”的自定义内容类型,每部电影都有一个名为“演员表”的术语参考字段。正如预期的那样,我可以单击“演员”(标签),它会为我带来一个页面,其中列出了与该标签相关联的所有电影。例如,如果我单击电影《泰坦尼克号》中的“凯特温斯莱特”,我会进入一个页面http://localhost/mysite/tags/kate-winslet,其中列出了凯特温斯莱特的其他电影。到目前为止,一切都很好。
我不希望 Drupal 以自己的显示格式显示默认字段,例如 Title 和 Body。相反,我想要它,以便我可以显示每部电影的照片,发行年份,当然还有标题和身体的修剪版本。我只想自定义此页面的内容,以便我可以控制显示内容和显示位置特定字段值。
这是我尝试过的:
我克隆了 page.tpl.php 并将其放入主题的模板文件夹中。将其重命名为page--vocabulary--tags.tpl.php。然后我从我的page--vocabulary--tags.tpl.php 中取出以下代码行(<?php print render($page['content']);?>)。目的是检查覆盖的模板是否实际上被 Drupal 访问。确实如此!
但我无法从$page['content] 中提取field_photo 或field_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。所以想确保我试图解释的内容与我想要完成的内容完全匹配。
【问题讨论】:
标签: drupal-7 vocabulary