Em diversos casos precisamos completar nosso layout com mais de uma área dinâmica. Por exemplo, suponha uma situação em que nós precisamos ter as meta-tags diferentes para cada action executada. No nosso caso, nós teremos as meta-tags padrões e estaremos fazendo um override delas no template. A intenção é termos as meta-tags de description e keywords (nesse exemplo) dinâmicas. Sendo assim, cada página terá as keywords e descriptions respectivas. Isso é fundamental para motores de busca, SEO, etc..
Para essa solução, utilizaremos o slot. Basicamente, slot é um lugar que você estará reservando para um conteúdo específico. Esse lugar pode ser definido no layout, template ou até em um partial. Está muito abstrato ainda, não é? Vou mostrar um exemplo.
Podemos ter por exemplo no apps/APLICACAO/templates/layout.php algo assim:
<html>
<head>
<?php if (has_slot(‘http_metas’)): ?>
<?php include_slot(‘http_metas’) ?>
<?php endif: ?>
</head>
Dentro de um template, apps/APLICACAO/modules/faleconosco/indexSuccess.php poderíamos ter um código como esse:
<?php slot(‘http_metas’) ?>
<meta name="title" content="Fale conosco" />
<meta name="description" content="Entre em contato conosco pelo formulário abaixo ou fale direto conosco pelo telefone xxxxx" />
<meta name="keywords" content="contato, telefone, etc, etc" />
<?php end_slot() ?>
Ou seja, quando o usuário acessar a action index do módulo faleconosco, as meta-tags dele serão essas citadas acima. É claro que esse é um exemplo muito simples.
Isso pode ficar mais interessante pegando palavras-chave de um banco de dados, ou a descrição de um produto, artigo, etc.. É bom lembrar que a meta-tag de description tem um ideal de caracteres. Se não me engano é algo em torno de 200~300. Corrijam se estiver errado.
Vale a pena lembrar que para setar os meta-tags não é obrigatório utilizar os slots. Eles podem ser setados direto na action apps/APLICACAO/modules/faleconosco/actions/actions.class.php:
$this->getResponse()->setTitle(‘My Title’);
$this->getResponse()->addMeta(‘description’,‘My Description’);
$this->getResponse()->addMeta(‘keywords’,‘My Keywords’);
Esse foi só um exemplo da utilização dos slots. Eles possuem diversas outras utilidades para dinamizar conteúdos.

Patrick Espake | 26-Aug-08 at 8:43 am | Permalink
Parabéns,
O blog está muito legal e com muito conteúdo interessante.
Abraço.