无法将作者的图片打印到Drupal 7中的节点上

时间:2012-08-18 02:35:22

标签: drupal variables drupal-7 image

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

<?php print $user_picture; ?>

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

Afetr四处询问,我得到了这个答案,遗憾的是也不会工作:

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

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

Fatal error: Cannot use object of type stdClass as array in /includes/theme.inc on line 1054

寻找特定的行: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"];
        }
      }
    }

它应该有效pretty clear,但它没有。

使用contemplate模块,我将此输出作为替代:

<?php print $node->picture ?>

也不会工作。

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

我明白了:

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

它不会起作用,因为输出只是“2876”,但是那里唯一的“图片”。

那我该怎么办?我该如何追踪这个问题?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

请注意

theme('user_picture', $vars);

是一个tpl.php文件。 你可以dpm($ vars)这个主题函数的预处理函数,看看你可以使用什么。

答案 1 :(得分:0)

根据Drupal文档中的node.tpl.php topic,$ 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.phpt中使用dsm($ content)或dsm($ node)正确的变量。