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。我确实看到了两个名为“编辑”和“删除”的链接。您确定在某个区域中启用了该块,并且该区域显示在 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

块不应该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

于 2010-07-18T12:27:01.040 回答