Una referencia para viewlets, portlets, administradores de viewlets, y columnas de portlets que componen una página. Hay una breve referencia para cada tipo de componente, con enlaces y recordatorios sobre la forma de manejarlos, un índice visual de los elementos de página, más fragmentos de código para hacer su vida más fácil.
Qué se hace para crear un viewlet, además hojas de trucos sobre cómo mover, eliminar o modificar, y enlaces a tutoriales útiles.
Las partes que construyen un componente viewlet.
<browser:viewlet />
Mover, quitar u ocultar un viewlet
Una hoja de trucos de que tiene que hacer para mover viewlets en su diseño de página, como también quitarlos u ocultarlos de su página.
Encontrará información detallada y un tutorial sobre cómo mover viewlets aquí:
Mover o desplazar viewlets es parte de la configuración de su sitio:
Encontrará información general sobre la configuración del sitio en la sección Configuración de este manual. Vale la pena leer esto antes de iniciar aquí, ya que la configuración de viewlets y administradores de viewlets puede ser un poco complicado. aquí se mostrará
GloWorm es una herramienta útil aquí también. Esta le ayudará a mover los viewlets a través de la interfaz de usuario de Plone e inspeccionar la configuración resultante.
No se puede hacer más que ocultar su viewlet en el administrador de viewlet
<object>
<hidden manager="[Nombre de administrador de viewlet]" skinname="[su nombre del skin]">
<viewlet name="[Nombre de Viewlet]" />
</hidden>
</object>
Tenga en cuenta que usted puede hacer este proceso a través de la web y luego poner a la herramienta Generic Setup para que escriba la configuración por usted para transferir dentro de su propio paquete de tema.
<object>
<order manager="[Nombre de administrador de viewlet]" skinname="[su nombre del skin]">
<!-- Specify all the viewlets you want to see in this viewlet
in the order you want them with this directive: -->
<viewlet name="[Nombre de Viewlet]">
</order>
</object>
Tenga en cuenta que usted puede hacer este proceso a través de la web y luego poner a la herramienta Generic Setup para que escriba la configuración por usted para transferir dentro de su propio paquete de tema.
Si está basando su tema sobre el tema Plone Default, pues encontrará que la reasignación de un viewlet de Plone Default es un proceso que involucra dos pasos
<object>
<!-- Hide it from the current viewlet manager -->
<hidden manager="[actual nombre del administrador Viewlet]"
skinname="[su nombre del skin]">
<viewlet name="[Nombre de Viewlet]" />
</hidden>
<!-- Add it to a different viewlet manager -->
<order manager="[un administrador Viewlet diferente]"
skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[Nombre de Viewlet]"
insert-before="[Nombre del Viewlet siguiente]" />
</order>
<!-- OR Add it to your own viewlet manager -->
<order manager="[Su Administrador Viewlet]" skinname="[su nombre del skin]">
<viewlet name="[Nombre de Viewlet]"/>
</order>
</object>
Sustituyendo (anulando) o creando un nuevo viewlet
Una hoja breve de trucos sobre cómo personalizar o crear un nuevo viewlet.
Usted puede personalizar una plantilla de viewlet a través de la web, pero no puede alterar la base de la clase Python.
En el sistema de archivos, en lugar de personalizar, el proceso es conectar un nuevo viewlet, o re-conectar un viewlet existente.
Encontrará un tutorial detallado sobre la creación de un viewlet en este artículo.
Usted tendrá que saber el nombre de:
La interfaz de administrador de viewlet Revise esto en la sección Elementos de este manual
La interfaz específica de su tema Esto es opcional, pero le asegura que su viewlet sólo está disponible para su tema. Si utiliza la plantilla de paster plone3_theme, el nombre probablemente será IThemeSpecific.
Usted tendrá que crear los siguientes (debe ser capaz de localizar los originales para copiar revisando la sección Elementos o mediante el uso de GloWorm):
directiva viewlet de navegación Esto irá en [su paquete de tema]/browser/configure.zcml
archivo de configuración [su paquete de tema]/profiles/default/viewlets.xml
página de la plantilla[su paquete de tema]/browser/[su nombre de plantilla].pt
Clase Python Esto es opcional (pero vea la nota de abajo para la versión de Plone 3.1.2 o anteriores) coloque esto en [su paquete de tema]/browser/[su modulo].py
Re-conectando un viewlet de Plone Default para utilizar su propia plantilla (tenga en cuenta el atributo de capa es muy importante aquí)
<browser:viewlet
name="plone.[nombre de viewlet]"
manager="[interfaz de administrador viewlet]"
class="plone.app.layout.viewlets.common.[nombre de clase viewlet]"
template="templates/[su nombre de plantilla]"
layer="[su interfaz especifica del tema]"
permission="zope2.View"
/>
Conectando un nuevo viewlet pero prestando una clase de viewlet de Plone Default
<browser:viewlet
name=[su nombre de espacio].[su nombre de viewlet]"
manager="[interfaz de administrador viewlet]"
class="plone.app.layout.viewlets.common.[nombre de clase viewlet]"
template="templates/[su nombre de plantilla]"
layer="[su interfaz especifica del tema]"
permission="zope2.View"
/>
Conectando con un viewlet nuevo con su propia clase o su propia plantilla
<browser:viewlet
name=[su nombre de espacio].[su nombre de viewlet]"
manager="[interfaz de administrador viewlet]"
class=".[su modulo].[su nombre de clase]"
(o: template="templates/[su nombre de plantilla]")
layer="[su interfaz especifica del tema]"
permission="zope2.View"
/>
En la versión de Plone 3.1.2 o anteriores, usted tendrá que usar esto para sustituir un viewlet de Plone Default, incluso si usted sólo desea cambiar la plantilla de página.
from [namespace de clase elemento] import [nombre de clase elemento]
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFileclass
[su nombre de clase]([nombre de clase elemento]): render = ViewPageTemplateFile("[su nombre de plantilla]")
Una hoja de trucos de los detalles que componen un portlet, además información sobre cómo mover, ocultar o sustituir (anular) un portlet.
Las partes que construyen un renderizador de portlet (que es la parte de un portlet que usted desea personalizar).
La personalización de un portlet es similar a la que sustitución de un viewlet, pero más directa. Hay una directiva específica ZCML para la personalización.
<plone:portletRenderer />
Algunos consejos para mover u ocultar los portlets.
Sea que los portlets aparezcan o no en su sitio es altamente personalizable a través de la web, usted puede utilizar el enlace para el administrador de portlets en la mayoría de contextos. Para más información:
Se asume que usted no quiere arreglar portlets en una página (de lo contrario, probablemente serán viewlets). Sin embargo, si desea establecer una asignación inicial de portlets en la instalación de su producto de tema, use
He aquí un extracto de portlets.xml de Plone Default, configurando el inicio de sesión y portlet de navegación para la columna de la izquierda, y los portlets de reseñas y noticias para la columna de la derecha.
<?xml version="1.0"?>
<portlets
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
i18n:domain="plone">
<!-- Assign the standard portlets -->
<assignment
manager="plone.leftcolumn"
category="context"
key="/"
type="portlets.Navigation"
name="navigation"
/>
<assignment
manager="plone.leftcolumn"
category="context"
key="/"
type="portlets.Login"
name="login"
/>
<assignment
manager="plone.rightcolumn"
category="context"
key="/"
type="portlets.Review"
name="review"
/>
<assignment
manager="plone.rightcolumn"
category="context"
key="/"
type="portlets.News"
name="news"
/>
</portlets>
Los atributos para la directiva de asignación son descritos en detalle aquí: http://plone.org/products/plone/roadmap/203/ . En pocas palabras:
Si desea configurar el portlet con más detalle, se puede nidificar directivas de propiedad dentro de la directiva de asignación. Aquí está un detalle para asegurar que el portlet de navegación aparezca en el root del sitio:
<assignment name="navigation" category="context" key="/"
manager="plone.leftcolumn" type="portlets.Navigation">
<property name="topLevel">0</property>
</assignment>
Una hoja breve de trucos sobre cómo sustituir o personalizar un portlet
Hay un tutorial detallado disponible aquí:
También puede consultar los detalles del portlet que desee reemplazar en la sección Elementos de este manual.
Usted tendrá que saber el nombre de
Esto es opcional pero le asegura que su portlet sólo está disponible para su tema. Si utiliza la plantilla de paster plone3_theme, el nombre probablemente será IThemeSpecific.
Usted tendrá que crear los siguientes (debe ser capaz de localizar los originales para copiar revisando la sección de Elementos):
<configure
xmlns:plone="http://namespaces.plone.org/plone">
<include package="plone.app.portlets" />
<plone:portletRenderer
portlet="[element interface]"
template="[su nombre de plantilla].pt"
(o class=".[su modulo].[su nombre de clase]")
layer="[su interfaz especifica del tema]"
/>
</configure>
Si desea personalizar el portlet de navegación, es posible que deba suministrar la clase, así como también la plantilla. Dos plantillas están involucradas: la primera es usual plantilla de visualización, y la segunda se encarga de la recursión a través del árbol de navegación. Si usted necesita hacer su propia versión de la segunda, entonces tendrá que asignarla al método recursivo en la clase.
from plone.app.portlets.portlets.navigation import Renderer
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](Renderer):
_template = ViewPageTemplateFile([su nombre de plantilla].pt)
recurse = ViewPageTemplateFile([su nombre del recursivo de plantilla])
La personalización de portlets es una tarea regular, trabajando con el tema de Plone. En este tutorial averiguaremos cómo hacer esto en Plone 3.0 con su nuevo mecanismo para la administración de portlets (aportado por Denys Mishunov)
Era bastante fácil personalizar uno de los portlets estándar en tiempos de las versiones anteriores de Plone 3.0. Tan sólo tenía que copiar una plantilla de página para el portlet adecuado para su producto de tema y hacer lo que quiera, cambiando el XHTML. También podía crear un portlet nuevo con la misma facilidad; simplemente creando una plantilla para el nuevo portlet y registrando este portlet con las Propiedades de su sitio.
En Plone 3.0 los portlets se convirtieron en algo más complejo. Pero no tema. Al mismo tiempo se volvieron ¡más poderosos! La ventaja se hace evidente ahora, ¿no? ;) Estos se sirven desde paquetes Python separados y realmente tienen posibilidades de administración flexibles. Por lo tanto, vale la pena probar este nuevo mecanismo para darse cuenta de lo poderoso que es.
Lo primero que hay que destacar; esto no se trata de personalización a través de la web. Si usted necesita un truco rápido y no muy estilizado, eche un vistazo a la herramienta portal_view_customizations. Este tutorial asume que usted desea que sus cambios se repitan, de modo que usted pueda obtener los mismos cambios en cualquier otro sitio donde se instale su producto.
Otra cosa que podría tener en cuenta vale la pena mencionar: usted no necesita esta técnica en ningún caso que quiera personalizar un portlet en Plone 3.0. Si usted ha apenas personalizado portlets utilizados en versiones anteriores de Plone o si desea seguir utilizando los portlets de la manera “a-la-era-anterior-a-3.0” (que no recomiendo en absoluto) puede que tenga que revisar ClassicPortlet incluido con Plone 3.0. Este lidia con las plantillas de página regulares de la misma manera en que ha trabajado con portlets antes de la 3.0.
Y el último antes de seguir adelante. Si quiere personalizar cualquier de los portlets estándar eliminandole toda la lógica de fondo (creando un portlet estático), no lo haga Lo que queremos decir es que no haga esto. Gente con experiencia pens? en usted. Mejor instale plone.portlet.static y juegue con él, creando los portlets estáticos cuando los necesite.
Así que para todos aquellos que todavía siguen con nosotros...finalmente seguimos adelante.
Suponemos que ha creado el tema de Plone 3 MyTheme ya sea con los generadores DIYPloneStyle o ZopeSkel. Aquí no cubrimos las explicaciones de todos los aspectos de la creación de un tema para Plone 3.0. Para obtener más información acerca de las ideas centrales en la elaboración de un tema, administración de viewlets en Plone 3.0 y muchos más, revise un excelente tutorial por David Convent, Personalización de viewlets en main_template.
El concepto clave en el trabajo con portlets en Plone 3.0 es el uso de la capa de skin de Zope 3, la misma que tenemos cuando se reemplaza un viewlet. Asumimos que usted tiene al menos el siguiente conjunto mínimo de archivos en la carpeta MyTheme/browser:
- browser/
- __init__.py
- configure.zcml
- interfaces.py
Generalmente el proceso de sustitución de portlets es así:
Primero que nada debemos decidir qué portlet deseamos personalizar. Vamos a elegir el portlet de Noticias. Si echara un vistazo portlet estándar de noticias, podrá ver esas imágenes news_icon en frente de los títulos. Vamos a deshacernos de ellas en el XHTML sólo para ejemplificar.
Los portlets por defecto de Plone se declaran en el paquete plone.app.portlets.portlets. Los portlets de núcleo en Plone 3.0 se pueden encontrar en $INSTANCE_HOME/lib/python/plone/app/portlets/portlets/. Aunque se pueden ubicar en otro lugar en $PYTHONPATH. Dependiendo de la instalación de Zope (win32 o UNIX como sistema operativo, instalación desde el código fuente, por el instalador, huevos u otros...), puede que tenga que utilizar las herramientas de búsqueda disponibles en su sistema operativo para localizar el paquete.
El paquete plone.app.portlets.portlets contiene módulos de Python, plantillas de página y el archivo de configuración de ZCML: configure.zcml. Este archivo contiene un conjunto de directivas <plone:portlet /> que definen portlets estándar de esta manera:
<plone:portlet
name="portlets.News"
interface=".news.INewsPortlet"
assignment=".news.Assignment"
renderer=".news.Renderer"
addview=".news.AddForm"
editview=".news.EditForm"
/>
Los atributos en el código anterior se explican por si mismo. Pero si no están claros para usted o desea saber más acerca de los atributos adicionales para <plone:portlet />, eche un vistazo a la interfaz IPortletDirective en el módulo metadirectives dentro del paquete plone.app.portlets.
Podemos registrar un reemplazo para un portlet sólo para un tema (una selección de skin), gracias al paquete plone.theme. Gracias a plone.theme, podemos establecer una capa de skin de Zope 3 que corresponda con un skin particular en portal_skins (un tema).
Agregue el siguiente código a MyTheme/browser/interfaces.py si todavía no la tiene:
from plone.theme.interfaces import IDefaultPloneLayer
class IThemeSpecific(IDefaultPloneLayer):
"""Marker interface that defines a Zope 3 skin layer bound to a Skin
Selection in portal_skins.
"""
Junto con la directiva <plone:portlet />, el paquete plone.app.portlets define otro; <plone:portletRenderer />. El último se utiliza para sustituir los portlets, definidos en su sitio. Tiene unos pocos atributos posibles que se pueden encontrar en el módulo metadirectives dentro del paquete plone.app.portlets. No vamos a listar todos aquí, así que simplemente pase 5 minutos y eche un vistazo a esos atributos, para que pueda comprender el siguiente código ...
... 5 minutos después...
Bien, volvamos al trabajo. Para sustituir el portlet estándar de noticias para el producto MyTheme debemos agregar la directiva <plone:portletRenderer /> a MyTheme/browser/configure.zcml. Revisemos cómo debería verse esto (asegúrese de tener el namespace xmlns:plone=”http://namespaces.plone.org/plone” definido en su nodo superior <configure>):
<include package="plone.app.portlets" />
<interface
interface=".interfaces.IThemeSpecific"
type="zope.publisher.interfaces.browser.IBrowserSkinType"
name="My Theme"
/>
<plone:portletRenderer
portlet="plone.app.portlets.portlets.news.INewsPortlet"
template="mytheme_news.pt"
layer=".interfaces.IThemeSpecific"
/>
Primero incluya el paquete plone.app.portlets para asegurar que los portlets por defecto están activados antes de sustituir cualquier cosa.
Luego creamos una interfaz de capa de navegador para MyTheme, definida en MyTheme/browser/interfaces.py disponible. Si ha personalizado cualquier viewlet ya debería tener esto en configure.zcml así que no hay necesidad de añadirlo dos veces en el mismo tema.
A continuación, vamos a resolver cuáles son los atributos que usamos aquí:
Es todo con configure.zcml. Sigamos.
En el apartado anterior hemos definido mytheme_news.pt como un valor para el atributo template. Pero no tenemos esa plantilla en el sistema de archivos. Vamos a añadirla a ** MyTheme / browser / ** . Simplemente copie la plantilla news.pt para el portlet de noticias desde plone.app.portlets.portlets a MyTheme/browser/ y renombrelo para mytheme_news.pt. Abra esta plantilla en su editor favorito y vamos a jugar con ella un poco.
Como debe recordar tiene que deshacerse de los iconos estándar news_icon.gif que obtenemos para los elementos de noticias por defecto. Encuentre la siguiente línea en la plantilla:
<img tal:replace="structure item_icon/html_tag" />
y comentela de modo que no hagamos pasos irrecuperables y podamos deshacer nuestros cambios más tarde. Así, tenemos:
<!-- <img tal:replace="structure item_icon/html_tag" /> -->
Por lo tanto, eso es todo. Reinicie su Zope y vea su portlet de elementos de noticia; ¡no hay imágenes! ¡Bien! ¡Excelente! Bueno en realidad no tanto ya que la imágenes pueden ser útiles para portales de comunidades :)
Este ejemplo es muy simple y de seguro no es realmente muy útil. Pero definitivamente ahora puede hacer personalizaciones mucho mejores. Cuando se utiliza el atributo class en la directiva <plone:portletRenderer/> usted puede crear portlets que realmente se diferencien de los predeterminados. Y es allá donde se encuentra la belleza de los portlets en Plone 3.0; no tendrá que poner una carga de Python a sus plantillas de página como tenía que hacer antes. Todas las cosas de Python estarán exactamente donde tienen que estar; en clases Python. Y la plantilla sólo obtendrá los resultados de diferentes métodos de Python dentro de esa clase.
¡Disfrute!
Cómo mover u ocultar los administradores de viewlet y cómo crear uno nuevo.
Las partes que construyen un administrador de viewlet.
<browser:viewletManager />
Algunos consejos de cómo mover u ocultar administradores de viewlet.
Los administradores de viewlets son llamados por plantillas de página. Moverlos o eliminarlos es simplemente un asunto de personalización de plantilla. La mayoría son llamados por main_template, pero es posible que tenga que buscar dentro de las vistas específicas de contenido para algunos de ellos.
Configuración del sitio ‣ Interfaz de Administración de Zope ‣ portal_skins ‣ plone_templates o Configuración del sitio ‣ Interfaz de Administración de Zope ‣ portal_skins ‣ plone_templates
haga clic en el botón de personalizar, y busque por
<div tal:replace="structure provider:[nombre de administrador de viewlet]" />
(Use la clave de Elementos para identificar exactamente qué administrador le interesa)
Una breve hoja de trucos para crear un nuevo administrador de viewlet.
No se puede crear un nuevo administrador de viewlet a través de la web. Para sustituir el orden en que aparecen los viewlets en un administrador de viewlet, siga las instrucciones para viewlets.
Si usted está basando su nuevo administrador de viewlet en un administrador de Viewlet de Plone Default, busque los detalles en la sección de Elementos de este manual.
Usted tendrá que saber el nombre de
La interfaz específica de su tema Esto es opcional, pero le asegura que su viewlet sólo está disponible para su tema. Si utiliza la plantilla de paster plone3_theme, el nombre probablemente será IThemeSpecific.
Usted tendrá que crear los siguientes (debe ser capaz de localizar los originales para copiar revisando la sección de Elementos):
from zope.viewlet.interfaces import IViewletManager
class [su interfaz de administrador viewlet](IViewletManager):
""" [Una descripción de su administrador viewlet va aquí] """
<browser:viewletManager
name=[su nombre de espacio].[su nombre de elemento]"
provides=".interfaces.[su interfaz de administrador viewlet]"
class="plone.app.viewletmanager.manager.OrderedViewletManager"
layer="[su interfaz del tema]"
permission="zope2.View"
/>
Consejos para mover u ocultar administradores de portlets. Hoja de trucos para la creación de un nuevo administrador de portlet.
Consejos sobre cómo mover o quitar los administradores de portlets.
Los administradores de portlets son llamados por main_template. Moverlos o eliminarlos es simplemente un asunto de personalización de plantilla.
Configuración del sitio ‣ Interfaz de Administración de Zope ‣ portal_skins ‣ plone_templates ‣ main_template
Personalice esto, y busque por
<div tal:replace="structure provider:[portlet manager name]" />
(Use la clave de Elementos para identificar exactamente qué administrador le interesa)
Existen varios métodos para ocultar un administrador de portlet.
Un administrador de portlet no se mostrará si no hay portlets para mostrar asignados a él o si los portlets asignados no tienen datos.
En el caso de las columnas de portlets, si el administrador de portlet está vacío, entonces también es útil desaparecer los elementos de bloque circundantes también, para que no obtenga un amplio margen en blanco en su página. Por esta razón, las columnas que contienen los administradores de portlets en el main_template están empaquetados con slots (ranuras). Ocultar los administradores de portlets es, por lo tanto, un asunto de la manipulación de estas ranuras. Existen varias técnicas:
Definiendo una ranura vacía Utilice lo siguiente en una plantilla de vista de contenido para asegurarse de que la columna de la derecha se retire:
Usando las variables globales sl y sr Estas se establecen como condiciones en las ranuras; ellas comprueban los respectivos administradores de portlet de contenido y, si están vacíos, dan como resultado un false (falso). Usted puede sustituir estas en la plantilla misma. Usando la opción show_portlets show_portlets=false se puede pasar como una opción a una plantilla para establecer sl y sr a falso Para ver esto en acción, eche un vistazo a
Cómo crear un nuevo administrador de portlet.
Un ejemplo práctico de la creación de un nuevo administrador de portlet puede encontrarla aquí
He aquí una lista rápida de lo que tiene que hacer.
No se puede crear un nuevo administrador de portlet a través de la web.
Usted tendrá que proporcionar el nombre de
La interfaz específica de su tema Esto es opcional pero le asegura que su administrador de portlet está disponible sólo para su tema. Si utiliza la plantilla de paster plone3_theme, el nombre probablemente será IThemeSpecific.
Usted tendrá que crear los siguientes (debe ser capaz de localizar los originales para copiar revisando la sección de Elementos):
Interface Esto irá en [su paquete de tema]/browser/interfaces.py. Le puede dar cualquier nombre que desee, pero por convención, debe ser precedido por “I”. directiva de configuración [su paquete de tema]/profiles/default/portlets.xml browser:page directive (para la vista del administrador) [su paquete de tema]/browser/configure.zcml plantilla de página (para la vista del administrador) [su paquete de tema]/browser/[su plantilla].pt
from plone.portlets.interfaces import IPortletManager
class [su interfaz del administrador portlet](IPortletManager):
"""A description goes here """
<?xml version="1.0"?>
<portlets>
<portletmanager
name="[su nombre de espacio].[su administrador de portlet]"
type="[su nombre de espacio].[su nombre del tema].browser.interfaces.[su interfaz del administrador portlet]"
/>
</portlets>
<browser:page
for="plone.portlets.interfaces.ILocalPortletAssignable"
class="plone.app.portlets.browser.manage.ManageContextualPortlets"
name="[su nombre de vista]"
template="[su nombre de plantilla].pt"
permission="plone.app.portlets.ManagePortlets"
/>
Práctico
Usted necesita portlets en otro lugar en su Plone. En este ejemplo colocamos portlets contextuales sobre el contenido (aportado por Jens Klein)
Nota
Esto se trata de agregar ADMINISTRADORES de portlets, pista: PortletManager! = Portlet. Un PortletManager es una especie de contenedor para los portlets, tal como es el ViewletManager para viewlets. Bueno, después de reducir el mom?ntum de malentedimiento, comencemos:
Supongo que está familiarizado con las configuraciones base GenericSetup de Plone 3. Revise los tutoriales DIYPloneStyle y otros relacionados si no es así.
Usted necesita instalar Plone 3 y un producto NEWTHEME (nuevo tema) para su propio skin (basado en DIYPloneStyle funciona bien).
En mi ejemplo, yo no quiero personalizar la plantilla principal. Por lo tanto la idea es agregar un viewlet al viewletmanager plone.app.layout.viewlets.interfaces.IContentViews. Así que los pasos que hay que hacer son:
en Products.NEWTHEME agregue un archivo abovecontentportlets.pt que contenga:
<tal:block replace="structure provider:my.abovecontentportlets" />
Aquí llamamos al administrador de portlet, y lo creamos en el paso dos. Pero primero registremos nuestro nuevo viewlet para el viewletmanager. Edite su Products/NEWTHEME/configure.zcml y agregue:
<browser:viewlet
name="my.abovecontentportlets"
manager="plone.app.layout.viewlets.interfaces.IContentViews"
template="abovecontentportlets.pt"
permission="zope2.View"
/>
Crear una interfaz de marcado para el administrador y agregue o edite Products/NEWTHEME/interfaces.py
from plone.portlets.interfaces import IPortletManager
class IMyAboveContent(IPortletManager):
"""we need our own portlet manager above the content area.
"""
Agregue (o edite) su Products/NEWTHEME/profiles/default/portlets.xml y registre un administrador de portlet:
<?xml version="1.0"?>
<portlets>
<portletmanager
name="my.abovecontentportlets"
type="Products.NEWTHEME.interfaces.IMyAboveContent"
/>
</portlets>
Eso es todo lo que necesita si no quiere administrar los portlets a través de la web. Oh! ¿si quiere? Pues entonces necesita un tercer paso:
La vista para administración es renderizada para los slots (ranuras) de la izquierda y derecha en plantilla principal (main-template) Sin embargo utilizamos un viewlet y tenemos aquí una vista diferente. así que tenemos que llamar explícitamente a nuestra vista y llamar a nuestro administrador dentro de su contexto.
Tenemos que registrar una nueva vista de navegador para ver nuestra plantilla de página llamando directamente a nuestro administrador. Nuevamente agregue algunas líneas a su configure.zcml:
<browser:page
for="plone.portlets.interfaces.ILocalPortletAssignable"
class="plone.app.portlets.browser.manage.ManageContextualPortlets"
name="manage-myabove"
template="templates/managemyabove.pt"
permission="plone.app.portlets.ManagePortlets"
/>
Y finalmente, necesitamos la plantilla, así que agregue un archivo managemyabove.pt y edite:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
metal:use-macro="context/main_template/macros/master"
i18n:domain="plone">
<head>
<div metal:fill-slot="javascript_head_slot" tal:omit-tag="">
<link type="text/css" rel="kinetic-stylesheet"
tal:attributes="href
string:${context/absolute_url}/++resource++manage-
portlets.kss"/>
</div>
</head>
<body>
<div metal:fill-slot="main">
<h1 class="documentFirstHeading">Manage My Portlets</h1>
<span tal:replace="structure provider:my.abovecontentportlets" />
</div>
</body>
</html>
Eso es todo. Después de reiniciar su Zope puede llamar http://DOMINIO.TLD/plone/ruta/a/algun/contexto/@@manage-myabove y asignar portlets sobre su contenido.
Un índice visual de los elementos de la página principal.
Por el momento, este índice le ofrece solamente viewlets, pero la intención es ampliarlo para incluir portlets y los respectivos administradores.
Una alternativa al uso de este índice es la instalación de GloWorm en su instancia de Plone. Este es un inspector visual que le dará información sobre diversos aspectos del tema Plone Default directamente a través de su explorador, y facilitarle realizar personalizaciones de viewlet a través de la Web.
Clave | Título | Código HTML | Nombre del Tipo de Administrador |
---|---|---|---|
Enlaces para salto | <p class=”hiddenStructure”> ... </p> |
plone.portalheader |
|
Título de Cabecera HTML | <title> ...</title> |
plone.htmlhead |
|
Enlaces anterior/siguiente | <link title=”Go to previous item” /> | ||
Enlace Favicon | <link rel=”shortcut icon” /> |
plone.htmlhead.links |
|
Enlace de búsqueda | <link rel=”search” ... /> |
plone.htmlhead.links |
|
Enlace de autor | <link rel=”author” ... /> |
plone.htmlhead.links |
|
Enlace de navegación | <link title=”Front Page” ...> and <link title=”Site Map”..> |
plone.htmlhead.links |
|
Analytics | (Fragmento de código definido por el administrador del sitio) |
plone.portalfooter |
|
Encabezado | <div id=”portal-header”> ... </div> |
plone.portaltop |
|
Selector de idiomas | <ul id=”portal-languageselector”> ... </ul> | plone.app.i18n.locales.languageselector Portal Top |
|
![]() |
Acciones del sitio | <ul id=”portal-siteactions”>...</ul> |
plone.portalheader |
![]() |
Cuadro de búsqueda | <div id=”portal-searchbox”>...</div> |
plone.portalheader |
![]() |
Logotipo | <a id=”portal-logo” ...>... </a> |
plone.portalheader |
![]() |
Secciones globales | <h5 class=”hiddenStructure”>Sections</h5> <ul id=”portal-globalnav”> ... </ul> |
plone.portalheader |
![]() |
Barra personal | <div id=”portal-personaltools-wrapper”>...</div> |
plone.portaltop |
Barra de ruta (hilo de Ariadna del portal) | <div id=”portal-breadcrumbs”>...</div> |
plone.portaltop |
|
Vistas de contenido | <ul class=”contentViews”> ... </ul> |
plone.contentviews |
|
Acciones de contenido | ref:plone.contentactions <799_seccion> plone.contentviews |
||
![]() |
Tabla de contenidos | <dl id=”document-toc” class=”portlet toc” style=”display:none”> ... </dl> |
plone.abovecontentbody |
![]() |
Presentación | <p id=”link-presentation”>...</p> |
plone.abovecontentbody |
Palabras clave | <div id=”category” class=”documentByLine”>...</div> | plone.belowcontenttitle.keywords plone.belowcontenttitle |
|
![]() |
Línea de fondo | <div id=”plone-document-byline” class=”documentByLine”>...</div> |
plone.abovecontentbody |
Bloqueo | <div id=”plone-lock-status” /> |
plone.abovecontent |
|
![]() |
Acciones de documento | <div class=”documentActions”> ... </div> | plone.abovecontenttitle.documentactions plone.belowcontentbody |
![]() |
Comentarios | <div class=”discussion”> ... </div> |
plone.belowcontent |
Historial de contenido | <div class=”contentHistory” id=”content-history”>...</div> | plone.belowcontentbody.contenthistory plone.belowcontentbody |
|
![]() |
Anterior Siguiente | <div class=”listingBar”>...</div> |
plone.belowcontent |
Pie de página | <div id=”portal-footer”>...</div> |
plone.portalfooter |
|
![]() |
Colofon | <div id=”portal-colophon”>...</div> |
plone.portalfooter |
Un índice visual de los elementos de la página principal.
Por el momento, este índice le ofrece solamente viewlets, pero la intención es ampliarlo para incluir portlets y los respectivos administradores.
Una alternativa al uso de este índice es la instalación de GloWorm en su instancia de Plone. Este es un inspector visual que le dará información sobre diversos aspectos del tema Plone Default directamente a través de su explorador, y facilitarle realizar personalizaciones de viewlet a través de la Web.
Clave | Título | Código HTML | Nombre del Tipo de Administrador |
---|---|---|---|
Enlaces para salto | <p class=”hiddenStructure”> ... </p> |
plone.portalheader |
|
Título de Cabecera HTML | <title> ...</title> |
plone.htmlhead |
|
Dublin Core Metadata | <meta ... /> |
plone.htmlhead |
|
KSS Base Url | <link rel=”kss-base-url” ... /> |
plone.htmlhead |
|
Enlaces anterior/siguiente | <link title=”Go to previous item” ... /> |
plone.htmlhead.links |
|
Enlace Favicon | <link rel=”shortcut icon” ... /> |
plone.htmlhead.links |
|
Enlace de búsqueda | <link rel=”search” ... /> |
plone.htmlhead.links |
|
Enlace de autor | <link rel=”author” ... /> |
plone.htmlhead.links |
|
Enlace de navegación | <link title=”Front Page” ...> y <link title=”Site Map” ...> |
plone.htmlhead.links |
|
Enlace RSS | <link rel=”alternate” title=”RSS 1.0” .. /> |
plone.htmlhead.links |
|
Analytics | (Fragmento de código definido por el administrador del sitio) |
plone.portalfooter |
|
Encabezado | <div id=”portal-header”> ... </div> |
plone.portaltop |
|
Selector de idiomas | <ul id=”portal-languageselector”> ... </ul> | plone.app.i18n.locales.languageselector Portal Top |
|
![]() |
Acciones del sitio | <ul id=”portal-siteactions”>...</ul> | plonetheme.sunburst.site_actions plone.portalfooter |
![]() |
Cuadro de búsqueda | <div id=”portal-searchbox”>...</div> |
plone.portalheader |
![]() |
Logotipo | <a id=”portal-logo” ...>... </a> |
plone.portalheader |
![]() |
Secciones globales | <h5 class=”hiddenStructure”>Sections</h5> <ul id=”portal-globalnav”> ... </ul> |
plone.portalheader |
![]() |
Barra personal | <div id=”portal-personaltools-wrapper”>...</div> | plonetheme.sunburst.personal_bar plone.portaltop |
![]() |
Barra de ruta (hilo de Ariadna del portal) | <div id=”portal-breadcrumbs”>...</div> |
plone.portaltop |
![]() |
Vistas de contenido | <ul class=”contentViews”> ... </ul> |
plone.contentviews |
![]() |
Accions de contenido | ref:plone.contentactions <799_seccion> plone.contentviews |
|
![]() |
Tabla de contenidos | <dl id=”document-toc” class=”portlet toc” style=”display:none”> ... </dl> |
plone.abovecontentbody |
![]() |
Presentación | <p id=”link-presentation”>...</p> |
plone.abovecontentbody |
![]() |
Palabras clave | <div id=”category”class=”documentByLine”>...</div> | plone.belowcontenttitle.keywords plone.belowcontenttitle |
![]() |
Línea de fondo | <div id=”plone-document-byline” class=”documentByLine”>...</div> | plone.belowcontenttitle.documentbyline plone.belowcontenttitle |
Bloqueo | <div id=”plone-lock-status” /> |
plone.abovecontent |
|
Acciones de documento | <div class=”documentActions”> ... </div> | plone.abovecontenttitle.documentactions plone.belowcontentbody |
|
![]() |
Elementos relacionados | <div class=”relatedItems”> ... </div> | plone.belowcontentbody.relateditems plone.belowcontentbody |
![]() |
Comentarios | <div class=”discussion”> ... </div> |
plone.belowcontent |
![]() |
Historial de contenido | <div class=”contentHistory” id=”content-history”>...</div> | plone.belowcontentbody.contenthistory plone.belowcontentbody |
![]() |
Anterior Siguiente | <div class=”listingBar”>...</div> |
plone.belowcontent |
![]() |
Pie de página | <div id=”portal-footer”>...</div> |
plone.portalfooter |
![]() |
Pie de página | <div id=”portal-colophon”>...</div> |
plone.portalfooter |
Elementos que forman la estructura de página subyacente (administradores de viewlet y portlet).
Llama los administradores de viewlets para el encabezado del sitio
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portaltop (nombre)
plone.app.layout.viewlets.interfaces.IPortalTop (interfaz)
Ponga una versión de portal_header.pt en [su paquete de tema]/browser/templates)
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalTop"
template="templates/[su nombre de plantilla].pt"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portaltop" skinname="[su nombre del skin]">
<viewlet name="plone.header" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portaltop" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Elementos ocultos de página (que aparecen en la HTMLhead o con css configurado a display:none).
Enlaces ocultos en la parte superior de la página para saltar al contenido y la navegación.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portalheader (nombre)
plone.app.layout.viewlets.interfaces.IPortalHeader (interfaz)
Coloque una versión de skip_links.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import SkipLinksViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](SkipLinksViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalHeader"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portalheader" skinname="[su nombre del skin]">
<viewlet name="plone.skip_links" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portalheader" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
El título de la página HTML en la cabecera.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.htmlhead (nombre)
plone.app.layout.viewlets.interfaces.IHtmlHead (interfaz)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import TitleViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](TitleViewlet):
[su código aquí]
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IHtmlHead"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.htmlhead" skinname="[su nombre del skin]">
<viewlet name="plone.htmlhead.title" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.htmlhead" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Proporciona enlaces anterior/siguiente en la cabecera HTML.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.htmlhead.links (nombre)
plone.app.layout.viewlets.interfaces.IHtmlHeadLinks (interfaz)
Put a version of links.pt in [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.nextprevious.view import NextPreviousLinksViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](NextPreviousLinksViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IHtmlHeadLinks"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.htmlhead.links" skinname="[su nombre del skin]">
<viewlet name="plone.nextprevious.links" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.htmlhead.links" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
El enlace favicon en la cabecera HTML.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.htmlhead.links (nombre)
plone.app.layout.viewlets.interfaces.IHtmlHeadLinks (interfaz)
Ponga una versión de favicon.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.links.viewlets import FaviconViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](FaviconViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IHtmlHeadLinks"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.htmlhead.links" skinname="[su nombre del skin]">
<viewlet name="plone.links.favicon" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.htmlhead.links" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
El enlace de búsqueda en la cabecera HTML.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.htmlhead.links (nombre)
plone.app.layout.viewlets.interfaces.IHtmlHeadLinks (interfaz)
Ponga una versión de search.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.links.viewlets import SearchViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](SearchViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IHtmlHeadLinks"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.htmlhead.links" skinname="[su nombre del skin]">
<viewlet name="plone.links.search" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.htmlhead.links" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
El enlace de autor en la cabecera HTML.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.htmlhead.links (nombre)
plone.app.layout.viewlets.interfaces.IHtmlHeadLinks (interfaz)
Ponga una versión de author.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.links.viewlets import AuthorViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](AuthorViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IHtmlHeadLinks"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.htmlhead.links" skinname="[su nombre del skin]">
<viewlet name="plone.links.author" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.htmlhead.links" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Fragmento de código de Google Analytics.
Nota
Proporciona el fragmento de código para su sitio a través de la web: Configuración del sitio ‣ Sitio
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portalfooter (nombre)
plone.app.layout.viewlets.interfaces.IPortalFooter (interfaz)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.analytics.view import AnalyticsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](AnalyticsViewlet):
[su código aquí]
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalFooter"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portalfooter" skinname="[su nombre del skin]">
<viewlet name="plone.analytics" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portalfooter" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Metadatos Dublin Core en la cabecera HTML.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.htmlhead (nombre)
plone.app.layout.viewlets.interfaces.IHtmlHead (interfaz)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import DublinCoreViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](DublinCoreViewlet):
[su código aquí]
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IHtmlHead"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.htmlhead" skinname="[su nombre del skin]">
<viewlet name="plone.htmlhead.dublincore" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.htmlhead" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Enlace rel tag en la cabecera HTML con el URL real de la página publicada.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.htmlhead (nombre)
plone.app.layout.viewlets.interfaces.IHtmlHead (interfaz)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.kss.headerViewlet import KSSBaseUrlViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](KSSBaseUrlViewlet):
[su código aquí]
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IHtmlHead"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.htmlhead" skinname="[su nombre del skin]">
<viewlet name="plone.htmlhead.kss-base-url" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.htmlhead" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
El enlace RSS en la cabecera HTML.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.htmlhead.links (nombre)
plone.app.layout.viewlets.interfaces.IHtmlHeadLinks (interfaz)
Ponga una versión de navigation.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.links.viewlets import RSSViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](RSSViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IHtmlHeadLinks"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.htmlhead.links" skinname="[su nombre del skin]">
<viewlet name="plone.links.RSS" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.htmlhead.links" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Elementos de página visibles en la página (logotipo, acciones de sitio, cuadro de búsqueda, etc.)
Proporciona una lista desplegable para seleccionar un idioma.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
Portal Top (name)
plone.app.layout.viewlets.interfaces.IPortalTop (interfaz)
Ponga una versión de languageselector.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.i18n.locales.browser.selector import LanguageSelector
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](LanguageSelector):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalTop"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="Portal Top" skinname="[su nombre del skin]">
<viewlet
name="plone.app.i18n.locales.languageselector" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="Portal Top" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Enlaces disponibles en cada página, para proporcionar funcionalidad o información específica.
Nota
Puede cambiar el orden, añadir o eliminar acciones individuales del sitio
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portalheader (nombre)
plone.app.layout.viewlets.interfaces.IPortalHeader (interfaz)
Ponga una versión de site_actions.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import SiteActionsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](SiteActionsViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalHeader"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portalheader" skinname="[su nombre del skin]">
<viewlet name="plone.site_actions" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portalheader" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Facilidad de búsqueda en el sitio
Nota
Para personalizar el comportamiento del cuadro de búsqueda
Para más información:http://plone.org/documentation/kb/the-search-box
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portalheader (nombre)
plone.app.layout.viewlets.interfaces.IPortalHeader (interfaz)
Ponga una versión de searchbox.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import SearchBoxViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](SearchBoxViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalHeader"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portalheader" skinname="[su nombre del skin]">
<viewlet name="plone.searchbox" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portalheader" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
'
El logotipo del sitio.
Para más información: http://plone.org/documentation/kb/where-is-what/the-logo Ver también la sección Comienzo rápido de este manual.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portalheader (nombre)
plone.app.layout.viewlets.interfaces.IPortalHeader (interfaz)
Ponga una versión de logo.pt en [su paquete de tema]/browser/templates)
Modifique el logo.pt para satisfacer sus necesidades. Por ejemplo, si desea utilizar una imagen con otro nombre que logo.jpg, puede utilizar este código y estilo #header en el archivo mytheme.css.
<a metal:define-macro="portal_logo"
id="portal-logo"
accesskey="1"
tal:attributes="href view/navigation_root_url"
i18n:domain="plone">
<!-- <img src="logo.jpg" alt=""
tal:replace="structure view/logo_tag" /> --> <!--
commenting out the code that normally looks for logo.jpg -->
<div id="banner"><!-- style this div in your mytheme.css --></div></a>
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import LogoViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](LogoViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalHeader"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portalheader" skinname="[su nombre del skin]">
<viewlet name="plone.logo" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portalheader" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object> '
Las secciones de nivel superior del sitio.
Nota
Las secciones son generadas automáticamente a partir de los elementos de contenido de nivel superior o pueden configurarse manualmente
Para más información: http://plone.org/documentation/kb/where-is-what/the-navigation-tabs
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portalheader (nombre)
plone.app.layout.viewlets.interfaces.IPortalHeader (interfaz)
Ponga una versión de sections.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import GlobalSectionsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](GlobalSectionsViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalHeader"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portalheader" skinname="[su nombre del skin]">
<viewlet name="plone.global_sections" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portalheader" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Proporciona el enlace para Inicio de sesión y otros enlaces una vez que el usuario ha iniciado sesión.
Nota
Puede cambiar el orden, añadir o eliminar enlaces específicos en la barra personal
Para más información: http://plone.org/documentation/kb/where-is-what/the-personal-bar
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portaltop (nombre)
plone.app.layout.viewlets.interfaces.IPortalTop (interfaz)
Ponga una versión de personal_bar.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import PersonalBarViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](PersonalBarViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalTop"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portaltop" skinname="[su nombre del skin]">
<viewlet name="plone.personal_bar" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portaltop" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Proporciona el hilo de Ariadna
<div id="portal-breadcrumbs">...</div>
Nota
En el tema Sunburst, el hilo de Ariadna ha sido diseñado para no aparecer hasta el tercer nivel abajo. Personalice el CSS para cambiar este comportamiento.
Para más información: http://plone.org/documentation/kb/where-is-what/the-path-bar
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portaltop (nombre)
plone.app.layout.viewlets.interfaces.IPortalTop (interfaz)
Ponga una versión de path_bar.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import PathBarViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](PathBarViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml:
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalTop"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea):
<object>
<hidden manager="plone.portaltop" skinname="[su nombre del skin]">
<viewlet name="plone.path_bar" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet:
<order manager="plone.portaltop" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
La vista, edición, y las otras pestañas en la interfaz de edición.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.contentviews (nombre)
plone.app.layout.viewlets.interfaces.IContentViews (interfaz)
Ponga una versión de contentviews.pt en [su paquete de tema]/browser/templates)
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IContentViews"
template="templates/[su nombre de plantilla].pt"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.contentviews" skinname="[su nombre del skin]">
<viewlet name="plone.contentviews" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.contentviews" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Proporciona la pantalla desplegable y otras acciones en el modo de edición. Hay tres componentes de acciones de contenido, registrados para diferentes interfaces de vista (igual que diferentes conjuntos de acciones son necesarios en diferentes contextos).
- Nombre:
- plone.contentactions
- Tipo:
- viewlet
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.contentviews (nombre)
plone.app.layout.viewlets.interfaces.IContentViews (interfaz)
Ponga una versión de contentactions_blank.pt & contentactions.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import ContentActionsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](ContentActionsViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IContentViews"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.contentviews" skinname="[su nombre del skin]">
<viewlet name="plone.contentactions" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.contentviews" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Proporciona un conjunto de marcadores en la página actual.
Nota
Activado por elemento de contenido en Edición > Configuración.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.abovecontentbody (nombre)
plone.app.layout.viewlets.interfaces.IAboveContentBody (interfaz)
Ponga una versión de toc.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.common import TableOfContentsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](TableOfContentsViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IAboveContentBody"
class=".[su modulo].[su nombre de clase]"
for="Products.ATContentTypes.interface.IATDocument"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.abovecontentbody" skinname="[su nombre del skin]">
<viewlet name="plone.tableofcontents" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.abovecontentbody" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Proporciona un enlace a una vista de presentación de un documento.
Nota
Disponible sólo para documentos El enlace de vista de presentación puede ser activado o desactivado
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.abovecontentbody (nombre)
plone.app.layout.viewlets.interfaces.IAboveContentBody (interfaz)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.presentation import PresentationViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](PresentationViewlet):
[su código aquí]
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IAboveContentBody"
class=".[su modulo].[su nombre de clase]"
for="Products.ATContentTypes.interface.IATDocument"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.abovecontentbody" skinname="[su nombre del skin]">
<viewlet name="plone.presentation" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.abovecontentbody" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Las categorías (conocidas también como palabras clave / etiquetas / rótulos) que han sido asignadas al elemento.
Nota
Esto sólo aparecerá si algunas categorías han sido asignadas mediante Edición ‣ Categorías .
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.belowcontenttitle (nombre)
plone.app.layout.viewlets.interfaces.IBelowContentTitle (interfaz)
Ponga una versión de keywords.pt en [su paquete de tema]/browser/templates)
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentTitle"
template="templates/[su nombre de plantilla].pt"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.belowcontenttitle" skinname="[su nombre del skin]">
<viewlet name="plone.belowcontenttitle.keywords" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.belowcontenttitle" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
La información “acerca de” (quien ha creado el elemento de contenido y cuando fue la última vez que modificá).
Nota
Puede desactivar la línea de fondo para visitantes anónimos.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.belowcontenttitle (nombre)
plone.app.layout.viewlets.interfaces.IBelowContentTitle (interfaz)
Ponga una versión de document_byline.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.content import DocumentBylineViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](DocumentBylineViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentTitle"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.belowcontenttitle" skinname="[su nombre del skin]">
<viewlet
name="plone.belowcontenttitle.documentbyline" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.belowcontenttitle" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Indica que el elemento de contenido está bloqueado para su edición.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.abovecontent (nombre)
plone.app.layout.viewlets.interfaces.IAboveContent (interfaz)
Ponga una versión de info.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.locking.browser.info import LockInfoViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](LockInfoViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IAboveContent"
class=".[su modulo].[su nombre de clase]"
for="plone.locking.interfaces.ITTWLockable"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.abovecontent" skinname="[su nombre del skin]">
<viewlet name="plone.lockinfo" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.abovecontent" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Un resumen de las transiciones de flujo de trabajo en el elemento actual de contenido.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.belowcontentbody (nombre)
plone.app.layout.viewlets.interfaces.IBelowContentBody (interfaz)
Ponga una versión de review_history.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.content import WorkflowHistoryViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](WorkflowHistoryViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentBody"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.belowcontentbody" skinname="[su nombre del skin]">
<viewlet
name="plone.belowcontentbody.workflowhistory" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.belowcontentbody" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Un resumen de las transiciones de flujo de trabajo e historia de versionado en el elemento actual de contenido (esto remplaza el flujo de trabajo en Plone 3.3).
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.belowcontentbody (nombre)
plone.app.layout.viewlets.interfaces.IBelowContentBody (interfaz)
Ponga una versión de review_history.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.content import ContentHistoryViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](ContentHistoryViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentBody"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.belowcontentbody" skinname="[su nombre del skin]">
<viewlet name="plone.belowcontentbody.contenthistory"
/>
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.belowcontentbody" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Los enlaces para impresión y RSS
Nota
Puede cambiar el orden, añadir o eliminar acciones individuales del documento
Para más información:http://plone.org/documentation/kb/where-is-what/document-actions
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.belowcontentbody (nombre)
plone.app.layout.viewlets.interfaces.IBelowContentBody (interfaz)
Ponga una versión de document_actions.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.content import DocumentActionsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](DocumentActionsViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentBody"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.belowcontentbody" skinname="[su nombre del skin]">
<viewlet
name="plone.abovecontenttitle.documentactions" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.belowcontentbody" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object> '
Los elementos relacionados al contenido
Nota
Este viewlet muestra enlaces a los elementos de contenido adicionales seleccionados por el editor bajo la pestaña de categorización.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.belowcontentbody (nombre)
plone.app.layout.viewlets.interfaces.IBelowContentBody (interfaz)
Ponga una versión dedocument_relateditems.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.content import ContentRelatedItems
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](ContentRelatedItems):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IBelowContentBody"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.belowcontentbody" skinname="[su nombre del skin]">
<viewlet name="plone.belowcontentbody.relateditems"
/>
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.belowcontentbody" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object> '
Proporciona una interfaz de comentarios.
Nota
Los comentarios pueden ser activados o desactivados
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.belowcontent (nombre)
plone.app.layout.viewlets.interfaces.IBelowContent (interfaz)
Ponga una versión de comments.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.viewlets.comments import CommentsViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](CommentsViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IBelowContent"
class=".[su modulo].[su nombre de clase]"
for="Products.CMFCore.interfaces.IContentish"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.belowcontent" skinname="[su nombre del skin]">
<viewlet name="plone.comments" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.belowcontent" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Proporciona la funcionalidad anterior/siguiente para una carpeta.
Nota
Active esto es una carpeta mediante Editar > Configuraciones.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.belowcontent (nombre)
plone.app.layout.viewlets.interfaces.IBelowContent (interfaz)
Ponga una versión de nextprevious.pt en [su paquete de tema]/browser/templates)
Cree su propia versión de la clase en [su paquete de tema]/browser/[su modulo].py
from plone.app.layout.nextprevious.view import NextPreviousViewlet
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class [su nombre de clase](NextPreviousViewlet):
render = ViewPageTemplateFile("[su nombre de plantilla]")
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IBelowContent"
class=".[su modulo].[su nombre de clase]"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.belowcontent" skinname="[su nombre del skin]">
<viewlet name="plone.nextprevious" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.belowcontent" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Contiene la información sobre los derechos de autor.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portalfooter (nombre)
plone.app.layout.viewlets.interfaces.IPortalFooter (interfaz)
Ponga una versión de footer.pt en [su paquete de tema]/browser/templates)
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalFooter"
template="templates/[su nombre de plantilla].pt"
for="*"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portalfooter" skinname="[su nombre del skin]">
<viewlet name="plone.footer" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portalfooter" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
Contiene enlaces a plone.org, etc.
Los siguientes detalles le ayudarán a localizar los archivos que usted tendrá que copiar en su propio producto. También le ayudarán a proporcionar la información correcta para crear sus propias directivas ZCML, clases Python, y interfaces. Vea Viewlet para más información.
plone.portalfooter (nombre)
plone.app.layout.viewlets.interfaces.IPortalFooter (interfaz)
Ponga una versión de colophon.pt en [su paquete de tema]/browser/templates)
Conecte su viewlet [su paquete de tema]/browser/configure.zcml
<browser:viewlet
name="[su nombre de espacio].[su nombre de viewlet]"
manager="plone.app.layout.viewlets.interfaces.IPortalFooter"
template="templates/[su nombre de plantilla].pt"
for="*"
layer=".interfaces.[su interfaz especifica del tema]"
permission="zope2.View"
/>
En [su paquete de tema]/profiles/default/viewlets.xml
Oculte el viewlet original (si lo desea)
<object>
<hidden manager="plone.portalfooter" skinname="[su nombre del skin]">
<viewlet name="plone.colophon" />
</hidden>
Inserte su nuevo viewlet en un administrador de viewlet
<order manager="plone.portalfooter" skinname="[su nombre del skin]"
based-on="Plone Default">
<viewlet name="[su nombre de espacio].[su nombre de viewlet]"
insert-before="*" />
</order>
</object>
El código fuente de este archivo esta hospedado en GitHub. Todos pueden actualizar y corregir errores en este documento con unos clic - sin necesidad de descargar.
Para mas información básica acerca de como actualizar este manual y referencia a sintaxis Sphinx, por favor consulte la guía Escribiendo y actualizando el manual.