我希望移动"提交者"从node.tpl到page.tpl的信息然而,当我从node.tpl添加以下内容时,我收到错误。我假设我没有访问这些变量,但想知道如何设置预处理以使其显示,就像在node.tpl中一样显示
<?php if ($display_submitted): ?>
<div class="submitted">
<?php print $submitted; ?>
</div>
<?php endif; ?>
答案 0 :(得分:1)
您可以在主题的template.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>