Dev & EngARTIGO

Listando conteúdo programaticamente – Parte 01

Hoje irei mostrar aos senhores como criar um módulo que lista um determinado tipo de conteúdo. A grande sacada é que irei mostrar como fazer isso programaticamente. Às vezes os módulos não atendem 100% as nossas necessidades e com esse simplório tutorial você irá entender como as coisas funcionam por trás da interface.

Artigo · Dev & Eng
Leitura
5 min
Código
3

Beleza, galera?! Hoje irei mostrar aos senhores como criar um módulo que lista um determinado tipo de conteúdo.

“Putz… tem um monte de módulo pronto que faz isso ¬¬”. Mas a grande sacada é que irei mostrar como fazer isso programaticamente. Às vezes os módulos não atendem 100% as nossas necessidades e com esse simplório tutorial você irá entender como as coisas funcionam por trás da interface.

Então, sem mais delongas, segue o nosso guia para este tutorial:

  1. Criação de um módulo.
  2. Implementação do hook_menu().
  3. Criação de um form na área administrativa.
  4. Criação do submit do form.
  5. Manipulação de variable_get($name, $default = NULL) e variable_set($name, $value).
  6. Implementação do hook_theme($existing, $type, $theme, $path).
  7. Criação de um template.

Para o desenvolvimento desse tutorial, foi criado um tipo de conteúdo chamado “Estados brasileiros” (brazilian_states). Com os seguintes campos: Title (title), Capital (field_capital) e  Habitantes (field_inhabitants).  Após a criação do tipo de conteúdo, cadastre alguns estados.

Passo 1: Criação do modulo Custom_view

Estrutura de pastas: sites → all → modules → custom → custom_view
Caso as pastas não existam, criem.

Vamos criar o seguinte arquivo custom_view.info dentro da pasta cusom_view.

name = Custom View
description = Provide custom view.
package = Custom
core = 7.x
version = 7.x-1.x-dev

Aqui são as configurações básicas do módulo:

  • 1 –  nome do módulo.
  • 2 – descrição de suas funcionalidades.
  • 3 – o pacote do módulo, para deixar organizado na pagina de configurações dos módulos.
  • 4 – a versão do core do Drupal.
  • 5 – a versão do módulo.

Vamos testar?

Acessem o menu “Modules”  ou “Módulos” e ativem o nosso módulo que acabamos de criar.

02

Passo 2: Implementação do hook_menu()

Agora vamos criar o nosso segundo arquivo. Dentro da pasta custom_view criaremos o arquivo custom_view.module responsável pelos intens de menu, que chamaremos de “rotas”, para melhor entendimento.

<?php /*
* Implements hook_menu()
*/
function custom_view_menu() {
$items['admin/config/custom-view'] = array(
  'title' =?> 'Custom View',
  'page callback' => 'system_admin_menu_block_page',
  'access arguments' => array('access administration pages'),
  'position' => 'right',
  'file' => 'system.admin.inc',
);
 $items['admin/config/custom-view/manager'] = array(
   'title' => 'Custom View Manager',
   'description' => 'Customizing views',
   'page callback' => 'drupal_get_form',
   'page arguments' => array('custom_view_form'),
   'access arguments' => array('administer custom view'),
   'file' => 'custom_view.admin.inc',
 );
 return $items;
}

Obs: Após escreverem o código acima limpem o CACHE.

Vamos testar?

Acessem no menu “Configuration” ou “Configurações”.

03

Passo 3: Criação do formulário na área administrativa

Lembram do tipo de conteúdo “Estados brasileiros” que criamos? Nele tem os seguintes campos: Title (title), Capital (field_capital) e  Inhabitantes (field_inhabitants). Criaremos o nosso form com quatro checkbox: Title, Capital, Inhabitantes e Pager.

Quando marcamos um dos checkbox, a informação referente a ele deve ser listada na tela. Ex: marcamos somente o checkbox Inhabitantes. Após o submit do form, seremos direcionado para seguinte url custom-view/view/estados_do_brasil (uma das rotas de menu que criaremos posteriormente). Nessa tela deve aparecer somente os Habitantes de cada Node.

Agora criaremos um outro arquivo chamado custom_view.admin.inc. Dentro dele iremos implementar o hook_form($form, &$form_state) para criação do nosso formulário.

<?php /**
* Create form
*/
function custom_view_form($form, &$form_state) {
  $form['title'] = array(
    '#type' =?> 'checkbox',
    '#title' => 'Title',
    '#description' => t('Let scheduled to appear the title'),
  );
  $form['capital'] = array(
   '#type' => 'checkbox',
   '#title' => 'Capital',
   '#description' => t('Let scheduled to appear in capital'),
 );
 $form['inhabitant'] = array(
   '#type' => 'checkbox',
   '#title' => 'Inhabitants',
   '#description' => t('Let scheduled to appear the number of inhabitants'),
 );
 $form['pagination'] = array(
   '#type' => 'checkbox',
   '#title' => 'Pager',
   '#description' => t('Let scheduled to appear pagination'),
 );
 $form['save'] = array(
   '#type' => 'submit',
   '#value' => 'Save',
   '#submit' => array('custom_view_form_submit'),
 );
 $form['cancel'] = array(
   '#type' => 'markup',
   '#markup' => l('Cancel', 'custom-view/view/brazilian_states'),
 );
 return $form;
}

 

  • 4 – Implementaremos o hook_form($form, &$form_state). Aqui criaremos o nosso formulário.
  • 5, 10, 15, 20, 30 – Adicionaremos um novo elemento ao formulário.
  • 6, 11, 16, 21, 26, 31 – O tipo desse elemento.
  • 7, 12, 17, 22 –  Um tipo para o elemento.
  • 8, 13, 18, 23 – Uma breve descrição.
  • 9, 14, 19, 24, 29, 33 – Fechamos o elemento.
  • 27 – Texto para o botão.
  • 28 – Função de submit do form.
  • 32 – A função l($text, $path, array $options = array()) é responsável por criar um link HTML.
  • 34 – Retornamos a variável form com os nossos elementos.
  • 35 – Fechos o hook_form($form, &$form_state).

Nas linhas 30 a 34 adicionamos um elemento markup ao invés de um button. Ao clicar no Cancel, quero apenas que o form direcione o usuário para um determida url. Se fosse um button, teriamos que criar um submit para realizar o redirecionamento do form.

Vamos testar ?

Se você chegou nessa tela, meus parabéns!!

04

No próximo artigo iremos implementar os outros passos, qualquer duvida, crítica, sugestão, ameaça é deixar um comentário. Até lá!

Artigo publicado originalmente em Drupal de Elite http://drupaldeelite.com.br/blog/listando-conteudo-programaticamente-1

É desenvolvedor back-end da Taller. Curte um lifestyle saudável e é quase graduado em sistemas da informação, só falta o TCC.

Ver perfil →