0

阅读文档后,似乎正确的做法是这样的:

<?php print $user_picture; ?>

Wich 不起作用(它根本不打印任何东西)。

在四处询问后,我得到了这个答案,遗憾的是这也不起作用:

<?php global $user;
$image = theme('user_picture', $user);
print $image;?>

该代码被建议为“最后一个资源”,但当我尝试使用它时,我收到以下错误消息:

致命错误:无法在第 1054 行的 /includes/theme.inc 中使用 stdClass 类型的对象作为数组

寻找那条特定的行: if (isset($variables['#theme']) || isset($variables['#theme_wrappers'])) {,并且在上下文中:

  if (isset($variables['#theme']) || isset($variables['#theme_wrappers'])) {
    $element = $variables;
    $variables = array();
    if (isset($info['variables'])) {
      foreach (array_keys($info['variables']) as $name) {
        if (isset($element["#$name"])) {
          $variables[$name] = $element["#$name"];
        }
      }
    }

明显它应该工作,但它没有。

使用 contemplate 模块,我得到这个输出作为替代:

<?php print $node->picture ?>

这也行不通。

我已经尝试过使用 Devel 模块(使用节点的 /devel 选项卡):

我明白了:

picture (String, 4 characters ) 2876
$...->picture

这是行不通的,因为输出只是“2876”,但却是那里唯一的“图片”。

那么我能做什么呢?我该如何追踪这个问题?

4

2 回答 2

1

注意

theme('user_picture', $vars);

是一个 tpl.php 文件。您可以 dpm($vars) 对此主题功能的预处理功能,看看您可以使用什么。

于 2012-08-19T06:27:18.463 回答
0

根据Drupal 文档中的node.tpl.php 主题,$user_picture 是 node.tpl.php 文件中的一个有效变量(及其变体,如 node--book.tpl.php)

这段代码是错误的:

<?php global $user;
$image = theme('user_picture', $user);
print $image;?>

它是关于显示当前用户的图片,而不是 Drupal 7 AFAIK。如果 $user_picture 仍然不适合您,请尝试 node.tpl.php 中的 dsm($content) 或 dsm($node) 以找到正确的变量。

于 2012-08-18T13:00:49.657 回答