显示用户在该用户配置文件中显示为字段的所有节点?
Display all nodes for which user appears as a field on that user's profile?
我有一个内容类型为 "Projects," 的网站,其中有一个字段 "Project Manager" 需要一个用户。有没有一种好方法可以显示用户在该用户的配置文件中显示为该项目的项目经理的所有项目?
更新:
这是我目前在 user_profile.tpl.php
中的内容
...
function my_module_user_view($account, $view_mode, $langcode) {
$my_field = 'field_pm';
$uid = $account->uid; // The uid of the user being viewed.
$query = "SELECT entity_id FROM {field_data_{$my_field}} WHERE {$my_field}_target_id = :uid AND bundle='user'";
$args = array(':uid' => $uid,);
$result = db_query($query, $args);
$nids = $result->fetchCol();
if (count($nids)) {
$projects = node_load_multiple($nids); // Load all projects where that user is a PM
foreach ($projects as $project) {
$account->content['field_pm_projects'][0]['#markup'] = $project->title;
}
}
}
?>
<div class="profile"<?php print $attributes; ?>>
<?php print render($user_profile); ?>
<?php print $account->content['field_pm_projects']; ?></span>
</div>
最简单的方法是使用 EntityFieldQuery 来实现您想要的结果。
方法如下:
global $user;
$query = new EntityFieldQuery();
$result = $query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'projects')
->propertyCondition('status', 1)
->propertyCondition('uid', $user->uid
->fieldCondition('field_<YOUR_CUSTOM_FIELD>', '<COLUMN_NAME>', '<VALUE>', '=')
->execute();
if (!empty($result['node'])) {
$nids = array_keys($result['node']);
$nodes = node_load_multiple(array_keys($result['node']));
}
有关 EntityFieldQuery 的更多信息,请点击此处的 link。
https://www.drupal.org/node/1343708
希望这会解决您的问题problem.GL
您可以使用 Views 模块轻松实现此目的,因此您无需编写任何代码。通过在页面 link 中选择 uid
,在字段 Project Manager 上创建节点视图和过滤器。将视图放在用户页面上,一切顺利。
我有一个内容类型为 "Projects," 的网站,其中有一个字段 "Project Manager" 需要一个用户。有没有一种好方法可以显示用户在该用户的配置文件中显示为该项目的项目经理的所有项目?
更新:
这是我目前在 user_profile.tpl.php
中的内容...
function my_module_user_view($account, $view_mode, $langcode) {
$my_field = 'field_pm';
$uid = $account->uid; // The uid of the user being viewed.
$query = "SELECT entity_id FROM {field_data_{$my_field}} WHERE {$my_field}_target_id = :uid AND bundle='user'";
$args = array(':uid' => $uid,);
$result = db_query($query, $args);
$nids = $result->fetchCol();
if (count($nids)) {
$projects = node_load_multiple($nids); // Load all projects where that user is a PM
foreach ($projects as $project) {
$account->content['field_pm_projects'][0]['#markup'] = $project->title;
}
}
}
?>
<div class="profile"<?php print $attributes; ?>>
<?php print render($user_profile); ?>
<?php print $account->content['field_pm_projects']; ?></span>
</div>
最简单的方法是使用 EntityFieldQuery 来实现您想要的结果。 方法如下:
global $user;
$query = new EntityFieldQuery();
$result = $query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'projects')
->propertyCondition('status', 1)
->propertyCondition('uid', $user->uid
->fieldCondition('field_<YOUR_CUSTOM_FIELD>', '<COLUMN_NAME>', '<VALUE>', '=')
->execute();
if (!empty($result['node'])) {
$nids = array_keys($result['node']);
$nodes = node_load_multiple(array_keys($result['node']));
}
有关 EntityFieldQuery 的更多信息,请点击此处的 link。 https://www.drupal.org/node/1343708
希望这会解决您的问题problem.GL
您可以使用 Views 模块轻松实现此目的,因此您无需编写任何代码。通过在页面 link 中选择 uid
,在字段 Project Manager 上创建节点视图和过滤器。将视图放在用户页面上,一切顺利。