如何使用Zen子主题将自定义字段添加到template.php中

时间:2012-05-02 18:18:33

标签: drupal-7 drupal-theming

这里的第一次海报,我是一个不熟悉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是我所知道的,所以我只需要第一部分的帮助。

{编辑} 好的,我发现了如何做到这一点:)

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

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

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

所以我在这里张贴这个为其他Drupal新手挣扎的....

2 个答案:

答案 0 :(得分:0)

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

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

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

Manage display of a content type

您可以“管理内容类型的显示”以拖放要显示的字段的顺序。您可以通过使用Display Suite之类的模块来进一步增加每个内容类型的格式或布局。


如果您认为这不够好并且字幕的标记必须与页面标题处于同一级别(这是罕见的),至少添加一个if语句以使您的代码检查以查看是否变量在尝试打印之前存在。我还为代码可读性添加了一个新变量和注释。

<?php
  $subtitle = $node->field_sub_title['und'][0]['value'];
  if($subtitle){
     print $subtitle;
  }
?>

答案 1 :(得分: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

这样可以减少您创建的潜在安全漏洞的数量。