1

アクセス権のあるユーザーには編集ボタンと削除ボタンを表示し、残りのユーザーには他のボタンを表示したいブロックがあります。これは、更新権限を持つユーザーに使用しているスクリプトです。

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

}}
?>

これは、他のブロックのブロックの可視性に使用したスクリプトと同じで、機能します。ここで機能しないのはなぜですか?

4

2 に答える 2

1

Drupal 6 サイトでコードをテストしましたが、リンク URL が作成されることを除けば、問題なく動作するようです。「編集」と「削除」という名前の 2 つのリンクが表示されます。領域でブロックを有効にしたこと、およびその領域が page.tpl.php に表示されていることは確かですか? (同じ領域に別のブロックを配置して、表示されるかどうかを確認できます。)

正しいリンクを取得するには、Drupal のl()関数を次のように使用することをお勧めします。

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

t()「編集」と「削除」を翻訳可能にする関数も使用していることに注意してください。

于 2010-07-18T22:08:34.580 に答える
0

ブロックはすべきではありませprintreturn。そして、配列を返す必要があります。

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

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

于 2010-07-18T12:27:01.040 に答える