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을 사용하는 것이 좋습니다. 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');
.
제휴하지 않습니다 StackOverflow