Blocca in Drupal: non stampa nulla, cosa c'è che non va nel mio script?
-
17-09-2020 - |
Domanda
Ho un blocco in cui desidero mostrare i pulsanti di modifica ed eliminazione per gli utenti con accesso e altri pulsanti per il resto degli utenti.Questo è lo script che sto utilizzando per gli utenti con autorizzazione di aggiornamento:
<?php
if(arg(0) == 'node' && is_numeric(arg(1))){
//load $node object
$node = node_load(arg(1));
//check for node update access
if (node_access("update", $node)){
print '<p><a href=\"./edit\">edit</a> <a href=\"./delete\">delete</a></p>';
}}
?>
Questo è lo stesso script che ho usato per la visibilità dei blocchi su altri blocchi e funziona.Perché non funziona qui?
Soluzione
Ho testato il tuo codice su un sito Drupal 6 e sembra funzionare bene, ad eccezione degli URL dei collegamenti che crea.Vedo due collegamenti denominati "Modifica" e "Elimina".Sei sicuro di aver abilitato il blocco in una regione e che la regione sia visualizzata in Page.tpl.php?(Puoi verificarlo mettendo un altro blocco nella stessa regione e vedi se si presenta.)
Per ottenere i collegamenti corretti, consiglio di utilizzare la funzione l()
di Drupal come questa:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
//load $node object
$node = node_load(arg(1));
//check for node update access
if (node_access("update", $node)){
$nid = $node->nid
print l(t('edit'), "node/$nid/edit") .' '. l(t('delete'), "node/$nid/delete");
}
}
?>
.
Nota che sto anche utilizzando la funzione t()
per rendere "modifica" e "Elimina" traducibile.
Altri suggerimenti
Un blocco non dovrebbe print
Ma return
.E dovrebbe restituire un array:
return array(
'subject' => t('i am an optional title'),
'content' => 'i am the content');