1

第一次在这里发帖,我是一个完全不熟悉 php 的设计师,我有一个小问题,我似乎无法解决。我正在使用 zen 上的子主题在 drupal 7 中创建一个站点。顺便说一句,这是一个很棒的 CMS,尽管人们说它实际上更像是一个开发者 CMS。使用视图、规则、显示套件等,我可以毫不费力地做我需要的事情。因此,非常感谢所有开发人员,使这成为一个如此好的 CMS。但是对于这个看似简单的问题......没有模块可以帮助我(我认为)而且我有点卡住了。

所以这里是:我想在我所有页面的标题旁边添加一个副标题。

所以我所做的就是在内容类型基本页面(机器名称:field_sub_title)中添加一个自定义字段,这是一个简单的文本字段。

我在我的 template.php 中取消了以下行的注释

function mytheme_preprocess_page(&$variables, $hook) { $variables['sub_title'] = t('field_sub_title'); }

现在我的问题是如何将自定义字段的内容加载到该变量中?我知道我需要更改第二部分,但我不知道我需要更改什么。

将变量显示到 page.tpl.php 是我所知道的,所以我只需要第一部分的帮助。

{EDIT}好的,我找到了如何做到这一点:)

我在错误的地方寻找解决方案。我不需要更改 template.php 文件中的任何内容。

只需将这段代码添加到我的 page.tpl.php 中:

<?php
print $node->field_sub_title['und'][0]['value'];
?>

所以我在这里为其他苦苦挣扎的 Drupal 新手发布这个....

4

2 回答 2

0

考虑使用 field_get_items 或 field_view_value,或者至少使用 LANGUAGE_NONE 常量而不是 'und' 参见https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_get_items/7https:/ /api.drupal.org/api/drupal/modules!field!field.module/function/field_view_value/7

这具有减少您创建的潜在安全漏洞数量的额外好处。

于 2015-04-14T14:31:40.273 回答
0

您的解决方案现在可能有效,但可能有更多 Drupal-y 方式来处理此类问题。如果您还没有发现任何问题,您可能会发现以下一个或多个问题:

  • 不了解 php 或 Drupal 主题的人可能需要更改其工作方式。
  • 如果你像我一样,你可能会忘记它在代码中的具体实现位置。
  • 您可能会在没有此子标题字段的节点(内容)上看到多余的标记和/或错误(即,事件内容没有子标题字段,而基本页面和新闻文章有)。

将字段添加到内容类型时,只要显示该内容类型的内容,它就会自动出现。您应该能够为您的页面、事件或您需要的任何其他内容添加子标题字段,并使其自动出现在标记中。

管理内容类型的显示

您可以“管理显示”内容类型以拖放字段出现的顺序。您可以更进一步,使用Display Suite之类的模块为每个内容类型添加格式或布局。


如果您觉得这还不够好,并且副标题的标记必须与页面标题处于同一级别(这种情况很少见),至少添加一个 if 语句让您的代码检查变量是否存在在尝试打印之前。我还将添加一个新变量和注释以提高代码的可读性。

<?php
  $subtitle = $node->field_sub_title['und'][0]['value'];
  if($subtitle){
     print $subtitle;
  }
?>
于 2012-08-28T22:59:55.380 回答