[zope-pt] Re: Definindo um page template a um diretório

2008-06-17 Por tôpico André Domarques
Então galera, graças a valiosa ajuda do Rodrigo e conforme prometi,
vou passar aqui como consegui resolver este problema:

Antes de iniciar, alerto que utilizei um Set Access Rule para poder
utilizar um skin para front-end e outro para back-end, que pode ser
conferido na seguinte URL:  

http://plone.org/documentation/how-to/select-skin-by-url

A minha estrutura ficou semelhante a esta:

{root_folder}/portal{folder}/site{plone_site com portal-skin}
e
{root_folder}/portal{folder}/admin{acess_rule que muda a skin para
portal-skin-admin}

1) Criei as duas skins que precisava usando o DIYPloneStyle através do
comando:
front-end:
# python generator.py -p portal-skin 

back-end:
# python generator.py -p portal-skin-admin 

* no diretório Products/DIYPloneStyle/bin (ele vai gerar os produtos
em {caminho_do_plone}/Products/{nome_da_skin}.

* Instale as skins e restarte o zope.

* confira a pilha de diretórios através da aba "Properties" da
ferramenta portal_skins. Caso você tenha instalado algum produto
anterior a instalação destas skins, a pilha de tais skins poderão não
vir a conter as camadas de produtos instalados anteriormente e
possivelmente apresentar erros no portal. 

2) Customizei a skin do front-end conforme as especificações do
projeto e fiz leves customizações na skin do back-end.

3) Para as seções que no front-end eram totalmente customizadas, eu
tive que criar Page Templates específicos para tais seções e atribuir
essas Page Templates como "Exibição" em "folder", "document" e "Plone
Site" que no meu caso eram necessárias modificar completamente o page
template respectivo.

3.1) Isso você pode fazer através da ferramenta portal_types
Ex.: /portal/site/portal_types/Document (página) e em "Available view
methods" adicione a exibição (ZPT) que deseja estar disponível para
aquele objeto de conteúdo selecionado, que em um de meus casos, se
chamava videos (não coloque o .PT), onde deverá existir o page
template videos.pt no diretório portal-skin_templates (de seu produto
skin gerado pelo DIYPloneStyle).

3.2 Você também pode definir visões através dos arquivos XML que estão
localizados no diretório portal-skin/profile/types, conforme o exemplo
a seguir:
Arquivo: Document.xml (deve-se criar os arquivos que terão as visões):

 






- Salve o arquivo e restarte o Zope.

Assim você poderá definir page templates customizados para páginas,
diretórios e quaisquer outros objetos de conteúdo disponíveis no Plone.

E para finalizar, como fazer para que os Page templates customizados
do Front-End não alterem no Back-end? Simples, basta criar os mesmos
page templates respectivos que foram criados no Front-End, e seu
conteúdo deve chamar o main-template.pt ou possuir um conteúdo
customizado diferente do front-end. 

Mais uma vez, obrigado Rodrigo! Através desta solução pude pensar em
outras formas de resolver outros problemas que vinha enfrentado aqui.
Espero que isto possa ajudar a outras pessoas.



Re: [zope-pt] Re: Definindo um page template a um diretório

2008-06-12 Por tôpico Rodrigo Castardo
2008/6/11 André Domarques <[EMAIL PROTECTED]>:
> Opa Rodrigo,
>
> primeiramente, obrigado pela resposta!

Por nada, depois escreve sobre isso em algum lugar e manda aqui pro
povo mais webdesigner da lista ;)

> Concordo contigo que customizar o visual do plone via ZMI é um caos a
> parte :(, especialmente deste projeto que estou trabalhando.

Uma vez um gestor de projeto falou o seguinte: "A dor purifica!" ...
se servir de consolo =D

> Nesta solução em particular, em ambos os temas eu utilizo o
> DIYPloneStyle, como em todos os meus projetos. O tutorial que você se
> refere no plone.org é o do DIYPloneStyle? Porque eu praticamente já ví
> tudo sobre temas na documentação oficial do Plone, rsrsrsrs.

Boa zero meia =D

> Eu fiquei curioso na solução que você propôs a seguir, mas confesso
> que ainda não visualizei como implementá-la:

Steps:
1- Tema1 (com template zope_pt.pt)
2- Tema2 (com template zope_pt.pt)
3- Em uma pasta vc vai no menu exibição e pode escolher um template
correto? Este menu monta a seguinte URL (no caso de visão sumária):

  selectViewTemplate?templateid=folder_summary_view

vc pode usar isto pra setar o zope_pt ao invés do folder_summary_view
(esqueça o uso de index_html, acabamos de exterminar alguns de uns 3
projeto, são pessimos!). Ex.:

  selectViewTemplate?templateid=zope_pt

E em casa tema o zope_pt deve existir, se no tema principal ele nao
tem personalizacao alguma , otimo, uma linha chamando o main_template
resolve ;)

Vc tbm pode fazer isso programaticamente usando o setLayout(), na
instalação do produto por exemplo.

E ainda tem uma maneira de colocar mais opções ali naquele menu, para
que o próprio usuário faça esta escolha. Mais estou correndo aqui em
pleno valentines day, e não vou poder pesquisar isto.

>> Com vários temas, você pode usar o recurso de setar um tema através de
>> uma access rule (script python com "super poderes"). E neste caso, os
>> arquivos ficam completamente separados, vc tem independencia de temas
>> e consegue fazer com que um nao afete os outros, e vice-versa.
>>
>> Para setar o teu template para se tornar a exibicao padrao de uma
>> canal (contexto/pasta), vc pode user o setLayout, na instalacao do teu
>> produto/tema vc instancia o objeto portal
>> (portal_url.getPortalObject()) e dispara o metodo, ex.:
>>
>> portal.setLayout("pagina_inicial")
>>
>> onde, pagina_inicial eh o teu template, que em file system seria o
>> pagina_inicial.pt ...
>>
>
> Quanto a setar uma exibição padrão para uma pasta em particular, a uns
> tempos atrás eu tinha feito algo semelhante, mas será que isso não vai
> comprometer também a visão no outro template, no caso o do admin?

Então, o q da questão aqui é o seguinte, a tua escolha de template
(visão sumária por exemplo) fica gravada no objeto, e independente do
tema, quando encontrada a propriedade layout no objeto, o template
será procurado.

Solução, ter com o template nos 2 temas, um personalizando conforme
suas necessidades, e o outro, chamando o main_template normalmente,
sem preencher nenhum slot.

Melhor agora?

> Só para se ter idéia, tem uma parte do site que o bloco central de
> conteúdo (colunas laterais e área de conteúdo) é completamente
> substituida por um flash que ocupa todo o espaço. Outra parte do site,
> o layout interno é totalmente customizado.
>
> Com a tua dica acima, acho que resolve, contanto que as páginas só
> sejam modificadas com o template do front-end.
>
> Brigadão!

Nada!

> Ps.: Se eu conseguir implementar com a dica acima, eu posto aqui para
> que outras pessoas possam utilizá-la tbm.

Promessa eh dívida hein?

Abraços

> --- Em zope-pt@yahoogrupos.com.br, "Rodrigo Castardo"
> <[EMAIL PROTECTED]> escreveu
>>
>> André deixa eu sugerir uma solução ...
>>
>> Primeiro, não faça personalização de templates e afins via ZMI (custom
>> ou afins), use um tema para isto. No Plone.org tem um tutorial
>> passo-a-passo, que inclusive mandei na lista algum tempo atras (nao
>> posso procurar para vc agora), que vai tornar td mto facil.
>>
>> Dica: DIYPloneStyle
>>
>> Com vários temas, você pode usar o recurso de setar um tema através de
>> uma access rule (script python com "super poderes"). E neste caso, os
>> arquivos ficam completamente separados, vc tem independencia de temas
>> e consegue fazer com que um nao afete os outros, e vice-versa.
>>
>> Para setar o teu template para se tornar a exibicao padrao de uma
>> canal (contexto/pasta), vc pode user o setLayout, na instalacao do teu
>> produto/tema vc instancia o objeto portal
>> (portal_url.getPortalObject()) e dispara o metodo, ex.:
>>
>> portal.setLayout("pagina_inicial")
>>
>> onde, pagina_inicial eh o teu template, que em file system seria o
>> pagina_inicial.pt ...
>>
>> Se quiser fazer pela PMI, pode usar o menu exibicao e trocar o nome do
>> template que ele usa na url para o pagina_inicial por exemplo. Nao me
>> recordo agora, e de cabeca, como registrar seu template como uma opcao
>> ali ...
>>
>> Tem esta saida que te sugeri, cons

[zope-pt] Re: Definindo um page template a um diretório

2008-06-11 Por tôpico André Domarques
Opa Rodrigo, 

primeiramente, obrigado pela resposta!

Concordo contigo que customizar o visual do plone via ZMI é um caos a
parte :(, especialmente deste projeto que estou trabalhando.

Nesta solução em particular, em ambos os temas eu utilizo o
DIYPloneStyle, como em todos os meus projetos. O tutorial que você se
refere no plone.org é o do DIYPloneStyle? Porque eu praticamente já ví
tudo sobre temas na documentação oficial do Plone, rsrsrsrs.

Eu fiquei curioso na solução que você propôs a seguir, mas confesso
que ainda não visualizei como implementá-la:


> Com vários temas, você pode usar o recurso de setar um tema através de
> uma access rule (script python com "super poderes"). E neste caso, os
> arquivos ficam completamente separados, vc tem independencia de temas
> e consegue fazer com que um nao afete os outros, e vice-versa.
> 
> Para setar o teu template para se tornar a exibicao padrao de uma
> canal (contexto/pasta), vc pode user o setLayout, na instalacao do teu
> produto/tema vc instancia o objeto portal
> (portal_url.getPortalObject()) e dispara o metodo, ex.:
> 
> portal.setLayout("pagina_inicial")
> 
> onde, pagina_inicial eh o teu template, que em file system seria o
> pagina_inicial.pt ...
> 

Quanto a setar uma exibição padrão para uma pasta em particular, a uns
tempos atrás eu tinha feito algo semelhante, mas será que isso não vai
comprometer também a visão no outro template, no caso o do admin?

Só para se ter idéia, tem uma parte do site que o bloco central de
conteúdo (colunas laterais e área de conteúdo) é completamente
substituida por um flash que ocupa todo o espaço. Outra parte do site,
 o layout interno é totalmente customizado.

Com a tua dica acima, acho que resolve, contanto que as páginas só
sejam modificadas com o template do front-end.

Brigadão!

Ps.: Se eu conseguir implementar com a dica acima, eu posto aqui para
que outras pessoas possam utilizá-la tbm.


--- Em zope-pt@yahoogrupos.com.br, "Rodrigo Castardo"
<[EMAIL PROTECTED]> escreveu
>
> André deixa eu sugerir uma solução ...
> 
> Primeiro, não faça personalização de templates e afins via ZMI (custom
> ou afins), use um tema para isto. No Plone.org tem um tutorial
> passo-a-passo, que inclusive mandei na lista algum tempo atras (nao
> posso procurar para vc agora), que vai tornar td mto facil.
> 
> Dica: DIYPloneStyle
> 
> Com vários temas, você pode usar o recurso de setar um tema através de
> uma access rule (script python com "super poderes"). E neste caso, os
> arquivos ficam completamente separados, vc tem independencia de temas
> e consegue fazer com que um nao afete os outros, e vice-versa.
> 
> Para setar o teu template para se tornar a exibicao padrao de uma
> canal (contexto/pasta), vc pode user o setLayout, na instalacao do teu
> produto/tema vc instancia o objeto portal
> (portal_url.getPortalObject()) e dispara o metodo, ex.:
> 
> portal.setLayout("pagina_inicial")
> 
> onde, pagina_inicial eh o teu template, que em file system seria o
> pagina_inicial.pt ...
> 
> Se quiser fazer pela PMI, pode usar o menu exibicao e trocar o nome do
> template que ele usa na url para o pagina_inicial por exemplo. Nao me
> recordo agora, e de cabeca, como registrar seu template como uma opcao
> ali ...
> 
> Tem esta saida que te sugeri, considero ela a mais elegante para
este cenário.
> 
> Abraços
> 
> 
> 
> 2008/6/11 André Domarques <[EMAIL PROTECTED]>:
> > Olá pessoal!
> >
> > Estou necessitando definir algumas page templates como padrão em
> > diretórios específicos. Uso o plone 2.5 e estou trabalhando num site
> > altamente complexo quanto ao seu layout e estou tendo dificuldades em
> > trabalhar algumas questões, que comento a seguir:
> >
> > Para piorar/melhorar a minha situação, estou utilizando a técnica de
> > definir skins específicos pela URL através do Zope (visto na
> > documentação oficial do plone). I.e. www.site.com.br/admin (skin de
> > back-end - admin) e www.site.com.br/ (skin do front-end -
customizado).
> >
> > Uma vez que a skin de "front-end" está bastante customizado (o que
> > inviabilizou a gerência do portal através deste skin), defini uma skin
> > para garantir a gerência do conteúdo através da skin padrão do plone.
> > O problema é que em alguns diretórios, eu tive que inserir um page
> > template (main_template) para que pudesse ter um layout interno
> > (contéudo) diferenciado. Com isso, o main_template modifica não
> > apenas o "front-end", mas também o back-end (skin default do plone) e
> > não permite o acesso a gerência dos objetos de conteúdo de tal
diretório.
> >
> > Alguns diretórios eu consegui mudar o visual através da própria tag de
> > modificação de classes (css) constante no  do main_template
> > (geral), mas isso não me satisfaz totalmente, uma vez que o site é
> > bastante complexo quanto a modificação da disposição dos elementos
> > visuais no portal, ou seja, em algumas partes do site, o template é
> > totalmente customizado, tanto no css quanto no xhtml.
> >
> > Ví numa