Drupal 6 - page-user.tpl.php中的内容配置文件字段

时间:2011-04-12 14:08:10

标签: php drupal drupal-6

在这里有点生气...... :)

我只是尝试将内容配置文件内容类型中的CCK字段添加到page-user.tpl.php(我正在创建一个高度主题的用户个人资料页面)。

似乎有两种方法,这两种方法都有一个我无法克服的独特缺点:

'$ content profile'方法。

$var = $content_profile->get_variables('profile');

print $var['field_last_name'][0]['safe']; 

这很好,除了我似乎无法将当前查看的用户传递到$ content_profile,因此它始终显示已登录的用户。

'$ content profile load'方法。

$account_id = arg(1);
$account = user_load($account_id);
$user_id = $account->uid;

$var = content_profile_load('profile', $user_id);

print $var->field_first_name[0]['value']; 

很好,但现在我无法访问完整的渲染字段,只能访问普通值(即如果字段中有段落,则不会显示)。

我怎样才能同时拥有这两件事?换句话说,如何显示与当前查看的用户相关的字段(1中的“安全”格式)?

我用谷歌搜索和谷歌搜索,我最终绕圈子走了。 :(

干杯, 詹姆斯

3 个答案:

答案 0 :(得分:5)

您的内容配置文件加载方法似乎最接近您想要的内容。

在你的例子中:

$account_id = arg(1);
$account = user_load($account_id);
$user_id = $account->uid;

$var = content_profile_load('profile', $user_id);

print $var->field_first_name[0]['value']; 

$ var只是一个节点对象。您可以通过多种方式获取“完整渲染字段”(假设您的字段是应用过滤器的。)

要检查的最重要的事情是您的字段实际上已正确配置。

转到: admin / content / node-type / [node-type] / fields / field_ [field-name] 以配置您的字段,并确保在文字处理下您“我们选择了“过滤文字”。

如果不能解决问题,请尝试应用:

content_view_field(content_fields("field_last_name"), $var, FALSE, FALSE)

(有关此内容的更多信息:http://www.trevorsimonton.com/blog/cck-field-render-node-formatter-format-output-print-echo

取代这个:

print $var->field_first_name[0]['value']; 

如果这些都没有帮助...尝试我在博客上关于这个问题的一些事情: http://www.trevorsimonton.com/blog/print-filtered-text-body-input-format-text-processing-node-template-field-php-drupal

答案 1 :(得分:1)

当您创建用户个人资料页面时,它有一个内置机制。只需创建一个用户模板文件user_profile.tpl.php。

使用内置机制时,您可以自动访问您正在浏览的用户的$ account对象,包括所有用户配置文件cck字段。您有所需的字段,而无需以编程方式加载用户。

我有一个名为profile_bio的字段,并且能够在不必询问$帐户的情况下吐出任何标记。

<?php if ($account->content[Profile][profile_bio]['#value']) print "<h3>Bio</h3>".$account->content[Profile][profile_bio]['#value']; ?>

答案 2 :(得分:1)

我曾尝试通过用户页面显示个人资料节点字段来设置内容配置文件的主题,但对我来说它似乎总是有点“hacky”。我非常喜欢的只是转到该节点类型的内容配置文件设置页面并将显示设置为“显示完整内容”。除了像内容配置文件注入的节点类型名称这样的愚蠢标记之外,这很好并且花花公子。

解决方案是为内容配置文件模板添加预处理功能。一个将取消设置$ title并删除配置文件中正常显示的节点类型名称。

function mymodule_preprocess_content_profile_display_view(&$variables) {
  if ($variables['type'] == 'nodetypename') {
    unset($variables['title']);
  }
}

类似于此的功能应该可以解决问题。现在,对于主题用户配置文件,您可以正常地对配置文件节点进行主题设置。