Snippets

Remover botão "Preview" dos formulários

Para remover o botão "Previem" de todos os formulários utilize:

function SEU_MODULO_form_alter(&$form, &$form_state, $form_id) { 
  unset($form['actions']['preview']);
}

Caso precise remover apenas de algum formulário em específico utilize:

function SEU_MODULO_form_alter(&$form, &$form_state, $form_id) { 
  if($form_id === 'ID_FORMULARIO') {
    unset($form['actions']['preview']);
  }
}

Comparando / validando urls com drupal_match_path

Essa função é bem interessante e podemos utilizá-la por exemplo, para validarmos a url atual do usuário e assim então executarmos alguma ação. Isso é utilizado pelo módulo Block do core do Drupal para disponibilizar o bloco em determinadas páginas do site.

A função drupal_match_path() efetua a validação através de um determinado um pattern de strings separadas por \n, \r or \r\n.

drupal_match_path($path, $patterns);

Parâmetros

  • $path - a url a ser comparada
  • $patterns - pattern de strings que serão usadas para efetuar a comparação separadas por \n, \r or \r\n

Retorno

1 se a url bater e 0 se não bater.


Pegar o resultado de uma views dinamicamente

Com o snippet a seguir é possível pegar o resultado de uma views dinamicamente e manipulá-lo de acordo com sua necessidade.

O primeiro parâmentro a ser informado é o nome da view e o segundo o ID do display. No meu exemplo utilizo uma view chamada "artigos" e o ID do meu display é block_1.

$result = views_get_view_result('artigos', 'block_1');
// dsm($result);

Caso seja necessário também é possível enviar outros argumentos para a view:

$result = views_get_view_result('artigos', 'block_1', arg(1), arg(2));
// dsm($result);

Caso tenha o módulo Devel instalado, utilize a função dsm($result); para ver o resultado como abaixo:

Pegar o resultado de uma views dinamicamente


Tabela com múltiplos cabeçalhos

Crie uma tabela com múltiplos cabeçalhos em Drupal 6 e Drupal 7

Drupal 6

  $header = array('', 'Header 1', 'Header 2', 'Header 3');
  $rows = array(  
    array(
      'data' => array(
        array('data' => 'Header 1', 'header' => true), 
        array('data' => 'Content 1'),
        array('data' => 'Content 2'),
        array('data' => 'Content 3')
      ), 
      'class' => 'first-tr'
    ),
    array(
      'data' => array(
        array('data' => 'Header 2', 'header' => true), 
        array('data' => 'Content 1'),
        array('data' => 'Content 2'),
        array('data' => 'Content 3')
      ), 
      'class' => 'second-tr'
    ),
    array(
      'data' => array(
        array('data' => 'Header 3', 'header' => true), 
        array('data' => 'Content 1'),
        array('data' => 'Content 2'),
        array('data' => 'Content 3')
      ), 
      'class' => 'third-tr'
    ),
    array(
      'data' => array(
        array('data' => 'Header 4', 'rowspan' => 2, 'header' => true), 
        array('data' => 'Content 1'),
        array('data' => 'Content 2'),
        array('data' => 'Content 3')
      ), 
      'class' => 'fourth-tr'
    ),
    array(
      'data' => array(
 
        array('data' => 'Content 1'),
        array('data' => 'Content 2'),
        array('data' => 'Content 3')
      ), 
      'class' => 'fifth-tr'
    ),
    array(
      'data' => array(
        array('data' => 'Header 5', 'header' => true), 
        array('data' => 'Content 1'),
        array('data' => 'Content 2 and 3', 'colspan' => 2, 'class' => 'big-td')
      ), 
      'class' => 'sixth-tr'
    )
  );
  $output = theme('table', $header, $rows);
  print $output; 



Salvar um node programaticamente

Esse snippet criará um novo node automaticamente.

  
$novo_node = new stdClass(); // Criamos o objeto do node
$novo_node->status = 1; // (1) Publicado | (0) Despublicado
$novo_node->created = time(); // Data de criação do node
$novo_node->type = 'page'; // Colocamos o tipo de conteúdo
$novo_node->language = 'pt-br'; // Colocamos a lingua padrão do node
$novo_node->uid = 1; // Colocamos o uid do usuário que está "criando" esse node
$novo_node->title = 'Meu novo Node'; // Título do node;
$novo_node->body = 'Lorem ipsum dolor amet....'; // Corpo do node;
 
node_save($novo_node); // E por sim salvamos