2017-02-17 80 views
1

我試圖在列表中顯示每個新聞項目的全名。目前我只有用戶名(暱稱)。在Plone中顯示新聞項目創建者或所有者全名

是否有一種簡單的方法(在現有的.pt文件中)顯示創建者或所有者的全名而不是暱稱?

該頁面也必須適用於匿名用戶。我的意思是 - 頁面必須公開。

一些細節:

<div class="container-fluid news-list-container" 
    tal:define="news_items python:context.getFolderContents(contentFilter={'portal_type':['News Item'], 'sort_on': 'Date', 'sort_order': 'descending',}); 
       Batch python:modules['Products.CMFPlone'].Batch; 
       b_size python:4; 
       b_start python:0; 
       b_start request/b_start | b_start; 
       batch python:Batch(news_items, b_size, int(b_start), orphan=0);" 
    tal:condition="news_items"> 

    <div class="news-list-items"> 

    <tal:items tal:repeat="news_item batch"> 

     <!-- News item --> 
     <div class="row news-item" 
      tal:define="news_object python:news_item.getObject(); 
         news_date python:news_object.getField('modification_date').getAccessor(news_object)(); 
         news_title python:news_object.getField('title').getAccessor(news_object)(); 
         news_description python:news_object.getField('description').getAccessor(news_object)(); 
         news_image python:news_object.getField('image').getAccessor(news_object)(); 
         news_url python:news_object.absolute_url(); 
         news_creators python:news_object.getField('creators').getAccessor(news_object)(); .... ... 

回答

2
<tal:fullname define="membership context/portal_membership; 
         info python:membership.getMemberInfo(user.getId()); 
         fullname info/fullname"> 
    You are are <span class="name" tal:content="fullname" /> 
</tal:fullname> 

這個例子是從plone documentation

+0

最好的。謝謝! – GhitaB

2

採取你可以通過這個代碼得到啓發了很多:

注意可能的性能問題。

一個緩存的視圖方法可能工作好了很多,例如:

@memoize 
def userid2fullname(self, userid): 
    pm = api.portal.get_tool('portal_membership') 
    memberinfo = pm.getMemberInfo(userid) 
    return memberinfo and memberinfo['fullname'] or userid 
+1

@mathias回覆之前我已經準備好了一半。它基本上是一樣的,但指向一個類似的用例,並警告表演,所以我張貼反正:p – alepisa

+0

非常感謝! – GhitaB

相關問題