Mostrar elementos de menú con acceso limitado a usuarios anónimos

9

Tengo un sitio web que utiliza un módulo privado para configurar el acceso al contenido y, por supuesto, algunas de mis páginas tienen elementos de menú. Ahora, si configuro una página para que sea privada, solo los usuarios con el permiso adecuado podrían ver eso, lo cual es genial y lo que quería.

Pero tengo un pequeño problema con los elementos del menú, desaparecen si el contenido que se les asignó no es público (es decir, la página que se les asignó es Privada), está bien, pero me gustaría poder mostrar esos elementos. en la navegación, por lo que si el usuario hace clic en ellos, los llevará a la página de inicio de sesión y les pedirá que ingresen sus detalles para ver esa página en particular.

Básicamente, me gustaría cambiar el comportamiento de los elementos del menú de la forma en que siempre estarán visibles para los miembros anónimos y registrados del sitio web, pero cuando haga clic en ellos, podrá ver la página (si está conectado en) o ser redirigido a la página de inicio de sesión (si es anónimo)

Encontré esta solución que no es la mejor para mí, ya que tengo muchas páginas como esa, así que estoy buscando un mejor enfoque. Incluso he probado el módulo de visibilidad del elemento de menú , ¡pero eso tampoco ayudó!

¿Cómo logro esto por favor?

Luca

Luca
fuente
Tengo un código en github.com/bbinkovitz/derpl/tree/master/foreshadow_menu que podría serle útil. Probablemente tendrá que cambiar algunos valores o nombrar sus menús de la misma manera que lo hice, pero podría ayudarlo a comenzar.
beth

Respuestas:

4

Tu problema es bastante común.

Aquí hay una discusión sobre cómo implementar tal truco en Drupal 6 y 7 y 8: http://drupal.org/node/300607

Drupal 6 (y 7) eliminó la capacidad de mostrar elementos de menú a los que el usuario no tiene acceso. Sin embargo, en algunos casos es deseable mostrar un elemento del menú aunque el usuario no tenga acceso al elemento del menú. Por ejemplo, si utiliza un mecanismo de autenticación que intenta adquirir la autenticación cuando se muestra un 403, aún desea mostrar el elemento del menú para que los usuarios tengan la oportunidad de proporcionar credenciales para iniciar sesión.

La solución para Drupal 7 se puede encontrar aquí: http://drupal.org/node/300607#comment-4450062

Si prefiere el módulo listo, puede descargarlo aquí https://github.com/systemseed/always_visible

Eugene Fidelin
fuente
Muchas gracias. Ojalá tuvieran esta opción integrada en Drupal
Luca
1

Tuve una situación similar en la que las páginas tenían que aparecer en el sistema de menús, pero el contenido solo debería aparecer para los usuarios registrados. La solución final fue muy simple y continúa funcionando.

En lugar de controlar el acceso al contenido, la plantilla de nodo verifica si el usuario ha iniciado sesión. Si es así, muestra el contenido. De lo contrario, aparece texto con enlaces para iniciar sesión o registrarse.

No se redirigen automáticamente, así que si eso es crítico, entonces esta no es la solución.

El código en pocas palabras:

<?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
fuente
Gracias, pero esa no sería una buena solución por muchas razones, una en la que estoy usando un tipo diferente de sistema de plantillas y quiero tener acceso al contenido, por lo que al enumerar contenido, es decir, en Vistas, respetaría el acceso.
Luca
Ah, sí. Espero que encuentres una respuesta. Parece que sería un caso de uso bastante común.
keva