2. Drupal?
O Drupal é comumente descrito como um
Framework de Gerenciamento de Conteúdo,
pois além de oferecer as funcionalidades
básicas de um CMS ele também implementa
uma série de APIs robustas e apresenta uma
estrutura modular que facilita o
desenvolvimento de módulos extensivos.
Fonte: http://pt.wikipedia.org/wiki/Drupal
3. Vantagens
Comunidade
Funcionalidades
Mais de 800 módulos estão disponíveis ou em
desenvolvimento atual para o Drupal 7, incluindo
Views, Pathauto, e WYSIWYG
Extensibilidade
Internacionalização
Usabilidade
5. Normas de codificação
Baseado no PEAR Coding standards
Recuo e espaço em branco
2 espaços para recuo, sem tabulação
Operadores
Espaço antes e depois de todos operadores binários
6. Normas de codificação
Estruturas de controle
if (condicao1 || condicao2) {
acao1;
}
elseif (condicao3 && condicao4) {
acao2;
}
else {
acaopadrao;
}
7. Normas de codificação
Sintaxe de controle alternativa para templates
<?php if (!empty($item)): ?>
<p><?php print $item; ?></p>
<?php endif; ?>
<?php foreach ($items as $item): ?>
<p><?php print $item; ?></p>
<?php endforeach; ?>
8. Normas de codificação
Comprimento e quebra de linha
Em geral, as linhas não devem ultrapassar o
tamanho de 80 caracteres
Estrutura de controle podem exceder 80 caracteres
se são simples de ler e entender
if ($something['with']['something']['else']['in']['here'] ==
mymodule_check_something($whatever['else'])) {
...
}
9. Normas de codificação
Chamada de função
$var = foo($bar, $baz, $quux);
$short = foo($bar);
$long_variable = foo($baz);
10. Normas de codificação
Declaração de função
function funstuff_system($field) {
$system["description"] = t("This module inserts...");
return $system[$field];
}
11. Normas de codificação
Matriz
$some_array = array('hello', 'world', 'foo' => 'bar');
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#size' => 60,
'#maxlength' => 128,
'#description' => t('The title of your node.'),
);
17. Como criar um módulo?
Criar pasta com nome do módulo
O nome deve conter apenas letras minúsculas e
sublinhados
Nome do módulo será usado em todos os
arquivos e funções
Criar arquivo com nome do módulo + sufixo
.module
Criar arquivo .info para descrição do módulo
25. Exemplo de gancho
function hook_node_insert($node) {
db_insert('mytable')
->fields(array(
'nid' => $node->nid,
'extra' => $node->extra,
))
->execute();
}
function forum_node_insert($node) {
if (_forum_node_check_node_type($node)) {
if (!empty($node->forum_tid)) {
// faz alguma coisa
}
}
}
26. Tema
Coleção de arquivos que define a camada de
apresentação
Requer um arquivo .info, onde pode ser definido
meta dados, folhas de estilo, javascripts,
regiões dos blocos e outros
Usa arquivos de modelo (.tpl.php)
Sugestões de modelo
Há um arquivo (template.php) para concentrar
toda lógia e processamento dos dados
Suporta sub-temas
27.
28. Sugestão de modelo
Drupal irá usar o modelo mais específico
Exemplo do modelo node.tpl.php
node--[type|nodeid].tpl.php
node--nodeid.tpl.php
node--type.tpl.php
node.tpl.php
29. Tema
Dentro do Drupal, a camada de apresentação
utiliza a função theme(), o qual é passado o
nome de um componente e uma matriz de
variáveis
theme('table', array('header' => $header, 'rows' => $rows));
É possível criar uma saída customizada dentro
do módulo com o gancho hook_theme
30. Estrutura de arquivo
Arquivos na pasta raíz:
.htaccess
authorize.php
cron.php
index.php
install.php
update.php
xmlrpc.php