Inserire blocco vista dentro un nodo con views_embed_view

9 contenuti / 0 new
Ultimo contenuto
Inserire blocco vista dentro un nodo con views_embed_view

Ciao a tutti,
vorrei inserire un blocco di una vista dentro un nodo, ho visto che è possibile usando la funzione views_embed_view, ho provato mettendo nel nodo

<?php
 
print views_embed_view('immagini_nodo','block_2', $node->nid);
?>
dove "immagini_nodo" è il Block name e "block_2" è Machine Name; ho provato anche a cambiare con altri valori ma continuo a non vedere il blocco.
Mi potete dire dove sbaglio? Se devo attivare altre cose?
grazie mille

Drupal Version:

dove "immagini_nodo" è il Block name
non era il nome("macchina") della view che deve andarci come primo parametro?

Negli esempi che ho trovato in rete ho sempre visto "block_1" o "block_2" come secondo parametro così ho ipotizzato fosse il machine name, proverò ad invertirli e vedere se funziona.
grazie

da quello che so il primo parametro è il nome macchina della view..il secondo è il "display" cioè la visualizzazione, es. block,page,ecc..che trovi sotto ad "altri settaggi" (qualcosa di simile a destra)...

Ciao ho provato anche invertendo e modificando altri valori ma continua a non funzionare, proverò a chiedere a quelli di drupal.org, altrimenti metto tutto nel nodo

Ciao,
se date un'occhiata alle API per views_embed_view noterete come il primo parametro debba essere il nome macchina della vista e non il node del blocco, mentre il secondo parametro è il display_id della vista che volete caricare.

Quando state modificando una vista e non vi trovate nel display Master ('default') il path sarà simile al seguente:
admin/structure/views/view/machine_name/edit/display_id
Nel tuo caso sarà qualcosa del genere:
admin/structure/views/view/view_immagini/edit/block

Quindi, ipotizzando che 'block_1' sia il tuo display_id e il nome macchina della vista sia 'view_immagini' la chiamata diventa:

<?php
print views_embed_view('view_immagini', 'block_1', $node->nid);
?>

Ciao, ho risolto, il codice era giusto, ho fatto dei test con altri blocchi e funzionava, solo con quello no, poi sono riuscito a capire che andava in conflitto con un altro blocco della stessa vista; mi sono accorto che il template della vista prendeva quello generale e non quello specifico di quella vista del blocco.
Grazie a tutti per l'aiuto

Ciao, grazie al vostro post sono riuscito a ottenere quello che volevo, anche se ottengo sempre queste righe di errore:

Notice: Undefined variable: node in eval() (linea 2 di /home4/hosting/public_html/nomesito/modules/php/php.module(80) : eval()'d code).
Notice: Trying to get property of non-object in eval() (linea 2 di /home4/hosting/public_html/nomesito/modules/php/php.module(80) : eval()'d code).
Notice: Undefined variable: node in eval() (linea 2 di /home4/hosting/public_html/nomesito/modules/php/php.module(80) : eval()'d code).
Notice: Trying to get property of non-object in eval() (linea 2 di /home4/hosting/public_html/nomesito/modules/php/php.module(80) : eval()'d code).

Riesco a vedere il blocco dentro al mio nodo ma questo errore è un po fastidioso, il comando che eseguo è:

<?php
print views_embed_view('news', 'block', $node->nid);
?>

EDIT: Guardando il codice di php.module ho capito che forse l'errore viene generato da modulo help, potrebbe essere?

EDIT2: Ho risolto, usando questo codice:

<?php
print views_embed_view('news', 'block');
?>

Ciao, questo post mi è stato molto utile! Ho un problema invece con l'inserimento di un normale blocco:
dalla documentazione di drupal vedo che devo usare questo codice

<?php
//D7
$block = module_invoke('module_name', 'block_view', 'block_delta');
print
render($block['content']);
?>

Seguendo le stesse indicazioni di questo topic ho provato ad aggiungere un blocco del modulo "adsense", l'url di gestione del blocco è questo:
admin/structure/block/manage/adsense_managed/1/configure

Pertanto ho adattato il codice così:

<?php
    $block
= module_invoke('adsense', 'adsense_managed', '1');
   
render($block['content']);
?>

Ma non funziona... avete qualche idea? Grazie!