2011-08-16 5 views
5

फोरम में कुछ के साथ plone.org पर documentation का उपयोग करके, मैं प्लोन 4.0.8 में अपनी सामग्री के नीचे एक कस्टम पोर्टलेट प्रबंधक प्राप्त करने में सक्षम था। लक्ष्य, वास्तव में, डैशबोर्ड की तरह व्यवस्थित सामग्री के नीचे 4 कस्टम प्रबंधक हैं।मैं अपने कस्टम पोर्टलेट मैनेजर में स्टॉक पोर्टल (plone.app.portlets से) कैसे जोड़ूं?

वैसे भी, मेरा प्रबंधक केवल मुझे स्थिर और संग्रह पोर्टल जोड़ने की अनुमति देता है। कोड में चारों ओर देखने के बाद, मैंने पाया कि जब सिस्टम पॉप्युलेट करने के लिए जाता है कि 'नया पोर्टलेट जोड़ें' ड्रॉपडाउन, यह सभी पोर्टलों के माध्यम से लूप करता है। फिर, यह प्रत्येक पोर्टलेट की 'for_' विशेषता जांच के माध्यम से देखता है कि इंटरफेस स्वयं - मेरे पोर्टलेट प्रबंधक द्वारा प्रदान किए जाते हैं या नहीं।

def getAddablePortletTypes(self): 
    addable = [] 
    for p in getUtilitiesFor(IPortletType): 
     # BBB - first condition, because starting with Plone 3.1                                 
     #every p[1].for_ should be a list                                       
     if not isinstance(p[1].for_, list): 
      logger.warning("Deprecation Warning ..." % p[1].addview) 
      if p[1].for_ is None or p[1].for_.providedBy(self): 
       addable.append(p[1]) 
     elif [i for i in p[1].for_ if i.providedBy(self)]: 
      addable.append(p[1]) 
    return addable 

इंटरफेस की प्रत्येक पोर्टलेट की 'for_' सूची में मैं अपने प्रबंधक का इंटरफ़ेस कैसे जोड़ूं?

+2

मैं 'वर्ग IBottomPortletManager (IPortletManager) से मेरे प्रबंधक के इंटरफेस बदल' को 'वर्ग IBottomPortletManager (IPortletManager, IColumn)' IColumn plone.app.portlets में परिभाषित किया गया है, इसलिए उन portlets पहले से ही के लिए पंजीकृत हैं प्रबंधकों जो IColumn प्रदान करते हैं। अब, क्या यह करने का यह आदर्श तरीका है? – Travv15

उत्तर

6

आपका comment शायद ऐसा करने का सबसे अच्छा तरीका है। यहां क्रूक्स यह है कि पोर्टल खुद को एक पोर्टल मैनेजर इंटरफ़ेस में पंजीकृत हैं, संदर्भों, परतों आदि के लिए अन्य इंटरफेस के बीच .. ऐसा करने का एक और तरीका, उदाहरण के लिए, आपके प्रोफाइल/डिफ़ॉल्ट/portlets.xml में अतिरिक्त पंजीकरण जोड़ना होगा portlets से प्रत्येक के लिए अपने portlet प्रबंधक इंटरफ़ेस के लिए फ़ाइल addable हैं:

<portlet 
    addview="portlets.News" 
    title="News" 
    description="A portlet which can render a listing of recent news" 
    i18n:attributes="title; 
        description" 
    > 
    <for interface="your.package.IYourPortletManager" /> 
</portlet> 

आपका तरीका, शायद सबसे अच्छा है लेकिन, के बाद से यह लगता है कि आप हैं एक स्तंभ portlet प्रबंधक का निर्माण। आप बेस क्लास से IPortletManager को हटा सकते हैं, हालांकि, क्योंकि आईसीओएलम पहले से ही इसे उप-वर्गीकृत करता है।

+0

जिज्ञासा से, मैं अपने प्रबंधक इंटरफ़ेस में अतिरिक्त पंजीकरण कैसे जोड़ूं? मान लीजिए कि मैं केवल आधार के रूप में आईपॉर्टलेट प्रबंधक का उपयोग कर रहा हूं, लेकिन मुझे समाचार पोर्टल भी चाहिए। मैं न्यूज़ पोर्टल पंजीकरण में अपना प्रबंधक इंटरफ़ेस कैसे जोड़ूं? मैं plone.app.portlets में चारों ओर देख रहा हूं यह पता लगाने की कोशिश कर रहा हूं कि ये पोर्टल अभी तक किसी भी भाग्य के बिना इंटरफेस कैसे पंजीकृत करते हैं। – Travv15

+0

एक उदाहरण के साथ मेरा जवाब अपडेट किया गया। –

संबंधित मुद्दे