Como incorporar uma exibição dentro de um nó?

7

No Drupal 6, uma visualização pode ser incorporada em um nó da seguinte maneira:

$viewName = 'LatestNews';
print views_embed_view($viewName);

Isso não funciona no drupal 7. Qual é a função para incorporar visualizações no drupal 7?

Natkeeran
fonte
De acordo com este módulo de link de visualizações da documentação, esta função está igualmente disponível no Drupal 6 e 7. Tente com o segundo parâmetro como $ display_id da sua exibição.
precisa

Respostas:

5

O módulo EVA também pode anexar visualizações aos nós.

uwe
fonte
5

Para exibir uma exibição em um modelo de nó, use o seguinte código.

// Load the view. 
$view = views_get_view('machine_name_of_view');
// Set the active display.
$view->set_display('your_view_display_name');
// Set any needed argument.
$view->set_arguments(array(arg(0), arg(1)));
// Execute the view.
$view->execute();
// Render the view.
print $view->render();
Cyclonecode
fonte
11
Você deve sempre chamar $ view-> pre_execute (); antes de $ view-> execute ();
Teegan 04/04
@ Teegan - Não sabia disso, usando apenas executar parece funcionar, mas vou analisar pre_execute()antes de usar execute().
precisa saber é o seguinte
4

Por que não:

print views_embed_view($view_machine_name, $view_display_name, $arg1, $arg2);

onde $ arg, $ arg2, etc são opcionais.

Ou use o módulo Viewfield para incorporar uma vista como um campo.

Artur
fonte
VIEWFIELD !!!! AMD!!! Procurei dias por essa funcionalidade, tentando muitos módulos, isso me salva! : D obrigado!
DrCord
@DrCord, também veja os módulos Eva e views_field_view, eles são praticamente a mesma coisa.
timofey.com
Não consegui que o EVA fizesse o que queria.
11263 DrCord #
1

Uma solução é usar o Panelizer para substituir o conteúdo do respectivo nó.

Digamos, por exemplo, que você tenha várias páginas únicas que precisam de uma visualização anexada.

1) Você pode usar o tipo de conteúdo da página ou talvez criar um novo tipo de conteúdo que será especificamente exibido em painel.

2) Ative o Panelizer para esse tipo de conteúdo, configure-o como "Permitir opção de exibição por registro" para que você possa configurar vários monitores do panelizer que serão personalizados para cada página da página. (cada exibição do painelizador pode ter seu próprio conjunto de visualizações anexado)

3) A partir daqui, você simplesmente cria uma visualização (eu gosto de usar os painéis de conteúdo para isso) e a adiciona à exibição de conteúdo do Panelizer de sua escolha.

Isso permite reutilizar um único tipo de conteúdo que realmente não precisa de seu próprio conjunto de campos, mas pode ser usado para fazer referência a outras entidades (como um campo) ou a vistas de referência.

Jogue no módulo Parágrafos e você terá um tipo de conteúdo de Canivete suíço. Falando nisso, seria um nome perfeito para o tipo de conteúdo personalizado usado para esse fim ... Hmm ....

phil
fonte
0

Vamos apenas mencionar que o primeiro parâmetro é o nome da exibição, o segundo nome de exibição e depois disso você pode passar os parâmetros de filtro contextual.

Para que "$ node-nid", o terceiro parâmetro dependa da sua visualização ... o que ele espera do primeiro filtro contextual - id não precisa ser id do nó. Obviamente, você não está limitado a um parâmetro - passe quantos você tiver na exibição ... ou nenhum se sua exibição não tiver filtros contextuais.

MilanG
fonte
0

Um módulo Drupal 7 e 8 muito configurável é o views_field_formatter, que permite incorporar uma visualização como formatador de campos

GiorgosK
fonte