drupal inserire blocco in nodi creati da un utente specifico
Salve a tutti ragazzi, ho necessità di inserire in drupal 7 un blocco che non sia, però, visibile su tutte le pagine del mio sito. Il blocco dovrà essere visibile soltanto nelle pagine (nodi) creati da uno specifico utente. Come posso fare? P.S.: credo di dover utilizzare il campo "Pagine nelle quali il seguente codice PHP restituisce TRUE (per utenti esperti)" ma.. non so assolutamente quale codice devo andare a riportare, in quel campo :(

Risposte
Ciao, personalmente
Ciao, personalmente sceglierei Views, creando un blocco che come Argomento prende il nid del nodo corrente e come Filtro Autore nodo = Utente desiderato.
Potresti sennò usare qualcosa del genere:
<?php// id autore desiderato [da aggiustare in base alle tue necessità]
$idutente = 1;
// controlla che il path sia del tipo node/nid
if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) =='') {
// carica l'oggetto nodo
$node = node_load(arg(1));
// controlla che il nodo esista e l'autore sia quello desiderato
return ($node && $node->uid == $idutente);
}
// fallback
return FALSE;
?>
Scusa blackice78, ma non
Scusa blackice78, ma non sarebbe meno dispendioso leggere solo l'utente anzichè tutto l'oggetto node?
mi sbaglio?
Forse ho interpretato male le
Forse ho interpretato male le specifiche ma così non controlli l'autore del nodo corrente.
La richiesta "Il blocco dovrà essere visibile soltanto nelle pagine (nodi) creati da uno specifico utente" credo implichi che tu debba controllare il nodo attualmente visitato (node_load con nid dal path corrente), estrarne l'autore ($node->uid) e controllare se è quello voluto (esempio $idutente = 5).
Il mio codice ritorna (spero :-D) vero se l'autore del nodo che stai visitando è ha uid 5.
Il tuo codice ritorna sempre vero se l'utente loggato ha uid 5.
Perdonatemi... forse mi sono
Perdonatemi... forse mi sono spiegato male. Ciò che vorrei fare è inserire un blocco in TUTTII i nodi creati da un utente "X". Il blocco dovrà esser vidibile a tutti gli utenti che accedono al sito... ma soltanto nei nodi creati, appunto, da tale utente "X".
Ok, allora ho capito bene, il
Ok, allora ho capito bene, il codice che ho postato dovrebbe fare al caso tuo, aggiusta solo $idutente = "X".
Perfetto! Ci sono riuscito,
Perfetto! Ci sono riuscito, il codice è esatto! Grazie infinite, ragazzi : )
Mmm... e la cosa inversa,
Mmm... e la cosa inversa, invece, come è possibile ottenerla? NON visualizzare determinati blocchi solo su nodi creati da specifici autori "X, Y, Z..."?
Prova qualcosa tipo: <?php//
Prova qualcosa tipo:
<?php// array di uid degli autori da escludere [da aggiustare in base alle tue necessità]
$escludi = array(1, 3, 5);
// controlla che il path sia del tipo node/nid
if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) =='') {
// carica l'oggetto nodo
$node = node_load(arg(1));
// controlla che il nodo esista e l'autore non sia tra quelli da escludere
return ($node && !in_array($node->uid, $escludi));
}
// fallback
return FALSE;
?>
il codice dovrebbe ritornare TRUE (blocco visibile) se ci trova su un nodo il cui l'autore NON è tra quelli esclusi.
benissimo... perfetto!
benissimo... perfetto! Funziona tutto! Grazie davvero blackice78
[...] // fallback return
[...]
// fallback
return TRUE;
?>