Dev (Back & Front)ARTIGO

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.

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