2011-05-05 5 views
7

में पोर्टल प्रकार साइट-व्यापी अक्षम करना प्लोन 4.1 में पोर्टल प्रकार साइट-व्यापी अक्षम करने का सबसे अच्छा तरीका क्या है? डिफ़ॉल्ट सेटअप ~ 10 पोर्टलेट प्रकार देता है, लेकिन साइट उपयोगकर्ताओं ने केवल कुछ (स्थिर पाठ, समाचार) के लिए केस का उपयोग किया है।प्लोन

उत्तर

7

पोर्टल IPortletType इंटरफ़ेस के साथ ज़ोप घटक मशीनरी के साथ उपयोगिता के रूप में पंजीकृत हैं। Portlets.xml के साथ पोर्टल पंजीकृत करते समय ये पंजीकरण आपके लिए जेनरेट किए जाते हैं। पोर्टल प्रबंधन यूआई तब इन यूटिलिटी रजिस्ट्रेशन का उपयोग उन पोर्टलेट्स को गिनने के लिए करता है जिन्हें आप जोड़ सकते हैं।

सौभाग्य से, plone.portlets.utils इन portlets फिर से पंजीकरण रद्द करना एक आसान एपीआई प्रदान करता है:

def unregisterPortletType(site, addview): 
    """Unregister a portlet type. 

    site is the local site where the registration was made. The addview 
    should is used to uniquely identify the portlet. 
    """ 

addview पैरामीटर एक स्ट्रिंग है, और के रूप में एक portlet.xml पंजीकरण में इस्तेमाल एक ही है। उदाहरण के लिए, कैलेंडर portlet पंजीकृत किया गया है के रूप में:

<portlet 
    addview="portlets.Calendar" 
    title="Calendar portlet" 
    description="A portlet which can render a calendar." 
    i18n:attributes="title; 
        description" 
    > 
    <for interface="plone.app.portlets.interfaces.IColumn" /> 
    <for interface="plone.app.portlets.interfaces.IDashboard" /> 
</portlet> 

आप इस प्रकार निम्नलिखित कोड का टुकड़ा चला कर अपनी साइट से कैलेंडर portlet निकाल सकते हैं:

from plone.portlets.utils import unregisterPortletType 
unregisterPortletType(site, 'portlets.Calendar') 

आप, साथ ही GenericSetup portlets उपयोग कर सकते हैं। xml फ़ाइल सेटअप समय के दौरान portlets दूर करने के लिए, बस portlets सूची addview पैरामीटर और तत्व के लिए एक remove विशेषता जोड़ें:

<?xml version="1.0"?> 
<portlets> 
    <portlet addview="portlets.Calendar" remove="true" /> 
</portlets> 

डेविड ग्लिक के लिए धन्यवाद कि यह हमारे लिए एक है।

+5

यदि मैं सही ढंग से कोड पढ़ रहा हूं, तो आप portlets.xml में जेनेरिकसेटअप के माध्यम से पोर्टलेट प्रकार को अनधिकृत भी कर सकते हैं; जैसे

+0

आप बिल्कुल सही हैं; मुझे पहली बार याद आया क्योंकि यह सीधे घटक एपीआई का उपयोग करता है। मैं जवाब अपडेट करूंगा। –