Bloc dans drupal - imprime rien, quel est le problème avec mon script?
-
17-09-2020 - |
Question
J'ai un bloc que je veux montrer, modifier et supprimer des boutons pour les utilisateurs avec un accès, et d'autres boutons pour le reste des utilisateurs.C'est le script que j'utilise pour les utilisateurs avec autorisation de mise à jour:
<?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>';
}}
?>
C'est le même script que j'ai utilisé pour bloquer la visibilité sur d'autres blocs, et il fonctionne.Pourquoi n'est-il pas de travail ici?
La solution
J'ai testé votre code sur un site Drupal 6 et il semble bien fonctionner, sauf pour le lien url qu'il crée.Je ne vois deux liens nommé "modifier" et "supprimer".Êtes-vous sûr que vous avez activé le bloc dans une région, et que la région est affiché dans page.tpl.php?(Vous pouvez le vérifier en mettant un bloc dans la même région et de voir si il s'affiche.)
Pour obtenir les liens corrects, je recommande l'utilisation de Drupal l()
fonction comme ceci:
<?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");
}
}
?>
A noter que je suis aussi à l'aide de la t()
la fonction de faire "modifier" et "supprimer" traduisible.
Autres conseils
Un bloc ne devrait pas print
mais return
.Et il doit retourner un tableau:
return array(
'subject' => t('i am an optional title'),
'content' => 'i am the content');