2017-02-17 6 views
1

Я пытаюсь показать полное имя для каждой новости в списке. На данный момент у меня есть только идентификатор пользователя (псевдоним).Show News Создатель создателя или полное имя владельца в 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