【问题标题】:drupal 7 Targeting specific arrays in a page.tpl.phpdrupal 7 针对 page.tpl.php 中的特定数组
【发布时间】:2023-03-28 16:45:01
【问题描述】:

我有一种情况,我需要满足两个不同的条件才能将给定节点的标题打印到页面上(下面的这一点来自我的 page.tpl):

<?php if 
($title && ($user->uid == 1) || $title && ($page['#object']['type']['blog_post'])
/* is the node a full blog post? */
): ?>

我想仅在用户登录时显示节点的标题。这是有效的,但我不确定如何显示我的特定节点类型的标题。显然,我正在深入研究阵列的错误部分。但我似乎无法弄清楚数组的哪一部分将满足我的条件。

谢谢!

【问题讨论】:

    标签: drupal-7 drupal-theming


    【解决方案1】:

    当显示的页面是节点时,您可以在 page.tpl.php 中使用 $node 变量。节点类型存储在 $node->type 中。但仅适用于节点页面。 'blog_post' 类型的节点页面显示完整的博客文章。

    <?php if(isset($node) && $node->type == 'blog_post');?>
      <?php print $title; ?>
    <?php endif?>
    

    在 page.tpl 中将仅在您的类型的完整节点上打印标题。

    【讨论】:

      【解决方案2】:

      您可以使用 node.tpl.php 来处理特定的节点参数, 你会在 /modules/node/node.tpl.php 中找到 node.tpl.php

      节点模板为您提供用于检查该节点的视图模式 ($view_mode) 和 $title 的参数。

      P.S.,如果你想检查你的用户是否登录,drupal 为你提供了一个函数 user_is_logged_in()

      【讨论】:

      • 感谢@StryKaizer。有几件事,我通过使用 node.tpl 来理解您的方法,有没有办法使用 node.tpl ?另外关于上面的用户功能会写如下:&lt;php? if ($user_is_logged_in): ?&gt; do some stuff... &lt;php? endif;&gt;Thanks for you help
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多