Criando a pagina de apresentação do portal
- Criando o Page Template
Neste primeiro passo vamos criar a página index do nosso portal, para isso acesse a raiz do seu plone site via ZMI.
Adicione um Page Template como o id igua a "index_html"
Agora quando você acessar o seu plone site esta página será invocada.
Mais ainda ela não faz referência a nada dinamico e nem esta invocando macro
do plone, para isto digite este código no seu Page Template (index_html):<html metal:use-macro="here/main_template/macros/master">
Observação: Estou usando a macro content em vez da macro main, para ganhar mais espaço na página inicial, pois a macro main possui mais margem do que a macro content.
<div metal:fill-slot="content" style="padding:1em;">
Minha Inicial
</div>
</html> - Criando os Portlets
Neste passo vamos criar Portles para buscar os últimos eventos, notícias e documentos publicados. Para criar os portlet vá até a ZMI da sua instancia e adicione um page_template para :
Portlet eventos
id: portlet_eventos
descrição: Porltet que ira listar os 5 últimos eventos publicados no portal;<html xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">
<body>
<div metal:define-macro="portlet"
tal:define="results python:here.portal_catalog.searchResults(portal_type='Event',
sort_on = 'Date',
sort_order='reverse',
review_state='published')[:5];">
<dl id="portlet-eventos">
<dt class="portletHeader">
<span><a>Últimos eventos</a></span>
</dt>
<tal:links tal:repeat="obj results">
<dd tal:define="oddrow repeat/obj/odd"
tal:attributes="class python:test('portletItem')">
<a href=""
class="tile"
tal:attributes="href obj/getURL;
title obj/Description">
<tal:block replace="structure here/event_icon.gif"/>
<span tal:replace="obj/pretty_title_or_id">
titulo_ou_id
</span>
</a>
</dd>
</tal:links>
<dd class="portletFooter">
<a href="/events">Ver todos os eventos...</a>
</dd>
</dl>
</div>
</body>
</html>
Portlet Links
id: portlet_links
descrição: Porltet que ira listar os 5 últimos links publicados no portal;<html xmlns:tal="http://xml.zope.org/namespaces/tal"
Obs: Na raiz do seu plone site, crie uma "pasta esperta" fazendo filtro pelo tipo "Link" com o id links.
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">
<body>
<div metal:define-macro="portlet"
tal:define="results python:here.portal_catalog.searchResults(portal_type='Link',
sort_on = 'Date',
sort_order='reverse',
review_state='published')[:5];">
<dl id="portlet-link">
<dt class="portletHeader">
<span><a>Últimos links</a></span>
</dt>
<tal:links tal:repeat="obj results">
<dd tal:define="oddrow repeat/obj/odd"
tal:attributes="class python:test('portletItem')">
<a href=""
class="tile"
tal:attributes="href obj/getURL;
title obj/Description">
<tal:block replace="structure here/linkOpaque.gif"/>
<span tal:replace="obj/pretty_title_or_id">
titulo_ou_id
</span>
</a>
</dd>
</tal:links>
<dd class="portletFooter">
<a href="/links">Ver todos os links...</a>
</dd>
</dl>
</div>
</body>
</html>
Porltet documentos
id: portlet_documentos
descrição: Porltet que ira listar os 5 últimos documentos publicados no portal;<html xmlns:tal="http://xml.zope.org/namespaces/tal"
Obs: Na raiz do seu plone site, crie uma "pasta esperta" fazendo filtro pelo tipo "Documento" com o id documents.
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">
<body>
<div metal:define-macro="portlet"
tal:define="results python:here.portal_catalog.searchResults(portal_type='Document',
sort_on = 'Date',
sort_order='reverse',
review_state='published')[:5];">
<dl id="portlet-documentos">
<dt class="portletHeader">
<span><a>Últimos documentos</a></span>
</dt>
<tal:links tal:repeat="obj results">
<dd tal:define="oddrow repeat/obj/odd"
tal:attributes="class python:test('portletItem')">
<a href=""
class="tile"
tal:attributes="href obj/getURL;
title obj/Description">
<tal:block replace="structure here/document_icon.gif"/>
<span tal:replace="obj/pretty_title_or_id">
titulo_ou_id
</span>
</a>
</dd>
</tal:links>
<dd class="portletFooter">
<a href="/documents">Ver todos os documentos...</a>
</dd>
</dl>
</div>
</body>
</html>
Porltet notícias
id: portlet_noticias
descrição: Porltet que ira listar as 5 últimas noticias publicados no portal;<html xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
i18n:domain="plone">
<body>
<div metal:define-macro="portlet"
tal:define="results python:here.portal_catalog.searchResults(portal_type='News Item',
sort_on = 'Date',
sort_order='reverse',
review_state='published')[:5];">
<dl id="portlet-noticias">
<dt class="portletHeader">
<span><a>Últimas notícias</a></span>
</dt>
<tal:links tal:repeat="obj results">
<dd tal:define="oddrow repeat/obj/odd"
tal:attributes="class python:test('portletItem')">
<a href=""
class="tile"
tal:attributes="href obj/getURL;
title obj/Description">
<tal:block replace="structure here/document_icon.gif"/>
<span tal:replace="obj/pretty_title_or_id">
titulo_ou_id
</span>
</a>
</dd>
</tal:links>
<dd class="portletFooter">
<a href="/news">Ver todos as notícias...</a>
</dd>
</dl>
</div>
</body>
</html> - Referenciando os Portlets no seu Page Template
Neste passo vamos invocar os nossos Portles na página inicial do portal. Para isso, acesse a Zmi e edit o page_template "index_html" que você criou na raiz do seu plone site.<html metal:use-macro="here/main_template/macros/master">
<div metal:fill-slot="content" style="padding:1em;">
<div metal:use-macro="here/portlet_noticias/macros/portlet">
portlet inicial - noticias
</div>
<div metal:use-macro="here/portlet_eventos/macros/portlet">
portlet inicial - eventos
</div>
<div metal:use-macro="here/portlet_documentos/macros/portlet">
portlet inicial - documentos
</div>
<div metal:use-macro="here/portlet_links/macros/portlet">
portlet inicial - links
</div>
</div>
</html> - Criando o estilo dos porltets
Agora já podemos visualizar a nossa página inicial, acesse o seu plone site (Exemplo: http://localhost:8080/meu_site). Crie algumas notícias, eventos, páginas e links e publique cada item para que ele possa ser listado na página inicial, mais os seus portlets ainda não tem tamanho posição definidas na inicial, customize o ploneCustom.css como o seguinte código:/* <dtml-with base_properties> (do not remove this :) */
Se ocorreu tudo bem até o momento você terá uma visão parecida com essa:
/* <dtml-call "REQUEST.set('portal_url', portal_url())"> (not this either :) */
#portlet-documentos,
#portlet-link,
#portlet-eventos,
#portlet-noticias{
width:45%;
padding:1em;
}
#portlet-link,
#portlet-noticias{
float:left;
}
#portlet-eventos,
#portlet-documentos{
float:right;
}
/* </dtml-with> */
Agora ficou simples modificar a sua página inicial, basta adequar o código ao que você deseja...
Plone
2.5.5