2017-02-17 4 views
1

Ich versuche, den vollständigen Namen für jede Nachricht in einer Liste anzuzeigen. Im Moment habe ich nur die Benutzerkennung (Nickname).Zeige Artikel-Ersteller oder Besitzer vollständiger Name in Plone

Gibt es eine einfache Möglichkeit (in der vorhandenen .pt-Datei), den vollständigen Namen des Erstellers oder Besitzers anstelle eines Spitznamens anzuzeigen?

Die Seite muss auch für anonyme Benutzer funktionieren. Ich meine - die Seite muss öffentlich sein.

Einige Details:

<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)(); .... ... 

Antwort

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> 

Dieses Beispiel wird aus dem plone documentation

+0

Die beste. Vielen Dank! – GhitaB

2
genommen

Sie viel von diesem Code inspirieren können:

Beachten Sie die möglichen Leistungsprobleme.

Ein Cache-View-Verfahren kann viel besser arbeiten, z.B .:

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

Ich gehe es halb fertig, bevor @Mathias geantwortet hat. Es ist im Grunde das Gleiche, weist aber auf einen ähnlichen Anwendungsfall hin und warnt vor Performances, also poste ich trotzdem: p – alepisa

+0

Vielen Dank! – GhitaB

Verwandte Themen