Pergunta

Eu tenho um bloco que eu quero mostrar botões editar e apagar para os usuários com acesso, e outros botões para o resto dos usuários.Este é o script que estou usando para os usuários com permissão de atualização:

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

}}
?>

Este é o mesmo script que eu usei para bloquear a visibilidade em outros blocos, e ele funciona.Por que não está trabalhando aqui?

Foi útil?

Solução

Eu testei o seu código em um site Drupal 6 e parece funcionar bem, exceto para os urls do link que ele cria.Eu vejo dois links chamado "editar" e "excluir".Tem certeza de que você ativou o bloco em uma região, e que a região é apresentada no page.tpl.php?(Você pode verificar que, ao colocar o bloco na mesma região e ver se ele mostra para cima.)

Para obter os links corretos, eu recomendo usar o Drupal é l() função como esta:

<?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");
  }
}
?>

Note que eu também estou usando o t() função para fazer a "editar" e "excluir" traduzível.

Outras dicas

Um bloco não deve print mas return.E ele deve retornar um array:

return array(
  'subject' => t('i am an optional title'),
  'content' => 'i am the content');

http://api.drupal.org/api/function/hook_block/6

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top