阅读文档后,似乎正确的做法是这样的:
<?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”,但是那里唯一的“图片”。
那我该怎么办?我该如何追踪这个问题?
感谢您的帮助!
答案 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)正确的变量。