Rafael Caceres

humanizando o caos

Analista de Sistemas e Desenvolvedor Web da Talk Interactive. Tenta misturar agile com ux em seus projetos. É (quase) casado, músico experimental, malabarista de sinal, filosofo de buteco e empreendedor maluco.

Fiz uma tradução de uma parte do guia de temas da documentação do drupal. Segue abaixo.

A camada de temas é responsável por criar o HTML que o browser irá receber. Podem ser usadas varias abordagens, como o Smarty, PHPAL e PHPTemplate.
Existem várias maneiras de customizar a aparencia do seu site. A mais simples é usando CSS para sobrepor as classes e IDs nativos do Drupal. Mas é fácil de ir além e customizar o HTML. Um arquivo template Drupal consiste de HTML padrão e PHP. Adicionalmente, cada parte dinamica de uma página Drupal ( como uma box, lista ou breadcrumb ) pode ser sobrescrita simplesmente declarando a função com o nome apropriado.
Um tema é uma coleção de arquivos que definem a camada de apresentação. Podemos criar um ou mais “sub-temas” ou variações sobre um tema. Apenas o arquivo .info é obrigatório, mas a maioria dos temas e sub-temas também usarão outros arquivos. O diagrama abaixo ilustra os arquivos que são encontrados em um tipico tema e sub-tema.

.info (obrigatório)

Tudo que é necessário para o Drupal reconhecer seu tema é um arquivo .info. Metadados, folhas de estilo, JavaScript, block regions entre outras coisas podem ser definidas aqui. Todo o resto é opcional.  O nome interno do tema é derivado desse arquivo. Por exemplo, se o nome é “drop.info”, então o Drupal verá o nome do tema como “drop”. (Drupal 5 e anteriores usam o nome da pasta do tema).

Arquivos de template (.tpl.php)

Os templates são usados para a marcação xHTML e variáveis do PHP. Em alguns casos eles podem retornar outros tipos de dados (eg. xml, rss). Cada arquivo .tpl.php manipula a saida de um pedaço especifico de dados “temáveis”(themable), e em alguns casos isso pode manipular multiplos arquivos .tpl.php através de sugetões.(link para suggestions) Eles são opcionais, e se não existe nenhum em seu tema será usada a saída padrão. Evite ter logicas complexas nesses arquivos. Na maioria dos casos, pode ser diretamente tags xHTML e variaveis PHP. Um punhado desses templates existem em diretórios onde o core e contributed modules existem. Copiar eles para a pasta do seu tema força o Drupal ler sua versão.
Nota: O theme registry faz cache das informações sobre os dados do tema disponiveis. Você deve resetar-lo quando adicionar ou remover arquivos de template ou funções no seu tema.

Template.php

Para toda a logica condicional e processamento de dados de saida, existe o template.php. Ele não é obrigatório, mas para manter os arquivos .tpl.php limpos, podemos usá-lo mantendo preprocessors que geram variaveis antes delas serem fundidas com a marcação dentro dos arquivos .tpl.php. Funções customizadas, sobreescrevendo funções dos temas ou qualquer outra customização de saida pode ser feita aqui. Esse arquivo deve começar com a tag “<?php” de abertura do PHP, mas a tag de fechamento não é necessária e é recomendado que ela seja omitida.

Sub-temas

Vendo por cima, sub-temas se comportam como qualquer outro tema. A unica diferença é que eles herdam os recursos dos seus temas pai. Para criar um, é necessário usar uma entrada de “base theme” no seu .info. Isso fará ele herdar os recursos do tema pai. Podem haver multiplos níveis de herança; e.g, um sub-tema pode declarar outro sub-tema como sua base. Não há muito limite pra isso.

(O Drupal 5 e inferiores exigtem que os sub-temas sejam subdiretorios no tema pai. Não é mais o caso.)

Design Patterns e PHP

April 22nd, 2009

Esses dias terminei de ler meu primeiro livro de Design Patterns e fiquei impressionado como minha compreensão de Orientação a Objetos ficou muito mais clara. No livro fala-se bastante em esquecer um pouco a herança e tentar novas alternativas para conseguir um baixo acoplamento e alta coesão, que encapsulamento não é apenas de dados, e que normalmente temos que combinar vários padrões para conseguir adapta-los para nossos problemas

O motivo que me fez escrever esse post é que ontem teve uma palestra de Design Patterns aqui na Knowtec, com o nosso colega Alexandre Rosa, que estará ministrando um curso no começo do mês aqui na empresa.

Pesquisando um pouco vi que tem muito material sobre design patterns em PHP.
O PHP oferece alguns beneficios de linguagens dinâmica que facilitam a construção de alguns patterns. Separei alguns slides e depois posto mais materiais.

Basic PHP Design Patterns
View SlideShare presentation or Upload your own. (tags: ipc08 patterns)

Melhores Práticas em PHP

April 16th, 2009

Por um tempo estava desacreditado do PHP. Agora estou trabalhando com ele novamente e vejo que supre totalmente minhas necessidades. Estou postando então uns slides que achei vagando pelo slide share.

Instalando o plugin do firefox para o RescueTime Linux Uploader 90, tive um pequeno problema. O plugin simplesmente não exporta as url, então, o rescue time não grava os sites que eu estou acessando. Isso é um bug, e ainda não foi corrigido.
A solução simples, eficiente e gambiarristica, que eu achei em um fórum e não achei mais a referência, é baixar o rescue time uploader 0.80 e instalar o plugin que vem com ele.

Instalando o RMagick no Ubuntu

September 19th, 2008

Tive alguns probleminhas tentando instalar o Rmagick, mas no fim das contas foi mais fácil do que pensei.

O Rmagick é uma interface entre a linguagem Ruby e a biblioteca de processamento de imagens ImageMagick (ou com GraphicsMagick). Então primeiro, instalamos a ImageMagick:


$sudo apt-get install imagemagick

Então instalamos as bibliotecas de desenvolvimento:


$sudo apt-get install libmagick9-dev

Agora, com tudo funcionando, podemos instalar o Rmagick:


$gem install rmagick

Para usar o Rmagick na sua aplicação Rails, basta adicionar a seguinte linha no controller/application_controller.rb:


require 'RMagick'

E é isso ai! Pronto pra funcionar!

Documentação das gems

September 5th, 2008

Uma coisa legal que eu não sabia, só digitar no terminal:

~$ gem server
Starting gem server on http://localhost:8808/

Basta entrar nesse endereço e terá o RubyGems Documentation Index, com a documentação de todas as gems instaladas.

Mapa mental e GTD

August 28th, 2008

Desde que descobri os mapas mentais, no idph, nunca mais parei de usar. É uma forma fantástica de organizar as idéias, pois no fim temos uma fotografia  de todo o projeto ou idéia. Brainstorm só com mapa mental.

O que estou usando atualmente para criar meus mapas é a mindmeinster, uma ferramenta colaborativa on-line, bem web2.0, com uma usabilidade bacana e bastante rápida. Com o mindmeister podemos criar os mapas, compartilha-los com os interessados, imprimir, exportar para vários formatos, mudar cores e fontes, inserir ícones, etc. Também é possível inserir notas, links, anexar arquivos.

Porém, uma função que nunca tinha percebido, é a de criar tarefas. Podemos criar uma tarefa para cada nó do nosso mapa. Isso é muito interessante, principalmente pra quem conhece metodologias como o GTD. Podemos colocar um projeto inteiro em mapa mental, ao invés de linearmente, priorizar as ações, escolher data de finalização e marcar como completada.Podemos criar um contexto em cada mapa, podendo ter varios projetos, com as ações nas folhas. Estou usando isso, e pesquisando um modo de integrar isso com o RTM, que é focado no GTD, tem opção de integração com Gmail e calendários e smartlists.

Alguem já usou isso por ai?

Rspec com autotest no ubuntu

August 27th, 2008

Pra rodar o autotest no ubuntu, precisei usar o comando:

$ RSPEC=true autotest

Para não precisar digitar toda vez, é só adicionar RSPEC=true no arquivo

/home/user/.autotest

Hoje precisei que, na inserção de um novo registro, no select da data de expiração aparecesse como valor default, 15 dias a partir de hoje. E viva o rails:

f.datetime_select :expires_at :default => 15.days.from_now

Apresentação Ruby On Rails

August 20th, 2008

São slides de uma apresentação introdutoria de 5 dias de Ruby on Rails. Achei legal porque tem bastante informação, mas bem objetivo, por ser slides.

O mais legal do Rails é que ele tem tudo a ver com o desenvolvimento ágil.