2016-03-09 169 views
1

我使用Drupal 8和嫩枝工作。我有一個領域的「團隊成員」,也就是一個實體引用,以用戶的內容類型。獲取用戶的個人資料圖片網址

Entity Reference to User

在我設定的團隊成員此內容類型的內容。

Team Members set on Content

我怎樣才能得到這些用戶的個人資料圖片的網址,在我的樹枝模板?


我曾嘗試:

{% for key, item in content.field_team_members if key|first != '#' %} 
    <p>{{ dump(item['#options'].entity.user_picture.0|keys) }}</p> 
{% endfor %} 

導致:

array(5) { 
    [0]=> 
    string(9) "target_id" 
    [1]=> 
    string(3) "alt" 
    [2]=> 
    string(5) "title" 
    [3]=> 
    string(5) "width" 
    [4]=> 
    string(6) "height" 
} 

我能得到user_picture實體,但不能看到一種方式來獲得從資料圖片網址這

我還認爲,只是做:

{% for key, item in content.field_team_members if key|first != '#' %} 
    {{ item['#options'].entity.user_picture.0 }} 
{% endfor %} 

會顯示圖像,但我收到一個錯誤。

該網站遇到意外錯誤。請稍後再試。

異常:無法打印Drupal \ image \ Plugin \ Field \ FieldType \ ImageItem類型的對象。在Drupal \核心\模板\ TwigExtension-> escapeFilter()(行441>核心/ LIB/Drupal的/核心/模板/ TwigExtension.php)。

此外,我已經注意到,「content.field_team_members」數組包含不同的數據,具體取決於我是否登錄到Drupal。 for循環甚至不循環,如果我沒有登錄,這意味着這種做法不會爲工作遊客到我的網站,所以必須有一個不同的方法。

回答

1

我解決了這個問題,在我的mythemename.theme文件中添加了一個預處理函數,它將配置文件圖片URL添加到暴露給Twig的$ variables數組中。

預處理功能:

function mythemename_preprocess_ds_1col__node_portfolio_item(&$variables) { 

    $teamMembers = array_filter(array_keys($variables['content']['field_team_members']), 'is_int'); 
    $teamMembersCount = count($teamMembers); 

    for ($i = 0; $i < $teamMembersCount; $i++) { 
    $user = &$variables['content']['field_team_members'][$i]; 
    $user['imgUrl'] = file_create_url($user['#options']['entity']->user_picture->entity->getFileUri()); 
    } 

所以URL可以通過枝條進行訪問:

{% for key, item in content.field_team_members if key|first != '#' %} 
    <img src="{{ item['imgUrl'] }}" /> 
{% endfor %} 

第二個問題

「content.field_team_members」 數組包含不同數據取決於我是否登錄到D. rupal

根據權限解決。在example.com/admin/people/permissions「查看用戶信息」字段必須檢查匿名用戶

Permission Setting

0

我有類似的東西用{{ entity.field.value }}{{ entity.field.0.value }}更換{{ entity.field.0 }}工作。

所以,在你的情況{{ item['#options'].entity.user_picture.value }}

我不確定這是否是「正確」的方法,但它似乎與我的數據一起工作。

相關問題