如何提取特定字段以在分类页面中显示?
我有一个名为"电影"的自定义内容类型。每部电影都有一个名为" cast"的术语参考字段。正如所料,我可以点击"铸造" (标签)它为我带来了一个页面,其中所有电影都列在这个标签关联的任何地方。如果我点击" Kate Winslet"从电影“泰坦尼克号”中,我登陆http://localhost/mysite/tags/kate-winslet
页,其中列出了凯特温斯莱特的其他电影。到目前为止一切都很好。
我不希望Drupal以自己的显示格式显示默认字段,例如标题和正文。相反,我想要它,以便我可以显示每部电影的照片,发行年份,当然还有身体的标题和修剪版本。我只想自定义此页面的内容,以便我可以控制显示内容和显示位置特定字段值。
这就是我的尝试:
我克隆并将page.tpl.php
放入我主题的模板文件夹中。将其重命名为page--vocabulary--tags.tpl.php
。然后我从我的<?php print render($page['content']);?>
中取出了以下代码行(page--vocabulary--tags.tpl.php
)。目的是检查Drupal是否实际访问了被覆盖的模板。它确实!
但我无法从field_photo
中提取field_release_date
或$page['content]
等字段。为了了解已定义的变量及其放置方式,我使用了以下代码行:
<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'];
}
}
?>
&#13;
<?php print render($content) ?>
和<?php print render($page['content']) ?>
都打印出相同的结果,但我想要<?php render($content['photo_field'])?>
这样的我无法做到的事情。
我很抱歉让这个太久了。我刚刚进入Drupal。因此,我希望确保我尝试解释的内容与我想要完成的内容完全匹配。
答案 0 :(得分:1)
你可能正在尝试很长的路要走。 您可以使用Views模块。它允许创建查询数据库的自定义列表,但也可以覆盖现有的列表,例如分类术语页面列表的情况。
安装模块后(如果尚未安装),尤其是视图UI模块,请转到/admin/structure/views
并滚动到底部,其中禁用视图(灰色行)。您将找到一个名为分类术语的名称,称为&#39;一个模仿Drupal核心处理分类/术语的视图。&#39;
点击右侧的启用,然后转到启用链接所在的同一位置,点击展开的箭头,然后选择修改。 进入视图编辑页面后,您可以在方便时操作列表,添加/删除字段或在特定情况下执行的任何操作。如果你不熟悉Views,我建议你去了解它,网上有很多相关内容,它对于Drupal开发来说非常重要。
此外,如果您想为页面添加更多自定义,您可以使用Panels模块使用相同的方法,该模块允许覆盖系统页面(不仅仅是像Views这样的列表)。