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

Sistema Operacional Linux Mint 13 (Versão Ubuntu 12." data-share-imageurl="">

Olá Soldado!

No artigo de hoje vou explicar como criar uma estrutura de diretórios organizada para seus módulos, temas e bibliotecas.

Nesse artigo não será abordado como programar de forma organizada seus módulos e temas. Não será explicado também como utilizar os módulos features, strongarm e libraries.

Ambiente utilizado para descrever esse artigo:



Chega de conversa e vamos ao que interessa !

Como todos sabem ou aqueles que não sabem, um dia passarão por isso, como é sucinta a forma de organização do Drupal comparado com outros softwares como o Magento por exemplo. 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 comentado tem uma solução. :-)

Veja a imagem abaixo:

Estrutura de pastas dentro do sites/all

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 soldado! Desde que, você tenha criado esses diretórios antes de baixar qualquer módulo.”

Veja na figura abaixo como é para ficar:

Estrutura de pastas de sites/all/modules/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:

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 de pastas de sites/all/modules/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, utilize a 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.

fs_profiles, fs_users, fs_news, fs_products etc...

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

Pasta /sites/all/themes/contrib

Segue a mesma idéia 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.

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 de pastas de sites/all/libraries

É 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.

Abs!