Este es tutorial trata de explicar como crear un Plone Theme product para Plone 3 usando las plantillas de ZopeSkel y explica como generar un programa típico Hola Mundo para Plone como una view llamado hello como una vista de aplicación.
Puedes instalar ZopeSkel usando pip (es recomendable hacerlo dentro de un entorno virtual):
$ pip install 'ZopeSkel==2.21.2'
Debe crear una configuración zc.buildout para una instancia de Zope para Plone 3 usando el comando paster, ejecutando los siguientes comando:
$ paster create --template plone3_buildout plone3.buildout
$ cd plone3.buildout
$ python bootstrap.py
$ ./bin/buildout -vN
Más opciones con el siguiente comando:
$ paster create --list-template
Cree un Plone Theme en su carpeta src/ dentro de su proyecto plone 3 llamado plone3.buildout, con los siguientes comando:
$ cd src
$ paster create --template plone3_theme collective.mydemoapp
Acceder a la carpeta browser/ de su paquete collective.mydemoapp y cree un archivo Python con el nombre hello.py
$ cd collective.mydemoapp/collective/mydemoapp/
$ vim ./browser/hello.py
Más opciones con el siguiente comando:
$ paster addcontent --list-all
Edite su Vista controladora en el archivo hello.py de la siguiente forma:
from Products.Five import BrowserView
class HelloWorld(BrowserView):
"""
Hello word browser view, as simple string
"""
def __init__(self, context, request):
self.context = context
self.request = request
def __call__(self):
return "hello word"
Edite su configuración ZCML en el configure.zcml de la siguiente forma:
<browser:page
name="hello"
for="*"
class=".hello.HelloWorld"
permission="zope2.Public"
/>
Edite su configuración Buildout en el buildout.cfg de la siguiente forma:
[buildout]
...
eggs =
...
collective.mydemoapp
...
...
zcml =
...
collective.mydemoapp
...
...
develop =
...
src/collective.mydemoapp
...
Reconstruye la instancia de Zope y Plone 3, ejecutando el siguiente comando:
$ ./bin/buildout -vN
Iniciar instancia Zope
./bin/instance fg
Acceda a su sitio Plone Configuración del sitio ‣ Complementos ‣ Custom Theme ‣ Activar
Para finalizar acceda por su navegador a la siguiente dirección: http://localhost:8080/Plone/hello
Y de esta forma ya tiene generado una vista generada desde Python y otra vista generada de Python y incrustada en la diagramación de Plone generado con los localcommand de la plantilla plone3_theme del paquete ZopeSkel.
Accede al archivo de la clase Python viewlet browser/viewlets.py generado en este paquete y quiete el comentario la pieza de código disponible allí (clase de Python viewlet).
from plone.app.layout.viewlets.common import ViewletBase
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class MyHelloWorldViewlet(ViewletBase):
render = ViewPageTemplateFile('myhelloworldviewlet.pt')
def update(self):
self.computed_value = 'Hello world'
self.company = 'Plone Fundation'
Renombra el archivo plantilla viewlet ubicado en browser/viewlet.pt a browser/myviewlet.pt y si es necesario edite el código Python acorde a la plantilla viewlet.
<div align="center">
<span tal:content="view/computed_value|nothing" />,
<b tal:content="view/company|nothing" />
</div>
Edite la clase y la plantilla asegurándose que cumpla lo que necesita.
Asegúrese que su viewlet este correctamente registrado en el browser/configure.zcml.
<browser:viewlet
name="collective.mydemoapp.helloworld""
manager="plone.app.layout.viewlets.interfaces.IPortalFooter"
class=".viewlets.MyHelloWorldViewlet"
layer=".interfaces.IThemeSpecific"
permission="zope2.View"
/>
Si usted necesito que aparezca en un orden especifico dentro de un viewlet manager, entonces edite profiles/default/viewlets.xml acordemente.
Reinicie su instancia Zope, ejecutando el siguiente comando:
$ ./bin/buildout -vN
Si usted edito algún archivo en la carpeta profiles/default/, debe reiniciar su paquete.
Una ves que este feliz con su implementación viewlet, remueva cualquier documentación relacionada en su clase y plantilla viewlet.
Para descargar el código fuente de este ejemplo ejecute el siguiente comando:
$ git clone https://github.com/macagua/collective.mydemoapp.git collective.mydemoapp
Este ejemplo ofrece un acercamiento a crear productos Plone desde una Views y un Viewlets dentro de un manager viewlet.
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.