Listando conteúdo programaticamente #1

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 galera, é 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 modulo.

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.

 

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 pagina para onde seremos direcionados.

14 – Uma descrição.

15 – Função responsável por renderizar o nosso formulário na pagina.

16 – Função que contém os campos do nosso formulário. Que será passado por parâmetro para função drupal_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”.

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 linha 30 a 34 adicionamos um elemento markup 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!!

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