views

Subscribe to RSS - views

Imprimir uma views dentro de um node

Como a própria documentação diz, o snippet anterior existe para realizar tal tarefa de uma maneira simples e fácil:

This function is meant to be called from PHP snippets, should one wish to embed a view in a node or something. It's meant to provide the simplest solution and doesn't really offer a lot of options, but breaking the function apart is pretty easy, and this provides a worthwhile guide to doing so.

Primeiramente será necessário criar ou editar o template.php do seu tema. Vamos utilizar a função template_preprocess_node(), a qual é utilizada para processar as variáveis dos nodes antes de serem enviadas para o template.

O snippet a seguir verifica se o tipo de conteúdo é "artigos" e cria uma nova variável chamada $outros_artigos.

// Substitua SEUTEMA pelo nome do seu tema
function SEUTEMA_preprocess_node(&$vars) {
  if($vars['type'] == 'artigos') {
    $vars['outros_artigos'] = views_embed_view('artigos', 'block_1');
  }
}

Pegar o resultado de uma views dinamicamente

Com o snippet a seguir é possível pegar o resultado de uma views dinamicamente e manipulá-lo de acordo com sua necessidade.

O primeiro parâmentro a ser informado é o nome da view e o segundo o ID do display. No meu exemplo utilizo uma view chamada "artigos" e o ID do meu display é block_1.

$result = views_get_view_result('artigos', 'block_1');
// dsm($result);

Caso seja necessário também é possível enviar outros argumentos para a view:

$result = views_get_view_result('artigos', 'block_1', arg(1), arg(2));
// dsm($result);

Caso tenha o módulo Devel instalado, utilize a função dsm($result); para ver o resultado como abaixo:

Pegar o resultado de uma views dinamicamente