【问题标题】:How to add a custom field into template.php using Zen sub theme如何使用 Zen 子主题将自定义字段添加到 template.php
【发布时间】:2012-05-02 18:18:32
【问题描述】:

第一次在这里发帖,我是一个完全不熟练 php 的设计师,我有一个小问题,我似乎无法解决。我正在使用 zen 上的子主题在 drupal 7 中创建一个站点。 顺便说一句,这是一个很棒的 CMS,尽管人们说它实际上更像是一个开发者 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 新手发布这个......

【问题讨论】:

    标签: drupal-7 drupal-theming


    【解决方案1】:

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

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

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

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


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

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

    【讨论】:

      【解决方案2】:

      考虑使用 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

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

      【讨论】:

        猜你喜欢
        • 2011-07-16
        • 2012-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多