2016-02-29 45 views
0

我有一個內容類型爲「項目」的網站,其中有一個領域爲「項目經理」,需要一個用戶。是否有一種很好的方式來顯示用戶在該用戶個人資料中顯示爲該項目的項目經理的所有項目?顯示用戶在該用戶個人資料中顯示爲字段的所有節點?

更新:

這是我在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> 

回答

0

最簡單的方法是使用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更多信息,請按以下網址鏈接.. https://www.drupal.org/node/1343708

希望這將解決您的problem.GL

+0

謝謝!有效! 我只是補充說,使用「全局$用戶」可以讓您當前登錄的用戶,但分配「$ user = user_load(arg(1))」將成爲當前用戶配置文件的用戶。 –

+0

另外,是否有一個很好的方法來搜索多個領域(用戶可能是下午或開發人員..)謝謝! –

0

可以輕鬆實現這與Views模塊,所以你不必編碼任何東西。創建節點通過在頁面鏈接中選擇uid,在字段項目管理器上查看和過濾。把視圖放在用戶頁面上,你很好。

相關問題