Artigos

Duplicar um papel de usuário e todas as suas permissões

Imagine um cenário em que um site possua 30 tipos de papéis de usuários. Agora imagine cada um desses papéis contendo centenas de permissões. Então seu chefe virá pra você e diz que precisa de um novo papel, porém com uma ou duas permissões a menos que o papel XYZ.

Esse é um tipo de trabalho chato de se fazer, pois temos que criar o novo papel, depois ir setando na mão cada uma das permissões.


Criando um formulário personalizado

Uma das grande dificuldades de todo desenvolvedor que começa a trabalhar com Drupal, é saber como montar o seu próprio formulário, validar e enviar suas informações.

Nesse artigo vou ensinar como criar um formulário em Drupal 7 com os seguintes campos:

  • Nome
  • Data de nascimento
  • Senha
  • Confirmação de senha
  • Newsletter

Vamos criar um novo módulo chamado "custom" e vamos criar um item de menu utilizando o hook_menu().


Easy Clean, meu primeiro projeto oficial no drupal.org

É com muito orgulho que anúncio meu primeiro projeto publicado oficialmente no drupal.org: http://drupal.org/project/easy_clean

Easy Clean é um tema base perfeito para aqueles que gostam de começar a desenvolver o site à partir do "zero", tendo o controle total sobre cada elemento.


Imprimir uma views dentro de um node

Como a própria documentação diz, o snippet anterior existe para realizar tal tarefa de uma maneira simples e fácil:

This function is meant to be called from PHP snippets, should one wish to embed a view in a node or something. It's meant to provide the simplest solution and doesn't really offer a lot of options, but breaking the function apart is pretty easy, and this provides a worthwhile guide to doing so.

Primeiramente será necessário criar ou editar o template.php do seu tema. Vamos utilizar a função template_preprocess_node(), a qual é utilizada para processar as variáveis dos nodes antes de serem enviadas para o template.

O snippet a seguir verifica se o tipo de conteúdo é "artigos" e cria uma nova variável chamada $outros_artigos.

// Substitua SEUTEMA pelo nome do seu tema
function SEUTEMA_preprocess_node(&$vars) {
  if($vars['type'] == 'artigos') {
    $vars['outros_artigos'] = views_embed_view('artigos', 'block_1');
  }
}

Alterar o formulário de busca do Drupal

Nesse exemplo vamos remover a label e colocar um valor padrão no campo do formulário de busca.
Coloque o snippet abaixo no template.php do seu tema e substitua o "seutema" pelo nome do seu tema.

function seutema_preprocess_search_block_form(&$variables){
  // Removemos a label do campo
  unset($variables['form']['search_block_form']['#title']);
  // Setamos o valor padrão
  $variables['form']['search_block_form']['#value'] = t('palavra chave');
  // Removemos o item #printed do array. Isso força o campo a ser renderizado novamente
  unset($variables['form']['search_block_form']['#printed']);
  // Renderizamos novamente o campo e armazenamos na variável $search_block_form
  $variables['search']['search_block_form'] = drupal_render($variables['form']['search_block_form']);
  // Recolocamos todo o html na variável $search_form
  $variables['search_form'] = implode($variables['search']);
}


Trocar icone do rss no Drupal

Para substituir o icone rss do seu tema, utilize o snippet abaixo.
Coloque-o no template.php e substitua o "seutema" pelo nome do seu tema.

function seutema_feed_icon($url) {      
  if ($image = theme('image', URL_DO_TEMA . 'images/feed.png', t('Assine o feed'), t('Assine o feed'))) {        
    return '<a href="'. check_url($url) .'" class="feed-icon">'. $image. '</a>';      
  }  
}


Custom Breadcrumb

No Drupal, as vezes precisamos setar um breadcrumb "na mão".
Isso fica fácil com o seguinte snippet:

$breadcrumb[] = l('Home',null);
$breadcrumb[] = l('Meu Link','meu_link');
$breadcrumb[] = t('Meu Segundo Link');
drupal_set_breadcrumb($breadcrumb);

Lembrando que você pode usá-lo para setar um breadcrumb em sua views.

Basta adicionar um argumento nulo, escolher a opção "Provide default argument" e em seguida PHP Code.
Cole o snippet no campo, e salve.

Eu recomendo fortemente o uso do módulo Custom Breadcrumbs, porém as vezes não existe alternativa.


Acessando drupal em uma subpasta direto da raiz

Muitas vezes, acaba sendo ruim lançar todos os arquivos do drupal diretamente na raiz do seu ftp, pois as vezes tem arquivos de log do apache de e-mails entre outros.

Portanto, por muitas vezes é melhor criar uma subpasta, e lançar lá os arquivos da sua instalação drupal. Supondo que sua raiz no servidor seja /home/usuario/public_html/, o ideal é criar uma pasta, por exemplo, do tipo /home/usuario/public_html/sitedrupal/.

Mas, nesse caso, ao invés do seu site ficar acessível por http://www.minhaurl.com.br, o mesmo só seria acessado em http://www.minhaurl.com.br/sitedrupal.


Coloque Javascript externo no Drupal 6

Vou compartilhar com vocês 2 formas para se adicionar um javascript externo ao seu template ou módulo.
A forma limpa, foi indicação do nosso amigo Pedro Faria.

Forma "suja":

$external_js = 'http://www.example.com/a.js';
drupal_add_js('document.write(unescape("%3Cscript src=\''.$external_js.'\' type=\'text/javascript\'%3E%3C/script%3E"));', 'inline');

Forma "limpa":

$external_js='http://www.example.com/a.js'; 
drupal_add_js("$.getScript(".$external_js.");", 'inline');


Páginas