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.

Como criar um módulo", conforme falei na parte 2, vou abordar agora como adicionar configurações específicas no módulo. Essas configurações são formulários em duas páginas diferentes. Em uma página, é pra escolher o comportamento padrão de cada vez que rodar o meu custom_deploy. A segunda, será onde vou rodar o custom_deploy, que irá se comportar de acordo o que defini na primeira página." data-share-imageurl="">