2010-07-18 3 views
1

나는 액세스 권한을 가진 사용자를위한 편집 및 삭제 버튼과 나머지 사용자를위한 버튼을 보여주고 싶은 블록이 있습니다. 이것은 내가 갱신 권한을 가진 사용자를 위해 사용하고 스크립트입니다 :Drupal의 블록 - 아무것도 인쇄하지 않습니다. 내 스크립트의 문제점은 무엇입니까?

<?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>'; 

}} 
?> 

이 내가 다른 블록에 블록 가시성에 사용 된 것과 같은 스크립트이며, 그것은 작동합니다. 왜 여기서 일하지 않는거야?

답변

1

은 내가 드루팔 (6) 사이트에 코드를 테스트하고이 링크가 생성 URL의 경우를 제외하고 잘 작동하는 것 같다. 나는 "편집"과 "삭제"라는 두 개의 링크를 보았습니다. 영역의 블록을 활성화했는지, 영역이 page.tpl.php에 표시되어 있습니까? (당신은 같은 지역에서 다른 블록을 넣어 것을 확인하고이 나타나지 않는 경우에 볼 수 있습니다.)

올바른 링크를 얻으려면이 같은 드루팔의 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

나는 지금 문제를보고, 나는 모듈을 사용하여 블록을 완화시킨다. 어떤 이유로 든 빈 공간을 출력합니다. 모듈을 비활성화 할 때 코드가 작동했습니다. – Toxid

0

블록은 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

+0

아, 알겠습니다. 이제이 코드를 사용했습니다 : t ('내가 선택 제목입니다'), '내용'=> ' 나는 내용이다 '); }} ?> 그래도 아무 것도 블록에 반환되지 않습니다. – Toxid

+0

당신은 hook_block을 사용하고 있습니까? 아니면 PHP 입력 필터를 사용하고 있습니까? – berkes

+0

PHP 입력 필터를 사용하고 있습니다. 그러면 그것은 다른 접근 방식입니까? – Toxid