Блок в друпале - ничего не печатает, что не так с моим скриптом?
У меня есть блок, в котором я хочу показать кнопки редактирования и удаления для пользователей с доступом и другие кнопки для остальных пользователей. Это скрипт, который я использую для пользователей с разрешением на обновление:
<?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');