Блок в друпале - ничего не печатает, что не так с моим скриптом?

У меня есть блок, в котором я хочу показать кнопки редактирования и удаления для пользователей с доступом и другие кнопки для остальных пользователей. Это скрипт, который я использую для пользователей с разрешением на обновление:

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

}}
?>

Это тот же сценарий, который я использовал для видимости блоков в других блоках, и он работает. Почему это не работает здесь?

2 ответа

Решение

Я проверил ваш код на сайте Drupal 6, и он, кажется, работает нормально, за исключением ссылок, которые он создает. Я вижу две ссылки с именами "изменить" и "удалить". Вы уверены, что включили блок в регионе, и этот регион отображается в page.tpl.php? (Вы можете проверить это, поместив другой блок в тот же регион и посмотреть, появится ли он.)

Чтобы получить правильные ссылки, я рекомендую использовать Drupal's 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() функция, чтобы сделать "редактировать" и "удалить" переводимыми.

Блок не должен 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

Другие вопросы по тегам