Posts Tagged ‘desenvolvimento’

Limitações do Smarty

Sunday, December 30th, 2007

Para o desenvolvimento do TekPT ficou decidido que dava jeito ter um sistema de templates facilmente alterável em vez de ter a apresentação misturada com o código e a solução a essa problema passou pela fantástica biblioteca Smarty que até agora tem sido excelente para as necessidades.

No entanto apesar da biblioteca ser excelente não deixa de ter alguns problemas nomeadamente no que toca a plugins e a questões de cache.

Aquando do desenvolvimento pensei em criar algumas tags para facilitar o código html, nomeadamente a criação de uma tag {block} para rapidamente colocar os headers de cada um dos elementos da barra lateral no entanto isso desponta um bug na cache do smarty. O problema é o seguinte: ao usar varios blocos idênticos num ficheiro com a cache activa o primeiro é correctamente executado enquanto todos os outros são substituidos por copias do primeiro. Não consegui encontrar qualquer solução para este problema tendo a solução recaido sobre o abandono da ideia.

Um outro problema semelhante deu-se aquando da criação do sistema de banners. O sistema é simples, coloca-se uma tag {banner type=”horizontal”} no template e esta é substituida por um dos ficheiros tpl de uma determinada pasta seguindo algumas regras. Os nomes do ficheiro devem ser do tipo “horizontal_title.tpl” onde claramente a primeira parte do nome do ficheiro é o type onde são utilizados e a segunda parte é meramente uma forma de organização. O código para isto é extremamente simples no entanto, durante o seu desenvolvimento, esbarrei novamente com o mesmo bug da ideia anterior. Por muito que eu desactivasse a cache do plugin este não actualizava a secção do template sem apagar os ficheiros de cache manualmente.

O problema reside na gestão de cache do smarty que aparentemente não funciona quando recebe um overwrite por parte do programador. Então, apesar de eu estar explicitamente a pedir para ela ser desactivada no meu plugin, esta não funcionava até que eu alterei o nome da função para smarty_function_banner (o que não seria necessário de acordo com o manual uma vez que o plugin estava a ser registado dinamicamente).

Agora tudo funciona correctamente mas fica o alerta não só para mim próprio como para todos os outros que desejem utilizar a biblioteca smarty no seu desenvolvimento. Fica a ressalva no entanto que estou a utilizar um objecto que estende a class Smarty() da biblioteca e que gere tudo o que tem a ver com Templates o que pode agravar o problema da cache (depende da forma como a biblioteca distingue se os plugins são dinâmicos ou não).

Abertura do blog

Saturday, December 29th, 2007

Bem vindos ao novíssimo blog do TekPT onde vos vou dar a conhecer os desenvolvimentos sobre o que se passa nos bastidores deste agregador tecnológico nacional.

Para começar vou deixar, para aqueles que não sabem, a informação de que o TekPT tem andado aparentemente “abandonado” porque está a ser escrita de raiz uma nova versão do software que suporta todo o sistema.

Para já ainda se encontra numa fase bastante rudimentar mas caminha rapidamente para a ribalta com uma versão estável prevista para Janeiro.

O estado das diferentes partes do código pode ser vista na barra lateral aqui do blog e será actualizada sempre que existirem desenvolvimentos. Deixo no entanto a nota que as percentagens indicadas correspondem a previsões feitas pela minha pessoa logo podem não estar tão próximas da realidade quanto o desejado.

Espero então que acompanhem os desenvolvimentos do TekPT e aproveito para pedir que deixem as vossas sugestões nos comentários.