Back-End

5 fev, 2013

Listando conteúdo programaticamente – Parte 01

Publicidade

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;
}
  • 4 – Implementaremos o hook_menu(). Responsável pelas rotas (URL’S) do nosso módulo.
  • 5 – Criaremos  uma nova rota (url), para que apareça o link  do nosso módulo, na tela de configuração.
  • 6 – O título do bloco onde ficara o link.
  • 7 – Função que criará a pagina do menu e retornará o HTML do menu na área administrativa.
  • 8 – Permissão para acessar a rota do menu.
  • 9 – Posição do menu.
  • 10 – Arquivo responsável pela função do page_callback. É nesse arquivo que o Drupal irá procurar pela função  system_admin_menu_block_page().
  • 11 – Fechamos a descrição da rota do menu.
  • 12 – Agora, criaremos uma nova rota para o formulário de gerenciamento do nosso módulo.
  • 13 – O título do link e da página para onde seremos direcionados.
  • 14 – Uma descrição.
  • 15 – Função responsável por renderizar o nosso formulário na página.
  • 16 – Função que contém os campos do nosso formulário. Que será passado por parâmetro para funçãodrupal_get_form($form_id) renderizá-lo na pagina.
  • 17 – Permissão passada para acessar a rota do menu.
  • 18 – É nesse arquivo (que iremos criar) que o Drupal irá procurar a função  custom_view_form.
  • 19 – Fechamos a descrição da rota do menu.
  • 20 – Retornamos as rotas criadas.
  • 21 – Fechamos o hook_menu().

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