检索Drupal 7自定义字段时EntityMalformedException

时间:2013-06-27 11:00:28

标签: exception drupal drupal-7 customization

我正在和Drupal一起玩,我正在尝试在网站口号中添加第二行。 以下是我正在工作的page.tpl.php。

<?php if ($site_name || $site_slogan): ?>
    <div id="name-and-slogan" class="hgroup">
        <?php if ($site_name): ?>
            <h1 class="site-name">
                <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>">
                    <?php print $site_name; ?>
                </a>
            </h1>
        <?php endif; ?>
        <?php if ($site_slogan): ?>
            <p class="site-slogan"><?php print $site_slogan; ?></p>
        <?php endif; ?>
        <?php
            /* ADDED */
            $node = menu_get_object();
            $siteslogan2 = field_get_items('node', $node, 'field_siteslogan2');
        ?>
        <?php if ($siteslogan2): ?>
            <p class="site-slogan2"><?php print $siteslogan2; ?></p>
        <?php endif; ?>
    </div>
<?php endif; ?>

我基本上添加了一个名为siteslogan2(field_siteslogan2)的字段的新内容类型,现在我想在此处检索并显示它。 第一个问题是没有定义$ node var(即使根据它应该是documentation)。第二个问题是,当我手动定义并运行它时,我收到EntityMalformedException: Missing bundle property on entity of type node. in entity_extract_ids()

首先,这是解决问题的正确方法吗?其次,为什么我会收到EntityMalformedException以及如何解决它?


var_dump($node)产生NULL。它必须是我得到$ node内容不好的方式。当它说:

时,该文件对我来说有点神秘
  

$ node:节点对象,如果存在与页面关联的自动加载节点,并且节点ID是页面路径中的第二个参数(例如node / 12345和node / 12345 / revision,但不是注释/答复/ 12345)。

1 个答案:

答案 0 :(得分:1)

可以使用主题的template.php中的预处理函数来完成这种事情,以在$ varables数组中定义和设置变量。

然后,此变量可用于您已完成预处理的任何模板(页面,节点,表单等)。您的主题的template.php文件很可能会对如何执行此操作发表评论。

例如,在template.php中执行此操作会创建或修改变量$ display_header的值,使其可用于node.tpl.php

function yourthemename_preprocess_node(&$variables, $hook) {
  $variables['display_header'] = false;
}

然后,您可以修改节点模板文件以使用此变量。

对于像子标语这样简单的东西,您可以为主题添加设置,因此它会像主题设置一样显示在主题的配置页面上。

这需要在主题的theme-settings.php中实现此功能:

function yourthemename_form_system_theme_settings_alter(&$form, $form_state) {}

这为有关新设置的设置表单提供了信息。像这样:

https://api.drupal.org/api/drupal/modules!system!theme.api.php/function/hook_form_system_theme_settings_alter/7

希望这足以让你开始。