underpop

http://underpop.online.fr 2005-10-22  

guia rápido do xoops para intermediarios

Guia Rápido do XOOPS para Intermediarios

Esse trabalho é uma coletânea do guia que fiz para meu uso próprio quando estava aprendo XOOPS e agora estou disponibilizando para todos.

O considero indispensável para quem quer ganhar agilidade no trabalho com xoops.



Descrição:

Mesmo quando já temos alguma intimidade com o XOOPS é normal pararmos e pensar: "Como mesmo que insere imagens nesse treco?” “O que significa isso aqui que esta no arquivo .css?” e por aí vaí.

O objetivo desse guia é possibilitar rapidez e facilidades nessas circunstâncias.

Os tópicos abordados são:
- Os aquivos no Xoops
- Tags Xoops
- Chamadas XOOPS
- Antes do Body
- CSS Background
- CSS Border
- CSS Fonte
- CSS Pading
- Dicas Personalização Xoops

clique para baixar

César Felipe
8-)


Marcadores:



2005-10-21  

Latinoware Mercosul 2005

Latinoware Mercosul 2005

A Latinoware Mercosul é um dos esforços para unificar o desenvolvimento e a ampliação do uso do Software Livre na região. O caráter cooperativo do software livre é um item importante da pretendida integração cultural, econômica e tecnológica dos países em desenvolvimento. Por isso a Latinoware é uma oportunidade estratégica única para o Mercosul. Além de promover o software livre nos respectivos países, a Latinoware Mercosul terá um forte empenho na qualificação de desenvolvedores e usuários, e estará aberta ao encontro das comunidades de desenvolvedores e usuários. A Latinoware nasceu em 2003, da Conferência Internacional de Software Livre, em Curitiba, e teve sua primeira versão em 2004, em Foz do Iguaçu.

LATINOWARE MERCOSUL - 26 e 27 de novembro de 2005 - Curitiba - Paraná - Brasil

Vamos promover tambem o 1º Encontro da Comunidade XOOPS Paraná / XOOPS BR

Em breve maiores informações sobre as inscrições e programação do evento




Marcadores:



2005-10-17  

Modelos Smarty e PHP

Smarty e PHP, tudo a ver

Quando se descobre o Smarty, é quase inviável viver sem ele. Neste artigo, mostro o seu funcionamento e exemplos do uso de métodos. Você notará um ganho de produtividade geral no desenvolvimento de aplicações.

O que é Smarty?

O Smarty é uma classe de templates. Funciona de uma forma que separe interface da lógica de programação e tem por objetivo, facilitar e melhorar o desenvolvimento de qualquer aplicação em PHP.

Por ser muito difundido no mundo inteiro, e estar ligado ao site oficial do PHP, o Smarty tem uma comunidade grande de desenvolvedores. Isso ajuda no suporte e discussão de melhorias.

A sua última versão (até a escrita deste artigo) é a 2.6.11 (changelog), lançada em Dezembro de 2005.

Principais funcionalidades

Além das funcionalidades que comentei no post anterior (Como desenvolvedor melhor na Web), listo outras:

  • Melhor desempenho de execução.
  • Acaba com overhead de template, pois compila apenas uma vez.
  • Você pode criar suas próprias funções, é extensível.
  • Você configura a sintaxe da tag de delimitação do template. Assim pode-se usar {}, {{}}, <!--{}-->, etc.
  • Uso de funções condicionais de forma simplificada dentro dos templates.
  • Sem limitação para loops, ifs, etc.
  • Modo de cache embutido.
  • Arquitetura de plugins.

Instalação

[update] Faça o download do Smarty. Descomprima todas as pastas. Verifique uma pasta "demo", é uma demonstração do funcionamento dele. Coloque a pasta "libs" dentro do "demo". No final você vai ter uma organização de diretórios, igual descrita abaixo. Não esqueça de dar permissão ao diretório "templates_c".

Organização dos arquivos

A árvore padrão de diretório do Smarty está organizada da seguinte maneira:

  • / - Na raiz estarão os arquivos de lógica (.php).
  • /configs - Arquivos de configuração. É possível setar por exemplo, um título padrão para todo seu sistema, e utilizá-lo nos arquivos de template.
  • /libs - Bibliotecas do Smarty, onde também fica localizada a classe principal.
  • /templates - Diretório padrão para localização dos templates. São arquivos de interface com o usuário.
  • /templates_c - Diretório para cache. Deve estar com permissão de escrita.

Esta arquitetura pode ser alterada pelo usuário, lembrando que, depois de alterado os nomes, você deverá modificar algumas linhas do Smarty.class.php (classe principal):

Smarty.class.php:

 var $template_dir = 'templates';
var $compile_dir = 'templates_c';
var $config_dir = 'configs';

Mãos à obra

Programar usando Smarty é ainda mais simples. Todo arquivo PHP deve apontar pra um template. O acesso a banco de dados, críticas mais complexas, e outras lógicas ficam no arquivo PHP (como antes). O que muda aqui é a simplicidade da sintaxe dos templates, facilitando mudanças no futuro pelo Designer ou Programador: cada um altera seu arquivo.

Como o tópico sugere, vou direto ao assunto. Vejam um exemplo muito simples do uso dos templates no Smarty.

index.php:

 <?php
/**
* Define a pasta onde está o Smarty
* esta constante pode ficar em arquivo separado por exemplo
*/

define('PATH_SMARTY', '/path/to/smarty');

/**
* Inclui classe principal do Smarty
*/

require PATH_SMARTY.'/Smarty.class.php';

/**
* Instancia Smarty e seta propriedades
*
* compile_check = avisa ao Smarty para mostrar erros de compilação
* debugging = em fase de desenvolvimento é bom deixar como true,
* uma vez que abre um popup com todas as informações da página gerada
*/

$smarty = new Smarty;
$smarty->compile_check = true;
$smarty->debugging = false;

/**
* Assign é um metodo do Smarty para criar uma
* nova variavel que será usada no Template
*
* sintaxe: assign->('nome_variavel', 'valor');
*/

$smarty->assign('nome', 'Ciro');
$smarty->assign('sobrenome', 'Feitosa');

/**
* Mostra o Template na tela
* observe que até aqui nada foi exibido, só processado
*/

$smarty->display('index.tpl');

?>

index.tpl:

 {config_load file=test.conf}

<html>
<body>
{$nome} {$sobrenome}
</body>
</html>

Ao rodar o index.php pela primeira vez, automaticamente o Smarty criará um cache do conteúdo gerado no diretório /templates_c.

Neste exemplo simplérrimo, deu pra perceber quão simples é a sintaxe utilizada pelo Smarty não é?! Apresentarei agora, métodos que deverão ser usados nos arquivos de templates.

Variável reservada: $smarty

A variável reservada $smarty, traz opções de tratar as informações vindas pelo método GET, POST, ou por Cookies, Sessions, etc. Veja exemplos de chamadas:

 {* mostra o valor de page da URL (GET) http://www.domain.com/index.php?page=foo *}
{$smarty.get.page}

{* mostra a variável "page" de um formulário (POST) *}
{$smarty.post.page}

{* mostra o valor do cookie "username" *}
{$smarty.cookies.username}

{* mostra a variável do servidor "SERVER_NAME" *}
{$smarty.server.SERVER_NAME}

{* mostra a variável de ambiente do sistema "PATH" *}
{$smarty.env.PATH}

{* mostra a variável de session do php "id" *}
{$smarty.session.id}

{* mostra a variável "username" da união de get/post/cookies/server/env *}
{$smarty.request.username}

Assim, na chamada dos formulários você deve inserir no campo value: $smarty.post.nome_do_campo. Exemplo:

formulario.tpl:

 Nome: <input type="text" name="nome" value="{$smarty.post.nome}" /><br />
Estado: <select name="estado">{html_options options=$estados selected=$smarty.post.estado}</select>

Métodos que ajudam

A documentação do Smarty é excelente. Portanto, não tentarei reexplicar o que já existe, mas mostrar rapidamente funções úteis no dia-a-dia.

Para ajudar no entendimento, usarei formulários. Acredito que este seja o uso em que mais ajuda, quando você usa Smarty. Pressupõe que você já tenha incluído a classe do Smarty e instanciado (reveja o exemplo no tópico "Mãos à obra"). Não observem validações de código xHTML, pois não é a ideia central aqui.

Funções modificadoras de variável

São usadas, principalmente, para se modificar uma string. Funções do tipo capitalizar, contar caracteres, contar parágrafos, mudar para maiúsculas, indentar linhas, etc.

Veja um exemplo da função cat, que funciona concatenando 2 strings (veja todas as funções modificadoras de variável).

index.tpl:

 <html>
<body>
{$nome|cat:" é o dono deste Blog."}
</body>
</html>

Funções internas

São funções utilizadas internamente pelos templates. Laços (loops), condicionais (if, else), inclusões (includes). Veja a lista completa de funções internas.

As funções condicionais, assim como em qualquer linguagem, são utilizadas quando se tem uma condição. Imagine que você possui um sistema com login feito em sessão. Se o usuário tiver logado, mostra o nome dele, caso contrário, mostra "Visitante". Veja como fazer isso usando os templates do Smarty:

 {if $smarty.session.nome != ''}
{$smarty.session.nome}
{else}
Visitante
{/if}

Funções personalizadas

Foram criadas afim de se criar de forma automatizada, alguns trabalhos repetitivos. Em se tratando de formulários, é possível gerar checkboxes, menus drop-downs, radios, e menus drop-downs de data e hora, tudo isso podendo vir de um array estático ou dinâmico (preenchido via banco de dados, por exemplo).

Imagine que você tenha um array com os estados brasileiros (num arquivo .php) e deseja gerar um menu drop-down na tela. Use o método html_options. Além desta, existe dezenas de funções personalizadas.

formulario.php:

 $arrayEstados = array(
'AC' => 'Acre',
'AL' => 'Alagoas',
'AM' => 'Amazonas',
'AP' => 'Amapá',
'BA' => 'Bahia',
'CE' => 'Ceará',
'DF' => 'Distrito Federal',
'ES' => 'Espírito Santo',
'GO' => 'Goiás',
'MA' => 'Maranhão',
'MG' => 'Minas Gerais',
'MS' => 'Mato Grosso do Sul',
'MT' => 'Mato Grosso',
'PA' => 'Pará',
'PB' => 'Paraíba',
'PE' => 'Pernambuco',
'PI' => 'Piauí',
'PR' => 'Paraná',
'RJ' => 'Rio de Janeiro',
'RN' => 'Rio Grande do Norte',
'RO' => 'Rondônia',
'RR' => 'Roraima',
'RS' => 'Rio Grande do Sul',
'SC' => 'Santa Catarina',
'SE' => 'Sergipe',
'SP' => 'São Paulo',
'TO' => 'Tocantins'
);
$smarty->assign('estados',$arrayEstados);

$smarty->display('formulario.tpl');

formulario.tpl:

 <html>
<body>
<select name="estado">{html_options options=$estados}</select>
</body>
</html>

Conclusão

É notável o aumento da produtividade utilizando este sistema de templates. Além do mais, quando se trabalha em equipe, Designer e Programador com funções distintas, e neste caso, trabalhando juntos. Se o Designer quiser alterar um label de um campo do formulário, por exemplo, só precisará mexer no template.


Marcadores: