Блок в 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-адресов ссылок, которые он создает.Я действительно вижу две ссылки с именами "редактировать" и "удалить".Вы уверены, что включили блокировку в регионе и что регион отображается в 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() функция, позволяющая сделать "редактировать" и "удалять" переводимыми.

Другие советы

Блок не должен генеракодицетагкод, а генеракодицетагкод.И это должно вернуть массив:

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