Nell'Handbook di Drupal.org viene spiegato come inserire una vista (Modulo Views) in una pagina di template di Drupal (page.tpl.php, node.tpl.php), in un nodo o in un blocco abilitato a ricevere contenuti PHP. Il codice suggerito è il seguente:
<?php
//load the view by name
$view = views_get_view('sample_view');
//output the view
print views_build_view('embed', $view);
?>Abbiamo già visto come inserire un blocco all'interno di un nodo, ma come possiamo fare il contrario, ovvero andare ad inserire il contenuto di un nodo in un blocco o in un secondo nodo?
Se intendiamo utilizzare di frequente questa possibilità e vogliamo una soluzione automatica e facile, esiste un modulo che fa proprio questo. Si chiama Node As Block e questa è la descrizione che ne da il suo autore:
Se anche voi non siete proprio dei fan della funzionalità dei Messaggi di Log di Drupal (quella che aggiunge un campo "Log Message" a ciascuna node form per intenderci), ecco un breve snippet php da aggiungere al file template.php del vostro tema per far si che la textarea del Messaggio di Log non appaia più:
/**
* Override node form
*/
function phptemplate_node_form($form) {
// Remove 'Log message' text area
$form['log']['#access'] = FALSE;
return drupal_render($form);
}Fatene buon uso ;)
E' davvero semplice in Drupal differenziare i contenuti da mostrare agli utenti anonimi (guests) da quelli per gli utenti registrati (authenticated). Basterà adattare le poche righe di php che seguono:
<?php
global $user;
if (!$user->uid) { ?>
<div>contenuti per gli anonimi</div>
<?php } else { ?>
<div>contenuti per gli utenti registrati</div>
<?php } ?>Avete mai avuto bisogno di reindirizzare i vostri visitatori ad una certa pagina non appena questi hanno completato un certo task (ad esempio dopo che sono stati invitati a registrarsi sul sito)?
Farlo é semplice:
basta tradurre il link nel vostro file PHPTemplate corrispondente al content-type in uso (es: node.tpl.php) da:
http://www.miosito.com/user/register
In Drupal mi capita di frequente di voler mostrare i termini ($terms) di un nodo divisi per singolo vocabolario ($vid). Questo può essere utile qualora si vogliano separare o organizzare i propri termini, non mostrarne alcuni, o comunque evitare che vengano presentati tutti assieme su un'unica riga.
<?php
/**
* The following simple snippet
* displays different information to anonymous/logged in users within a page.
*
* This works with drupal 4.5 and drupal 4.6
*/
global $user;
if ($user->uid) {
return "This message is only visible for logged-in users.";
}
if (!$user->uid) {
return "This message is only visible for not-logged-in users.";
}
?><?php
$block = module_invoke('module_name', 'block', 'view', '0');
print $block['content'];
?>Come utilizzare i link dei termini ($terms) associati a ciascun nodo di Drupal per navigare altri contenuti dello stesso autore taggati con lo stesso termine?
Il codice di seguito permette di far puntare i termini di un nodo ad una view personalizzata (che chiameremo "blogterms") contenente due argomenti: lo user id dell'autore e il term id.