<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rubens Gadelha &#187; Drupal</title>
	<atom:link href="http://www.rubensgadelha.com.br/category/drupal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rubensgadelha.com.br</link>
	<description>Tecnologia da Informação e Atualidades</description>
	<lastBuildDate>Mon, 22 Feb 2010 15:38:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Algumas funções da camada de abstração de banco de dados do Drupal</title>
		<link>http://www.rubensgadelha.com.br/2009/01/30/funcoes-de-banco-de-dados-drupal/</link>
		<comments>http://www.rubensgadelha.com.br/2009/01/30/funcoes-de-banco-de-dados-drupal/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 03:20:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.rubensgadelha.net/?p=136</guid>
		<description><![CDATA[db_query
Executa uma consulta básica no banco de dados ativo
Exemplo

$result = db_query&#40;&#34;SELECT node.nid, node.title FROM {node}
                    WHERE node.type LIKE '%s'
                  [...]]]></description>
			<content:encoded><![CDATA[<h3>db_query</h3>
<p>Executa uma consulta básica no banco de dados ativo</p>
<p><strong>Exemplo</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> db_query<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT node.nid, node.title FROM {node}
                    WHERE node.type LIKE '<span style="color: #009933; font-weight: bold;">%s</span>'
                    ORDER BY node.created DESC&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;noticia&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Repare no uso do marcador ‘%s’, que teve seu valor indicado como argumento logo após a consulta SQL. O uso desses marcadores é altamente recomendado pelo Drupal e funciona de forma semelhante à função <a href="http://www.php.net/sprintf" target="_blank">sprintf()</a> do PHP.</p>
<p>Outro detalhe importante é que o nome da tabela está entre chaves <strong>{ }</strong>, para que o Drupal detecte a tabela e adicione o prefixo definido no ato da instalação, caso ele exista.</p>
<h3>db_query_range</h3>
<p>Executa uma função básica no banco de dados ativo, recebendo como parâmetros adicionais os índices do primeiro e do último registro a ser exibido.</p>
<p><strong>Exemplo</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> db_query_range<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT node.nid, node.title FROM {node}
			  WHERE node.type LIKE '<span style="color: #009933; font-weight: bold;">%s</span>'
			  ORDER BY node.created DESC&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;noticia&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Essa função retornará do terceiro ao décimo registros (últimos parâmetros) da consulta.</p>
<h3>db_affected_rows</h3>
<p>Essa retorna um número inteiro correspondente ao total de registros obtidos na última consulta realizada.</p>
<p><strong>Exemplo</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">print</span> db_affected_rows<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// imprime 7</span></pre></div></div>

<h3>db_fetch_object</h3>
<p>Traz cada linha do resultado de uma consulta como um objeto.</p>
<p><strong>Exemplo</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span> <span style="color: #339933;">=</span> db_fetch_object<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">print</span> <span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3>db_fetch_array</h3>
<p>Traz cada linha do resultado de uma consulta como um array.</p>
<p><strong>Exemplo</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span> <span style="color: #339933;">=</span> db_fetch_object<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">print</span> <span style="color: #000088;">$node</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.rubensgadelha.com.br/2009/01/30/funcoes-de-banco-de-dados-drupal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Carregando o conteúdo de um node no Drupal</title>
		<link>http://www.rubensgadelha.com.br/2009/01/29/carregando-o-conteudo-de-um-node-no-drupal/</link>
		<comments>http://www.rubensgadelha.com.br/2009/01/29/carregando-o-conteudo-de-um-node-no-drupal/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 04:00:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.rubensgadelha.net/?p=132</guid>
		<description><![CDATA[Se você possui o ID de um node do Drupal (nid) e deseja carregar o seu conteúdo em um bloco ou página, basta seguir os seguintes passos:

/*
 * Retorna um objeto com todas as informações do registro
 */
$node = node_load&#40;$nid&#41;;
&#160;
/*
 * Recebe como argumento o objeto do registro
 * Retorna um array estruturado relativo ao [...]]]></description>
			<content:encoded><![CDATA[<p>Se você possui o ID de um node do Drupal (nid) e deseja carregar o seu conteúdo em um bloco ou página, basta seguir os seguintes passos:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/*
 * Retorna um objeto com todas as informações do registro
 */</span>
<span style="color: #000088;">$node</span> <span style="color: #339933;">=</span> node_load<span style="color: #009900;">&#40;</span><span style="color: #000088;">$nid</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
 * Recebe como argumento o objeto do registro
 * Retorna um array estruturado relativo ao seu conteúdo
 */</span>
<span style="color: #000088;">$dados</span> <span style="color: #339933;">=</span> node_build_content<span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
 * Renderiza o conteúdo
 */</span>
<span style="color: #b1b100;">print</span> drupal_render<span style="color: #009900;">&#40;</span><span style="color: #000088;">$dados</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">content</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Muito simples, não!?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubensgadelha.com.br/2009/01/29/carregando-o-conteudo-de-um-node-no-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Módulos essenciais para um site Drupal</title>
		<link>http://www.rubensgadelha.com.br/2009/01/26/modulos-essenciais-para-um-site-drupal/</link>
		<comments>http://www.rubensgadelha.com.br/2009/01/26/modulos-essenciais-para-um-site-drupal/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 01:03:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.rubensgadelha.net/?p=119</guid>
		<description><![CDATA[
Neste artigo vou listar alguns módulos que, na minha opinião, são essenciais para o desenvolvimento de um bom portal, apesar de não fazerem parte do core do Drupal.
Content Construction Kit (CCK)
Todo tipo de conteúdo no Drupal, por padrão, é composto de um título e um texto. Com o módulo CCK você poderá adicionar campos personalizados [...]]]></description>
			<content:encoded><![CDATA[<div class="PostContent">
<p>Neste artigo vou listar alguns módulos que, na minha opinião, são essenciais para o desenvolvimento de um bom portal, apesar de não fazerem parte do <em>core</em> do Drupal.</p>
<h3><a href="http://drupal.org/project/cck" target="_blank">Content Construction Kit (CCK)</a></h3>
<p>Todo tipo de conteúdo no Drupal, por padrão, é composto de um título e um texto. Com o módulo CCK você poderá adicionar campos personalizados sob a forma de <em>campos texto</em>, <em>comboboxes</em>, <em>checkboxes</em>, entre outros.</p>
<h3><a href="http://drupal.org/project/views" target="_blank">Views</a></h3>
<p>As views constróem consultas de modo que você possa montar listas, blocos e tabelas apenas informando o tipo de conteúdo, campos, ordenação, quantidade de itens por página, etc.</p>
<h3><a href="http://drupal.org/project/contemplate" target="_blank">Content Template (Contemplate)</a></h3>
<p>Cria um template para exibição de cada tipo de conteúdo. Na página de criação do template serão disponibilizadas todas as variáveis disponíveis e com exemplos de valores, de modo que você só precisará “encaixá-las” no código HTML.</p>
<h3><a href="http://drupal.org/project/fckeditor" target="_blank">FCKEditor</a></h3>
<p>O editor de textos mais famoso e completo da web irá substituir as <em>textareas</em> convencionais, facilitando a formatação de blocos de texto e tornando a sua edição bem mais prática, uma vez que as tags HTML são geradas automaticamente.</p>
<h3><a href="http://drupal.org/project/imagecache">Imagecache</a></h3>
<p>Permite a geração de imagens com base nas enviadas por campos de <em>upload</em>. Essas cópias poderão ser redimensionadas, cortadas, convertidas em preto e branco, etc. A configuração é muito simples e intuitiva, você cria padrões pré-configurados e a partir daí todas as imagens estarão disponíveis sob estes formatos, mesmo as que foram enviadas antes da criação desses padrões.</p>
<h3><a href="http://drupal.org/project/imagefield" target="_blank">Imagefield</a></h3>
<p>É um <em>widget</em> para o <em>CCK</em> que possibilita validação de dimensões e upload de imagens via AJAX no formulário de criação de conteúdo, com visualização em miniatura logo após processado o envio.</p>
<h3><a href="../2009/01/26/modulos-essenciais-para-um-site-drupal/upal.org/project/filefield" target="_blank">Filefield</a></h3>
<p>Funciona de forma bem semelhante ao <em>Imagefield</em>, porém é indicado para o envio de outros tipos de arquivos.</p>
<h3><a href="http://drupal.org/project/pathauto" target="_blank">Pathauto</a></h3>
<p>Gera url’s automaticamente baseando-se na data, título, usuário de criação entre outros. A forma como as url’s são geradas é totalmente configurável. <strong>Dica:</strong> renomeie o arquivo<strong> i18n-ascii.example.txt</strong> para <strong>i18n-ascii.txt</strong>, depois, visite a página  <em>http://www.seusite.com/admin/build/path/pathauto</em>, clique em <em>“Configurações Gerais”</em>, e marque a opção <em>“Converter strings em letras e números da ASCII-96″</em>. Isso irá assegurar que as url’s geradas não possuam caracteres <em>não-ASCII</em>.</p>
<h3><a href="http://drupal.org/project/pngfix" target="_blank">Pngfix</a></h3>
<p>A solução para a incompatibilidade do nosso “querido” Internet Explorer 6 com imagens PNG de 24 bits.</p>
<h3><a href="http://drupal.org/project/transliteration" target="_blank">Transliteration</a></h3>
<p>Corrige os nomes dos arquivos enviados, retirando caracteres inválidos. Sem este módulo, você não poderá visualizar os arquivos cujos nomes possuam acentos, espaços…</p>
<h3><a href="http://drupal.org/project/webform" target="_blank">Webform</a></h3>
<p>Criação de formulários personalizados com envio via email, gravação em Banco de Dados e <em>download</em> de relatórios.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.rubensgadelha.com.br/2009/01/26/modulos-essenciais-para-um-site-drupal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Erros de upload de arquivos no Drupal</title>
		<link>http://www.rubensgadelha.com.br/2009/01/23/erros-de-upload-de-arquivos-no-drupal/</link>
		<comments>http://www.rubensgadelha.com.br/2009/01/23/erros-de-upload-de-arquivos-no-drupal/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 03:30:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.rubensgadelha.net/?p=103</guid>
		<description><![CDATA[Alguns cuidados devem ser observados para que o módulo de upload do Drupal funcione de forma esperada:
Conceder permissão de escrita à pasta de destino
Quando fizer o upload do site para um servidor Linux, não esquecer de dar permissão de escrita (777) na pasta que receberá os arquivos do upload (por padrão, sites/default/files). Faça o mesmo [...]]]></description>
			<content:encoded><![CDATA[<p>Alguns cuidados devem ser observados para que o módulo de upload do Drupal funcione de forma esperada:</p>
<h3>Conceder permissão de escrita à pasta de destino</h3>
<p>Quando fizer o upload do site para um servidor Linux, não esquecer de dar permissão de escrita (777) na pasta que receberá os arquivos do upload (por padrão, <em>sites/default/files</em>). Faça o mesmo para a pasta de arquivos temporários (que você configura em Administrar-&gt;Configurações do Site-&gt;Sistema de Arquivos);</p>
<h3>Corrigir os nomes dos arquivos ou instalar um módulo que o faça</h3>
<p>O <em>Core</em> do Drupal por si só não trata nomes de arquivos que contenham caracteres inválidos e não-ASCII (de acordo com a  <a rel="nofollow" href="http://www.ietf.org/rfc/rfc2396.txt" target="_blank">RFC 2396</a>). Esses arquivos, ao serem enviados ao servidor, perdem seus nomes originais (pela perda dos caracteres inaceitáveis) ficando assim inacessíveis.</p>
<p>Para solucionar esse problema e não ter que renomear esses arquivos manualmente, a <a href="http://www.unleashedmind.com/" target="_blank">Unleashed Mind</a> mantém um módulo chamado <a href="http://drupal.org/project/transliteration" target="_blank">Transliteration</a>, que checa os nomes dos arquivos no ato do upload e os renomea automaticamente. Considero este módulo essencial e está presente em todos os meus projetos feitos em Drupal. Recomendo!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubensgadelha.com.br/2009/01/23/erros-de-upload-de-arquivos-no-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erro ao submeter formulário que possui código php no Drupal</title>
		<link>http://www.rubensgadelha.com.br/2009/01/20/erro-ao-submeter-formulario-que-possui-codigo-php-no-drupal/</link>
		<comments>http://www.rubensgadelha.com.br/2009/01/20/erro-ao-submeter-formulario-que-possui-codigo-php-no-drupal/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 21:03:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.rubensgadelha.net/?p=77</guid>
		<description><![CDATA[Ao gravar os dados de um formulário que contenha código PHP, você poderá se deparar com o seguinte erro:
A requisição não pode ser processada!
O servidor não suporta a ação requisitada pelo seu “browser”.
Se você acredita ter encontrado um problema no servidor, por favor entre em contato com o webmaster.
Erro 501
Isso acontece por que o mod_security [...]]]></description>
			<content:encoded><![CDATA[<p>Ao gravar os dados de um formulário que contenha código PHP, você poderá se deparar com o seguinte erro:</p>
<blockquote><p><strong>A requisição não pode ser processada!</strong></p>
<p>O servidor não suporta a ação requisitada pelo seu “browser”.</p>
<p>Se você acredita ter encontrado um problema no servidor, por favor entre em contato com o webmaster.</p>
<p><strong>Erro 501</strong></p></blockquote>
<p>Isso acontece por que o <em>mod_security</em> do Apache não está permitindo a postagem do conteúdo em PHP via formulário.</p>
<p>A solução para este problema é a desativação deste módulo ou a criação de uma regra para o chamado <em>“PHP INJECTION”</em>.</p>
<p>Se você tiver acesso a essa configuração, poderá desabilitar esse filtro colocando as seguintes linhas no seu arquivo <em>.htaccess</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Desabilita o filtro do mod_security
</span>
SecFilterEngine Off
SecFilterScanPOST Off</pre></div></div>

<p>Se o erro persistir, é por que somente o pessoal da empresa de hospedagem tem permissões para fazer esse tipo de ajuste.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubensgadelha.com.br/2009/01/20/erro-ao-submeter-formulario-que-possui-codigo-php-no-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Definindo regiões para blocos no Drupal 6</title>
		<link>http://www.rubensgadelha.com.br/2009/01/18/definindo-regioes-de-blocos-no-drupal-6/</link>
		<comments>http://www.rubensgadelha.com.br/2009/01/18/definindo-regioes-de-blocos-no-drupal-6/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 17:00:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.rubensgadelha.net/?p=48</guid>
		<description><![CDATA[Uma região em um tema do Drupal representa uma área dentro da qual poderemos inserir os blocos. Geralmente, existem cinco pré-definidas, são elas: Left Sidebar (Barra lateral esquerda), Right Sidebar (Barra lateral direita), Content (Conteúdo), Header (Cabeçalho) e Footer (Rodapé).
Porém em alguns casos, se faz necessária a criação de novos espaços para blocos. Para tal, [...]]]></description>
			<content:encoded><![CDATA[<p>Uma região em um tema do Drupal representa uma área dentro da qual poderemos inserir os blocos. Geralmente, existem cinco pré-definidas, são elas: <em>Left Sidebar (Barra lateral esquerda)</em>, <em>Right Sidebar (Barra lateral direita)</em>, <em>Content (Conteúdo)</em>, <em>Header (Cabeçalho)</em> e <em>Footer (Rodapé)</em>.</p>
<p>Porém em alguns casos, se faz necessária a criação de novos espaços para blocos. Para tal, iremos incluí-las no arquivo <em>nomedotema.info</em> da seguinte forma:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">regions<span style="color: #009900;">&#91;</span>nomedaregiao<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Rótulo da região</pre></div></div>

<p>Onde <em>nomedaregiao</em> deverá seguir as mesmas regras da criação de variáveis do PHP.</p>
<p>Definir as regiões no arquivo <em>nomedotema.info</em> fará com que as padrões do tema sejam ignoradas. Portanto, se você pretende continuar utilizando-as, deve definí-las novamente:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">regions<span style="color: #009900;">&#91;</span>left<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Left sidebar
regions<span style="color: #009900;">&#91;</span>right<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Right sidebar
regions<span style="color: #009900;">&#91;</span>content<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Content
regions<span style="color: #009900;">&#91;</span><span style="color: #990000;">header</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">Header</span>
regions<span style="color: #009900;">&#91;</span>footer<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Footer</pre></div></div>

<p>Depois, é só incluir no arquivo page.tpl.php, onde você quer que seja inserida a nova região, a linha:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">print</span> <span style="color: #000088;">$nomedaregiao</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Para facilitar a estilização via CSS, poderá fazer assim:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;div id=&quot;nomedaregiao&quot; class=&quot;nome-da-regiao&quot;&gt;
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">print</span> <span style="color: #000088;">$nomedaregiao</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;/div&gt;</pre></div></div>

<p>Se desejar que a região só apareça se contiver blocos:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$nomedaregiao</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
  &lt;div id=&quot;nomedaregiao&quot; class=&quot;nome-da-regiao&quot;&gt;
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">print</span> <span style="color: #000088;">$nomedaregiao</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
  &lt;/div&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Por exemplo, se quisermos adicionar no tema <em>framework</em> uma região chamada <em>banners</em>, mantendo as regiões padrão, deveremos abrir o arquivo <em>framework.info</em> e incluir as seguintes linhas:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">regions<span style="color: #009900;">&#91;</span>left<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Left sidebar
regions<span style="color: #009900;">&#91;</span>right<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Right sidebar
regions<span style="color: #009900;">&#91;</span>content<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Content
regions<span style="color: #009900;">&#91;</span><span style="color: #990000;">header</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">Header</span>
regions<span style="color: #009900;">&#91;</span>footer<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Footer
regions<span style="color: #009900;">&#91;</span>banner<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> Banner</pre></div></div>

<p>Depois, incluímos no <em>page.tpl.php</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$banners</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
  &lt;div id=&quot;banners&quot; class=&quot;banners&quot;&gt;
    <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">print</span> <span style="color: #000088;">$banners</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
  &lt;/div&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<blockquote><p><strong>IMPORTANTE:</strong> O conteúdo do do arquivo .info é armazenado no cache do Drupal. Por isso, após a inserção no arquivo .info você deverá ir a página<strong> admin/settings/performance</strong> e pressionar o botão de limpeza de cache, para que suas alterações tenham efeito imediato.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.rubensgadelha.com.br/2009/01/18/definindo-regioes-de-blocos-no-drupal-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que são os Hooks do Drupal?</title>
		<link>http://www.rubensgadelha.com.br/2009/01/17/o-que-sao-os-hooks-do-drupal/</link>
		<comments>http://www.rubensgadelha.com.br/2009/01/17/o-que-sao-os-hooks-do-drupal/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 04:44:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.rubensgadelha.net/?p=23</guid>
		<description><![CDATA[Os hooks (ganchos em inglês) são funções PHP pré-definidas, criadas para promover a integração dos módulos com o núcleo do sistema.
O programador, ao criar um novo módulo, extenderá essas funções, respeitando apenas os parâmetros a serem recebidos e o valor retornado, ficando a implementação propriamente dita totalmente adequável às suas necessidades.Outras funções poderão ser definidas [...]]]></description>
			<content:encoded><![CDATA[<p>Os <a href="http://api.drupal.org/api/group/hooks/6">hooks</a> (ganchos em inglês) são funções PHP pré-definidas, criadas para promover a integração dos módulos com o núcleo do sistema.</p>
<p>O programador, ao criar um novo módulo, extenderá essas funções, respeitando apenas os parâmetros a serem recebidos e o valor retornado, ficando a implementação propriamente dita totalmente adequável às suas necessidades.Outras funções poderão ser definidas no módulo para ajudá-lo na implementação dos <a href="http://api.drupal.org/api/group/hooks/6">hooks</a> ou executar as suas ações específicas.</p>
<p>Na <a title="Drupal Hooks API" href="http://api.drupal.org/api/group/hooks" target="_blank">api</a> do drupal você encontra uma lista completa de todos os <a href="http://api.drupal.org/api/group/hooks/6">hooks</a> disponíveis com suas respectivas descrições.</p>
<p>A implementação dos <a href="http://api.drupal.org/api/group/hooks/6">hooks</a> inicia-se no uso correto da nomenclatura, que se dá substituindo a palavra <em>hook</em> no nome da função pelo nome do módulo.</p>
<p>Por exemplo, para implementar o <a href="http://api.drupal.org/api/function/hook_menu/6">hook_menu()</a> em um módulo chamado <em>notícias</em>, vá até a pasta deste módulo, abra o arquivo <em>noticias.module</em> e crie uma função chamada <em>noticias_menu()</em>, esse <em>hook</em> é responsável por criar ítens de menu e chamadas de página através de url (não detalharemos o <a href="http://api.drupal.org/api/function/hook_menu/6">hook_menu()</a> para não fugirmos do escopo desta matéria).</p>
<p>O código desse exemplo ficaria assim:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * Implementação do hook_menu
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> noticias_menu<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$items</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Cria um ítem de menu</span>
  <span style="color: #000088;">$items</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'noticias'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Noticias'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'page callback'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'noticias_page'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'access arguments'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'access content'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'type'</span> <span style="color: #339933;">=&gt;</span> MENU_NORMAL_ITEM<span style="color: #339933;">,</span>
  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// Cria uma url para uma página</span>
  <span style="color: #000088;">$items</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'noticias/lista'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'title'</span> <span style="color: #339933;">=&gt;</span> t<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Notícias'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'page callback'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'noticias_list'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'access arguments'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'access content'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'type'</span> <span style="color: #339933;">=&gt;</span> MENU_CALLBACK<span style="color: #339933;">,</span>
  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$items</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Com o uso do <a href="http://api.drupal.org/api/function/hook_menu/6">hook_menu()</a>, o drupal irá incluir os links do módulos de notícias na geração do menu do sistema.</p>
<p>Qualquer dúvida ou sugestão, é só comentar!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubensgadelha.com.br/2009/01/17/o-que-sao-os-hooks-do-drupal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

