Блок в друпале - ничего не печатает, что не так с моим скриптом? - PullRequest
1 голос
/ 18 июля 2010

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

    <?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 ]

1 голос
/ 19 июля 2010

Я протестировал ваш код на сайте 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(), чтобы переводить и редактировать, и удалять.

0 голосов
/ 18 июля 2010

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

...