Drupalのブロック - プリントは何もない、スクリプトの何が問題なのですか?
-
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');
.
所属していません StackOverflow