7 votes

Désactiver les types de portlets à l'échelle du site dans Plone

Quelle est la meilleure façon de désactiver les types de portlets sur l'ensemble du site dans Plone 4.1 ? La configuration par défaut donne ~10 types de portlets, mais les utilisateurs du site n'en utilisent que quelques-uns (texte statique, nouvelles).

7voto

Martijn Pieters Points 271458

Les portlets sont enregistrés en tant qu'utilitaires avec le IPortletType interface avec la machinerie des composants zope. Ces enregistrements sont générés pour vous lors de l'enregistrement des portlets avec portlets.xml. L'interface de gestion des portlets utilise ensuite ces enregistrements utilitaires pour énumérer les portlets que vous pouvez ajouter.

Heureusement, plone.portlets.utils fournit une API pratique pour désenregistrer ces portlets à nouveau :

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.
    """

En addview Le paramètre est une chaîne, et est le même que celui utilisé dans l'enregistrement d'un portlet.xml. Par exemple, le portlet calendrier est enregistré comme :

<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>

Vous pouvez donc supprimer le portlet calendrier de votre site en exécutant le code suivant :

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

Vous pouvez également utiliser le fichier GenericSetup portlets.xml pour supprimer les portlets pendant l'installation, en listant simplement les portlets. addview et ajouter un paramètre remove à l'élément :

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

Merci à David Glick de l'avoir trouvé pour nous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X