Back-End

18 fev, 2013

Como criar uma estrutura de diretórios organizada para seus módulos, temas e bibliotecas

Publicidade

No artigo de hoje vou explicar como criar uma estrutura de diretórios organizada para seus módulos, temas e bibliotecas. Não será abordado como programar de forma organizada seus módulos e temas e não explicarei como utilizar os módulos features, strongarm e libraries, ok?

Ambiente utilizado para descrever esse artigo:

Chega de conversa e vamos ao que interessa!

Como todos sabem, a forma de organização do Drupal, comparado com outros softwares, como o Magento, é sucinta. Se você quiser, pode fazer tudo dentro do arquivo .module e pronto. Realmente pode fazer, mas se um dia você partir dessa para melhor (espero que demore para acontecer), terão que contratar um medium para fazer uma consulta, pois se tornará impossível dar manutenção a esse projeto (rsrsrs).

Temos outros pontos bem incômodos quando falamos sobre desenvolvimento em Drupal com várias pessoas no mesmo projeto, produzindo insanamente módulos e features. Se você não utilizar as técnicas de modularização dos seus componentes e variáveis em features, o trabalho se tornará impraticável, pois você não irá conseguir replicar seu desenvolvimento para outros envolvidos no projeto, que provavelmente não estarão trabalhando ao seu lado.

Estão apavorados? Não fiquem! Para tudo isso tem uma solução.

Veja a imagem abaixo:

estrutura-diretorios

Note que na imagem acima temos três pastas, chamadas respectivamente de contrib, custom e fs.

Na contrib ficarão todos os módulos que virão do reposítório drupal.org. Já sei o que você deve estar pensando (rsrs):

“Quando eu executar o comando drush dl nomedomodulo, ele automaticamente colocará o módulo da comunidade na pasta site/all/modules/contrib?”

Mas é claro! Desde que você tenha criado esses diretórios antes de baixar qualquer módulo.

Veja na figura abaixo como é para ficar:

estrutura-contrib

Para fazer uma estrutura dessas em projetos já desenvolvidos e que estão em produção, será necessário um outro artigo para explicar.

Pasta /sites/all/modules/custom

Nesse caminho ficarão todos os módulos desenvolvidos pela equipe do projeto. Uma boa prática que utilizamos aqui é que todos os nomes dos módulos criados pela equipe devem sempre começar com a palavra custom_ e o restante em inglês, por exemplo:

 style="text-align: left;" align="center">custom_news, custom_ad, custom_profile_users e etc...

Dessa forma fica bastante claro quando alguém de fora do projeto for, um dia, dar manutenção no código-fonte e encontrar lá no meio uma função ou hook que é invocado por um “custom_”.

Veja abaixo como fica uma estrutura de diretórios como essa:

estrutura-custom

Pasta /sites/all/modules/custom/features

Este diretório é usado para armazenar todas as features criadas pela equipe durante o desenvolvimento do projeto.

Features, para quem não sabe, são módulos criados com intuíto de armazenar todas as configurações feitas dentro do Drupal e que, dessa forma, permite deixar versonável praticamente tudo. Reparem que eu deixei em negrito a palavra configurações. Pois é, quando eu disse configurações, pessoal, eu quis dizer tudo que não seja conteúdo. Então, nada de ficar gerando features com os conteúdos cadastrados; se vocês fizerem isso estarão fadados a ter uma grande dor de cabeça no futuro. Quem avisa amigo é! A boa prática é armazenar somente configurações.

Mais uma boa prática que utilizamos em nossos projetos, é o uso da sigla fs_ e o resto do nome em inglês. Dessa forma ficará muito fácil identificar o que é esta pasta.

Alguns exemplos de nomes e junto uma imagem para elucidar.

 style="text-align: left;" align="center">fs_profiles, fs_users, fs_news, fs_products etc...

estrutura-features2

Da parte de módulos está fechado! Agora vamos partir para temas.

Pasta /sites/all/themes/contrib

Segue a mesma ideia dos módulos contrib. Todos os temas vindos da comunidade devem ser colocados nessa pasta, porém, nesse caso, após efetuar o download do tema, você terá que colocar manualmente esse tema nesta pasta. Será um esforço mínimo e um ganho enorme de organização no futuro.

Pasta /sites/all/themes/custom

Aqui a única diferença do custom de módulos é que o nome do seu tema pode ficar sem o “custom_” na frente, para evitar confusão.

Não se preocupe com caminhos relativos. Caso os temas tenham sido bem feitos você não terá problemas com caminhos de suas imagens e css.

A terceira e última estrutura que eu considero uma das mais importantes de se explicar.

Pasta /sites/all/libraries

Esse diretório deve ser utilizado para colocar bibliotecas de terceiros, que são necessários para permitir o total funcionamento de um módulo. Alguns exemplos de módulos que precisão disso:

Confira também na figura abaixo:

estrutura-libraries_0

É muito importante quando você for instalar um novo módulo, ler tudo que está escrito na página dele e também ler o readme/install.txt. Caso o módulo que você fez download tiver uma biblioteca de terceiros dentro da pasta do módulo e o mesmo também não dizer que você pode colocar na pasta libraries, está ERRADO e também não está seguindo as boas práticas convencionadas pelo Drupal.

Para usufrir da melhor maneira dessa pasta instale o módulo libraries: http://drupal.org/project/libraries

Então é isso soldados! Espero que tenham gostado.

Artigo publicado primeiro no Drupal de Elite http://drupaldeelite.com.br/blog/como-criar-uma-estrutura-de-diretorios-organizada-para-seus-modulos-temas-e-bibliotecas