CMS (content management system ou sistema de gerenciamento de conteúdo) é um aplicativo que permite a publicação, edição e manutenção de conteúdo, através de uma interface administrativa centralizada. No caso de páginas e portais eletrônicos, o aplicativo – escrito em ASP, PHP ou qualquer outra linguagem server-side – deve ser instalado em um servidor com suporte à linguagem em que foi escrito o aplicativo.
Especificamente no caso desta pesquisa, um sistema desse tipo torna mais simples o trabalho de registro de ideias e atividades durante os períodos mais tumultuados de trabalho ao longo do semestre letivo, ainda que sua implementação tenha consumido um tempo considerável no período vago das férias acadêmicas.
A instalação e customização do sistema foi relativamente simples, mas o processo de seleção envolveu aprender sobre o funcionamento de cada CMS e sobre seus temas e extensões disponíveis; além de diagramá-lo, editando todos os elementos do tema numa folha de estilo. À seguir descrevo cada elemento desse processo:
1. Processo de seleção
As únicas exigências iniciais a orientarem a seleção foram: 1. o sistema escolhido deveria poder ser instalado em um servidor próprio (alguns sistemas oferecem o CMS só como parte de um serviço hospedado no servidor da empresa), exatamente para que pudesse ser customizado no nível do código, se necessário. 2. o sistema deveria ser de código aberto e gratuito. 3. O sistema deveria ser simples de customizar, para que pudesse ser moldado na estrutura vista nesta página – estradas de dados datadas em ordem crescente e em uma só página; e um cabeçalho com um índice de títulos que dão acesso às respectivas entradas quando clicados. Os sistemas avaliados no processo:
O sistema da WordPress – que oferece tanto o sistema quanto o serviço e é um CMS com ênfase em blogs – apareceu em primeiro lugar nas buscas, junto com os igualmente famosos Joomla! e Drupal – com capacidade para criar e gerir portais inteiros. Depois de uma breve avaliação inicial os três aparentaram ser mais complexos do que o necessário, o dificultaria a tarefa de customizá-los já que supostamente eu teria que compreender um grande volume de código PHP/SQL, incluindo interações as complexas entre as muitas partes.
A seguir encontrei o sistema de publicação de notícias SNews que, em si, é simples e elegante. Tem poucos arquivos (2, salvo engano) e é fácil de instalar. No entanto, após perder algum tempo investigando os arquivos do sistema descobri que customizá-lo seria uma tarefa custosa já que o código, empilhado nos poucos arquivos existentes, não é muito autoexplicativo e as dependências entre as funções não ficam claras como deveriam em um código bem escrito e comentado. Quando tentei customizá-lo de acordo com minha compreensão, erros completamente imprevisíveis surgiam na visualização da página. Piorando a situação, a documentação oficial é escassa e a comunidade de suporte (fórum, comentários em blogs de terceiros, etc) não é desenvolvida e o sistema não é atualizado desde 2011.
Com a preocupação da customização em mente e sem achar substitutos viáveis para o SNews, descobri os frameworks de desenvolvimento rápido de aplicativos para web em PHP. Descobri que o Yii e o CodeIgniter eram indicados para usuários com conhecimento médio e achei que esta combinação de flexibilidade e relativa simplicidade pudesse resolver a questão da customização. Imaginei que houvessem bibliotecas extras, escritas por usuários, que implementassem funcionalidades extras sem que muitas linhas de código tivesse que ser escritas.
Depois de investir um bom tempo tentando instalá-los e de escrever (na verdade copiar) os primeiros programas simples sugeridos como exemplos na documentação, descobri que não haviam bibliotecas escritas por usuários e que eu teria que investir muito tempo inventando funcionalidades necessárias a partir do zero. Conclui que meu conhecimento sobre PHP e MYSQL está abaixo de do que é considerado médio e desisti dos tais frameworks também.
2. Escolha
Depois da trajetória tortuosa de aprendizado e eliminação de opções, voltei ao início da minha busca e tentei uma instalação do sistema WordPress. O resultado impressionou bastante. Apesar de ser um sistema altamente complexo, é extremamente bem escrito, e tem todas as funcionalidades bem compartimentadas. Tem uma documentação online farta, uma comunidade ativa e vasta, muitas extensões escritas por usuários e adicionam funcionalidades importantes com extrema facilidade.
Meu tempo pôde ser bem gasto apenas com as customizações necessárias: no tema – ou seja, na estrutura PHP das páginas (principal e a que mostra imagens individuais) e na folha de estilo – nas extensões – que precisaram ser escolhidas, testadas e também precisaram de algumas modificações. Mesmo assim, a abundância de fontes de informação e exemplos foram grandes facilitadores da tarefa.
Na imagem à esquerda detalho o funcionamento da página principal modificada (o original pode ser visto na página do desenvolvedor). A página principal organiza a ordem de execução dos arquivos PHP, criando a estrutura básica da página: cabeçalho, corpo e rodapé.
O cabeçalho é carregado pelo arquivo header.php, que visualmente é responsável apenas por carregar o título da página, lendo-o do banco de dados e desenhando-o no navegador. Mas estruturalmente é responsável por outros passos estruturais importantes, como criar o cabeçalho HTML <head> e abrir a tag <body>, além de carregar a folha de estilo e parte dos scripts necessários para o funcionamento da página.
O arquivo loop.php é responsável por ler do banco de dados o título, o conteúdo e a data de publicação de cada uma das entradas e desenhá-las numa ordem pré-determinada (que pode ser alterada, como discutirei adiante.). No caso desta página, acrescentei ainda um loop menor no mesmo arquivo, que é executado antes do principal e serve para criar a tabela índice, a partir dos títulos e datas de publicações das entradas.
Por último, footer.php exibe um texto com créditos e licenças do próprio CMS e dos scripts e extensões de terceiros usados. Também é responsável por fechar a tag <body> e por carregar os scripts de fim de página.
Além da página visível, gerada para a interação do conteúdo com o usuário, o sistema conta com uma interface administrativa com muitos recursos (imagem à direita), onde um administrador pode expandir gerir e criar conteúdos intuitivamente, enriquecido-os com textos, imagens, galerias de imagens, vídeos e aplicativos em flash.
3. Aplicação em outras áreas do projeto?
O resultado do investimento foi bastante satisfatório, com uma redução drástica no tempo necessário para atualização do conteúdo. Com a experiência adquirida, é possível adequar a solução à outra área do site cuja atualização é problemática: os registros de desenvolvimento dos dispositivos. Atualmente, cada uma das sub páginas – exibidas quando um qualquer um dos links da página principal são acessados – ou precisa ser montada manualmente, com diagramação via HTML, no caso de serem poucas imagens; ou é uma cópia de um sistema PHP open source de exibição de fotos – que é eficiente e simples se a intenção for montar uma galeria, mas começa a ficar complexo, se você precisar mudar o título da página ou acrescentar informações em cada uma das imagens ou mesmo outros tipos de mídias, como vídeos por exemplo.