Eu criei um bloco de exibição, cujo nome da máquina é "notícias".
Como exibi-lo usando module_invoke()
e o nome da máquina da exibição?
Use views_embed_view()
:
echo views_embed_view('view_machine_name', 'block_1');
Você pode descobrir o nome de exibição clicando na guia e verificando seu nome na barra de endereços do seu navegador: #views-tab-block_1
fornece block_1
.
{{ drupal_view('view_machine_name', 'block_1') }}
Se você deseja passar um parâmetro para a visualização, use:
Por exemplo:
ou:
fonte
a resposta de tostinni é a correta na maioria dos casos. No entanto, se você deseja incluir o título da exibição, é um pouco mais feio.
A partir da
views_embed_view()
documentação:Por exemplo:
Atualizado : @rojosnow observou que os documentos apontam que você deve obter a visualização antes de ligar,
get_title()
então eu virei essas duas linhas.fonte
Isso funcionou para mim:
// e chamou em html assim //
fonte
Observe que, para mim, o bloco padrão (sem nome) é chamado em
block
vez deblock_1
:fonte
Também com base na resposta de tostinni:
Se você não deseja que nenhum HTML seja exibido, se a exibição não tiver resultados. Além disso, adicione um título, mas apenas se houver resultados.
fonte
Você pode renderizar seu bloco em vez de renderizar as visualizações pelo código a seguir.
fonte
De minha própria experiência, você pode transformar um caminho em um título ou conteúdo de exibição com uma função como a seguinte.
Para renderizar a exibição, use em
$view->render()
vez de$view->get_title()
.Com certeza, até eu ligar corretamente
$view->execute()
, nada funcionou direito. Eu receberia cadeias vazias (talvez nulas) como valores de retorno.fonte