【问题标题】:Drupal 7: How do I extract specific field in a taxonomy pageDrupal 7:如何在分类页面中提取特定字段
【发布时间】:2016-05-30 10:27:16
【问题描述】:

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

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

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

这是我尝试过的:

我克隆了 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'];
  }
}
?>

&lt;?php print render($content) ?&gt;&lt;?php print render($page['content']) ?&gt; 都打印相同的结果,但我想要像 &lt;?php render($content['photo_field'])?&gt; 这样的东西,但我无法做到。

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

【问题讨论】:

    标签: drupal-7 vocabulary


    【解决方案1】:

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

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

    点击右侧的启用,然后到启用链接所在的地方,点击箭头展开并选择编辑。 进入视图编辑页面后,您可以在方便时操作列表,添加/删除字段或在特定情况下您想要执行的任何操作。如果你对 Views 不熟悉,建议你去了解一下,网上有很多相关的内容,对 Drupal 开发来说已经接近必备了。

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

    【讨论】:

    • 完美!分类术语很好用 :) 现在要研究面板模块。希望这能让我以更喜欢的方式自定义页面!非常感谢。
    • 面板模块真的很棒。但是您的建议向我展示了路径:)。我通过启用分类术语创建了一个视图,然后用views-view-fields--taxonomy-term.tpl.php 覆盖了views-view-fields.tpl.php。然后,我创建了自己的 HTML 布局,其中包含要显示的字段 (&lt;?php print $fields["field_photo"]-&gt;content),最后创建了 CSS 类来自定义页面的外观。非常感谢您的大力帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多