移动"提交者"从node.tpl到page.tpl

时间:2015-07-04 08:31:34

标签: templates drupal drupal-7

我希望移动"提交者"从node.tpl到page.tpl的信息然而,当我从node.tpl添加以下内容时,我收到错误。我假设我没有访问这些变量,但想知道如何设置预处理以使其显示,就像在node.tpl中一样显示

  <?php if ($display_submitted): ?>
    <div class="submitted">
      <?php print $submitted; ?>
    </div>
  <?php endif; ?>

3 个答案:

答案 0 :(得分:1)

您可以在主题的template.php中使用预处理功能,如下所述:

https://drupal.stackexchange.com/questions/40222/how-can-i-print-node-authors-last-login-date-on-page-tpl-php

在你的情况下,它看起来像这样(在Drupal 7上测试):

function yourtheme_preprocess_page(&$variables) {
  $variables['author'] = "";
  if (isset($variables['node']) && ($account = user_load($variables['node']->uid))) {
    $variables['author'] = $account->name;
  }
}

然后在你的page.tpl.php中使用:

Submitted by: <?php print $author; ?>

如果您不想触摸任何主题文件,但需要在另一个区域输出作者姓名作为节点内容,则可以创建包含节点作者的视图(块显示),并指定它到该地区。

答案 1 :(得分:0)

通常在node.tpl.php中完成,如果页面是节点视图页面,$ {1}}中也可以使用$ node变量

然后您可以使用以下内容:

page.tpl.php

另一种方法是将所需的逻辑添加到

的实现中
if (isset($node)) {
  // Check if display submitted variable is set for this node type
  if (variable_get('node_submitted_'. $node->type, 0)) {
    // Do stuff
  }
}

奖励更新:您可以在核心hook_preprocess_page 中看到添加到page.tpl.php的$ node变量

template_preprocess_page

答案 2 :(得分:0)

page.tpl.php

<div class="submitted">
     <?php echo format_date($node->created, 'custom','d.m.Y'); ?><br />
     <?php echo 'by ' . $node->name; ?>
</div>