As oportunidades de experimentar o Drupal têm-se escapado ao longo dos anos. Agora, tenho 2 projectos para pôr de pé em pouco tempo e comecei finalmente a tomar contacto com este CMS. Vou dar aqui conta das minhas impressões acerca deste sistema, sempre do ponto de vista do utilizador avançado (com conhecimentos de PHP) e, inevitavelmente, comparando com o sistema que melhor conheço e mais gosto de usar: o Wordpress.
Hoje falarei apenas das primeiras impressões: instalação, primeira abordagem ao Drupal e documentação.
Sou fanático do wordpress. Há anos. Usei-o em todos os meus blogs e sites e também nos projectos para clientes, excepto num caso em que me solicitaram, especificamente e infelizmente, o Joomla. Mas eu já estava avisado, por um amigo, que o Drupal era outro nível, em termos de CMS e mais além.
Isto não significa que o Wordpress não seja brilhante, provavelmente até será o melhor, no panorama dos CMS open-source, em algumas questões. Mas reconheço que o Wordpress não é tão escalável, nem adadptável a situações distantes do blog/site, como eu gostaria que fosse.
Este artigo é o primeiro de uma série que tenho vindo a rascunhar acerca das minhas aventuras com o Drupal e espero que seja útil para outros iniciados, principalmente para os que como eu, têm alguma ou muita experiência com o WP.
Abordagem CMS do Drupal
Eu aconselho a começar por ler as definições dos conceitos utilizados pelo Drupal. Para quem tenha experiência com outro CMS é fácil estabelecer os paralelos, transpôr as equivalências e evidenciar os contrastes.
Content in Drupal is created in individual “nodes”. For nodes of type “story”, users can add comments to the node (comments themselves are not considered nodes).
Depois de lerem a página (incluindo os 2 excelentes comentários) poderão entender o seguinte parágrafo:
O Drupal baseia-se num sistema de nodes hierárquicos, diferenciados por node-types extensíveis, organizados segundo uma taxonomia hierárquica. Permite criar infinitos menus que possibilitam a nevagação para/por cada uma das taxanomias, tipo de node. É extensível através de módulos que podem adicionar/alterar tipos de conteúdos e extender/alterar o comportamento do sistema para os mesmos: navegação, apresentação e tarefas de admin. A apresentação é gerada pelo theme engine, definida no theme e organizada em blocks, boxes e content. Os acessos são geridos por um sistema de roles
Para uma melhor compreensão, visitar os instrutivos vídeos que se encontram no youtube. Escolhidos à mão para recompensar quem conseguiu ler este artigo até aqui:
Para quem não tem qualquer experiência com um CMS (ou mesmo com php/mysql) este artigo explica sem detalhes técnicos os mecanismos mais básicos do sistema.
Outras considerações (e algumas confusões)
Instalação
Uma brisa. O download do core do Drupal é mínimo, tal como o Wordpress e ao contrário do Joomla. Unzip, point your browser, business as usual. Esta questão hoje em dia já não é tão problemática como há uns anos atrás.

Eis a home-page de uma instalação quase fresquinha (digo quase porque já editei um conteúdo). O Drupal não traz nenhum utilizador criado. O primeiro login assume o UID 1 e logo a identidade de super-administrador. Não morro de amores por esta ideia mas posso viver com ela.
O que me agrada mesmo é o facto de, tal como o Wordpress, ao contrário do Joomla, após a instalação temos apenas 1 item de conteúdo. Óptimo. Não temos lixo para apagar nem sugestões que nos possam condicionar.
Pretty Urls
O Drupal permite usar pretty urls (urls sem ? e &) e a sua activação num XAMPP onde ainda não foi configurado o mod_rewrite (um dos pesadelos mais documentados do mundo Apache sobre windows) está muito bem explicada.
Contudo tenho visto endereços do tipo www.site.com/node/1234 e isso não me agrada. No Wordpress é garantido que todas as páginas têm uma componente legível, o que eu considero indispensável tanto para os humanos como, principalmente, para os motores de busca. A esclarecer.
Extender o Drupal: Módulos
A extensão do Drupal é conseguida através de módulos, o equivalente aos plugins do Wordpress ou aos componentes do Joomla. Não propriamente equivalentes, cada qual tem a sua filosofia. Mas são a forma prevista no Drupal para o extender, seja recorrendo a módulos gratuitos e/ou comerciais ou desenvolvendo os nossos, à medida.
Aparentemente o desenvolvimento dos módulos mais populares do Drupal (CCK+Views) está intimamente ligado ao desenvolvimento do Core. Isto constitui uma excelente notícia. Ao mesmo tempo que se mantém a modularidade do sistema, não incorporando estes musts no core, criaram um sistema
Outra nota: o repositório de módulos do Drupal parece não cair no ridículo dos homólogos do Joomla e do Wordpress, que contêm milhares de extensões e onde cada developer parece competir pelo melhor componente/plugin para determinada função. Parece-me bem.
Estes dois módulos (CCK+Views) são extremamente poderosos, permitindo construir “tipos de conteúdos” para além do simples article/page/post que encontramos num CMS básico. No limite permite construir uma verdadeira aplicação utilizando conceitos familiares aos developers. Basta olhar para o índice deste curso para perceber o alance. Aliciante!
Controlo de Acessos
O controlo de acessos é feito segundo um modelo ACL, trazendo por defeito apenas 2 roles criados. O modelo é personalizável ao nível do role ou do perfil individual e expande-se para todos os módulos que se adicionam ao sistema.
Apresentação: Theme engines + themes
O template engine por defeito é baseado no PHPTemplate. O interessante é que podemos usar outro engine: o velho XTemplate, uma integração do Smarty, outros engines que germinaram do interior do projecto Drupal; o nosso próprio engine.
Consequentemente, cada theme é especificamente criado para um engine em particular, havendo temas que se confundem com o engine ao ponto de terem gerado o seu próprio engine.
Confuso? Nem por isso, após uma experiência prática com 2 ou 3 engines/temas percebe-se que a flexibilidade a nível da apresentação é total e podemos fazer “30 por uma linha” sem comprometer o core.
Documentação
Está tudo muito bem explicado, com muito profissionalismo, no próprio site do Drupal. E isso transmite muita confiança a quem quer começar aventurar-se. Os handbooks são um sítio bom para começar.
Contudo era muito melhor se esta documentação fosse ilustrada com bons diagramas e snapshots. Talvez poupasse algumas palavras e evitasse umas quantas dúvidas. Claro que posso sempre submeter um Suggest documentation improvements mas fica para mais tarde.
Overview
Content Types
Taxonomy
Roles
Menus
Themes
Blocks



Já tinha tido chatices a colocar o mod_rewrite a funcionar no meu XAMPP (na primeira vez que o usei o symfony num projecto, creio) e portanto já sabia a (obscura) solução. Fui a correr olhar para o .htaccess na \ do Drupal, descomentei uma linha e editei uma path e Zás! Ficou a funcionar.
Mas por curiosidade resolvi dar um salto à página de ajuda do Drupal (os links para as ajudas específicas de problemas frequentes estão mesmo no sítio certo no admin do Drupal). E não é que a página explica tudo bem e depressa? Um must para quem tenha este problema seja com o Drupal seja com uma qualquer framework MVC.