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