Dev (Back & Front)ARTIGO

Passando argumentos para um bloco

Digamos
que você construiu um módulo para controle de produtos, nesse seu módulo
você possui uma página construída através do módulo, com o hook_menu,
por exemplo: http://localhost/drupal/produto

No hook_menu você tem um callback que aponta para a função
produto_get_content, essa função é responsável por trazer o nome do
produto no título da página, através da função drupal_set_title, ela
não busca mais nenhuma informação.

O que queremos é quando o usuário acessar http://localhost/drupal/produto/10,passando o parâmetro 10, sejam buscadas todas informações referentes ao
produto. Para fazer isso podemos construir views do tipo bloco, cada
view fica responsável por mostrar um tipo de conteúdo, uma mostra a
descrição do produto, outra mostra as fotos, e podemos criar as views
conforme a necessidade.

A página http://localhost/drupal/produto/10
será composta de vários blocos, o problema que temos é passar o
parâmetro 10 para cada view, as views do tipo bloco não conseguem pegar
de forma automática o parâmetro da url para usar como argumento na view.

Nós podemos forçar a passagem desse argumento para view, isso pode
ser feito usando uma opção mais avançada de argumento no Drupal.

Na construção da view você deve ir até o fieldset Arguments,
escolher o tipo do argumento que você irá passar, no nosso caso nós
precisamos do argumento do tipo código do produto. Esse tipo de
argumento não existe por padrão, você precisa que o seu módulo crie
esse argumento. Para fazer isso você pode visitar http://drupal-br.org/tutoriais/prover-campos-personalizados-para-o-views e http://drupal.org/handbook/modules/views/api nesses endereços você pode descobrir como fazer isso.

Agora precisamos pegar o argumento 10 da url http://localhost/drupal/produto/10,podemos fazer isso através da função arg(x) do Drupal.

Para forçar a passagem do argumento 10 para view do tipo bloco,
basta ir no fieldset Arguments, abrir o fieldset Argument Handling Code
e inserir o código abaixo na textarea:

$args[0] = arg(1);<br /><br />return $args;

Esse código pega o parâmetro 10 da url, insere no vetor $args e
retorna o valor. Fazendo dessa forma, a view do tipo bloco consegue
obter o parâmetro.

Agora você consegue montar diversos blocos no seu site que trazem os conteúdos referentes ao produto.

Você pode usar isso para as mais diversas funcionalidades.

*

Publicado originalmente por Patrick Espake em Drupal Brasil

é a maior comunidade brasileira de profissionais Drupal, gerando conteúdo de qualidade também para o iMasters. http://drupal-br.org

Ver perfil