Mostrar itens de menu com acesso limitado a usuários anônimos

9

Eu tenho um site que usa o módulo Privado para definir o acesso ao conteúdo e, é claro, algumas das minhas páginas têm itens de menu. Agora, se eu definir uma página como privada, apenas usuários com permissão adequada poderão ver isso, o que é ótimo e o que eu queria.

Mas estou com alguns problemas com os itens de menu, eles desaparecem se o conteúdo atribuído a eles não for público (por exemplo, a página atribuída a eles é Privada), isso é bom, mas eu gostaria de poder mostrar esses itens ainda na navegação, portanto, se o usuário clicar neles, ele será direcionado para a página de login, solicitando que eles insiram seus detalhes para ver a página em particular.

Então, basicamente, eu gostaria de mudar o comportamento dos itens de menu da maneira que eles sempre serão visíveis para membros anônimos e registrados no site, mas quando você clica neles, poderá ver a página (se estiver logado in) ou ser redirecionado para a página de login (se anônimo)

Encontrei esta solução que não é a melhor para mim, pois tenho muitas páginas como essa, então estou procurando uma abordagem melhor. Eu até tentei o módulo de visibilidade do item de menu , mas isso também não ajudou!

Como faço para conseguir isso, por favor?

Luca

Luca
fonte
Eu tenho algum código em github.com/bbinkovitz/derpl/tree/master/foreshadow_menu que pode ser útil para você. Você provavelmente terá que alterar alguns valores ou nomear seus menus da mesma maneira que eu fiz, mas isso pode ajudar você a começar.
beth

Respostas:

4

Seu problema é bastante comum.

Aqui está a discussão sobre como implementar esse truque nos Drupal 6 e 7 e 8: http://drupal.org/node/300607

O Drupal 6 (e 7) removeu a capacidade de exibir itens de menu aos quais o usuário não tem acesso. No entanto, em alguns casos, é desejável mostrar um item de menu, mesmo que o usuário não tenha acesso ao item de menu. Por exemplo, se você usar um mecanismo de autenticação que tente obter autenticação quando um 403 for exibido, você ainda deseja exibir o item de menu para que os usuários tenham a chance de fornecer credenciais para efetuar login.

A solução para o Drupal 7 pode ser encontrada aqui: http://drupal.org/node/300607#comment-4450062

Se você preferir o módulo pronto - faça o download aqui https://github.com/systemseed/always_visible

Eugene Fidelin
fonte
Muito obrigado. Gostaria que eles tivessem essa opção Drupal embutido
Luca
1

Eu tive uma situação semelhante em que as páginas tinham que aparecer no sistema de menus, mas o conteúdo deveria aparecer apenas para usuários logados. A solução final foi muito simples e continua a funcionar.

Em vez de controlar o acesso ao conteúdo, o modelo do nó verifica se o usuário está conectado. Nesse caso, ele exibe o conteúdo. Caso contrário, o texto aparecerá com links para efetuar login ou registrar-se.

Eles não são redirecionados automaticamente; portanto, se isso é crítico, essa não é a solução.

O código em poucas palavras:

<?php  
global $user;       
if ( $user->uid ) :
print render($content);
// or in some situations, display a view;
else : 
print 'Please <a href="https://drupal.stackexchange.com/user/login">log in</a> or <a href="https://drupal.stackexchange.com/user/register">register</a> etc etc.'
endif; 
?>
keva
fonte
Obrigado, mas essa não seria uma boa solução por muitas razões, uma que eu estou usando um tipo diferente de sistema de modelos e desejo ter acesso ao conteúdo, portanto, ao listar conteúdo, ou seja, no Views, isso respeitaria o acesso.
Luca
Ah sim. Espero que você encontre uma resposta. Parece que seria um caso de uso bastante comum.
Kev