Quando criamos sites é muito comum querermos que alguns blocos laterais sejam contextuais. Dependendo da página visualizada o bloco lateral deve exibir um determinado conteúdo. Um exemplo clássico é um site de jornal ou revista que exibe, num bloco lateral, conteúdo relacionado à notícia em questão. Esse tipo de relacionamento pode vir, por exemplo, das categorias da notícia atual ou mesmo da URL. Esse último caso é o objeto desse breve tutorial. Devo acrescentar que todo esse tutorial é feito com base no Drupal 7.

Suponhamos que uma notícia nesse site de exemplo tenha sua URL formada da seguinte maneira: http://www.example.com/// e queremos utilizar a localidade da notícia e o ano da notícia para exibir, por exemplo, outras notícias veiculadas na mesma época e localidade.

Com o Drupal filtrar conteúdo com essa estrutura é bastante trivial. Para isso precisamos ter, acima de tudo, o conteúdo cadastrado já com esses campos (ou alguma outra forma de se formar essa URL e categorizar o conteúdo) e o módulo Views instalado.

Com o módulo Views criaremos o bloco que exibirá o conteúdo de uma determinada localidade num determinado ano. Esse tutorial não irá abranger a criação de uma View, apenas como configurar o bloco para receber esses parâmetros.

Como vimos no exemplo de URL acima, o primeiro filtro é a localidade. No meu exemplo eu usei simplesmente a UF (Unidade da Federação ou estado se preferir) como filtro. Para isso, antes de criar a View, no meu tipo de conteúdo Artigo eu adicionei um campo de UF. O segundo filtro é o ano e assim, da mesma forma que com a UF, eu adicionei ao meu tipo de conteúdo Artigo um campo chamado Ano (eu poderia ter pego da data de criação, mas preferi um campo para fins didáticos). Assim todos os meus artigos agora tem, além dos dados normais, dois campos extra: UF e ano. Por fim eu criei alguns artigos e preenchi também esses dois novos campos.

O passo seguinte é a criação da View. Não vou passar aqui todo o processo, apenas basta dizer que você deve criar a View normalmente como se fosse exibir todos os itens. Em seguida iremos acrescentar os campos de filtros contextuais. Para isso você deve ir na seção avançada da View (Advanced em inglês) e clicar no botão "adicionar" da seção "Filtros contextuais" ("Contextual filters" em inglês) e adicionar o primeiro filtro. Observe a URL:

http://www.example.com///

Nesse exemplo de URL eu espero dois campos para o filtro, sendo o primeiro a localidade (UF) da notícia e o segundo o ano. Lembre-se que todos os artigos têm esses dois dados preenchidos, assim temos que adicionar um filtro primeiro para a UF e em seguida para o ano como a seguir:

Imagem de seleção de campo

Imagem de configuração do filtro

Quando você clica no botão de adicionar, abre uma janela onde você pode escolher o campo. No meu caso o campo se chama Estado. Ao selecionar esse campo, você deve escolher, na seção "Quando o valor do filtro NÃO está disponível" ("When the filter value is NOT available" em inglês) a opção "Fornecer um valor padrão" ("Provide default value" em inglês) e em Tipo a opção "Valor bruto da URL" ("Raw value from URL" em inglês).

Por último você escolhe o "Componente do caminho" ("Path component" em inglês) que corresponde a posição do elemento que será usado como valor de filtro para aquele campo. Se você olhar para o exemplo de URL, após o endereço do site o elemento da UF é o primeiro item e o ano o segundo item. Então no caso do filtro por estado, basta deixar o "Componente do caminho" como 1.

Para filtrar pelo ano, basta repetir o processo com o campo do ano, lembrando que o "Componente do caminho" para esse item é 2, já que na nossa URL de exemplo esse é o segundo campo.

No final da página da view você pode testar se está correto, indo na parte de pré-visualização. Basta digitar os campos separados por barra (/). Por exemplo supondo que você tenha algum conteúdo criado para SP em 2010, basta digitar "SP/2010" e clicar no botão "Atualizar preview" ("Update preview" em inglês).

Espero que isso ajude. Se ficou alguma dúvida ou você encontrou algum erro, deixe um comentário.