Frage

Ich habe einen Block, in dem ich Schaltflächen zum Bearbeiten und Löschen für Benutzer mit Zugriff und andere Schaltflächen für den Rest der Benutzer anzeigen möchte.Dies ist das Skript, das ich für die Benutzer mit Update-Berechtigung verwende:

    <?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>';

}}
?>

Dies ist das gleiche Skript, das ich für die Blocksichtbarkeit in anderen Blöcken verwendet habe, und es funktioniert.Warum funktioniert es hier nicht?

War es hilfreich?

Lösung

Ich habe Ihren Code auf einer Drupal 6-Site getestet und er scheint gut zu funktionieren, bis auf die Link-URLs, die er erstellt.Ich sehe zwei Links mit den Namen „Bearbeiten“ und „Löschen“.Sind Sie sicher, dass Sie den Block in einer Region aktiviert haben und dass die Region in page.tpl.php angezeigt wird?(Sie können dies überprüfen, indem Sie einen anderen Block in derselben Region platzieren und prüfen, ob er angezeigt wird.)

Um die richtigen Links zu erhalten, empfehle ich die Verwendung von Drupal l() funktionieren so:

<?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");
  }
}
?>

Beachten Sie, dass ich auch die verwende t() Funktion um „bearbeiten“ und „löschen“ übersetzbar zu machen.

Andere Tipps

Ein Block sollte nicht print Aber return.Und es sollte ein Array zurückgeben:

return array(
  'subject' => t('i am an optional title'),
  'content' => 'i am the content');

http://api.drupal.org/api/function/hook_block/6

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top