Drupalのブロック - プリントは何もない、スクリプトの何が問題なのですか?

StackOverflow https://stackoverflow.com/questions/3275429

  •  17-09-2020
  •  | 
  •  

質問

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

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

}}
?>
.

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

役に立ちましたか?

解決

私は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()関数を使用して "編集"と "delete"を翻訳できます。

他のヒント

ブロックはprintではなくreturnではありません。そしてそれは配列を返すべきです:

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top