2012-05-08 13 views
5

En Joomla antes de la 1.6 que podría fijar un elemento de menú a pública, y su contenido: un artículo, por ejemplo, a registradas .muestran un artículo de Joomla para los usuarios registrados, o una pantalla de inicio de sesión si no se registran en sí

Esto llevó a una situación en la que las personas podían ver el enlace a un artículo en el menú cuando no iniciaban sesión, pero obtenían un componente de inicio de sesión cada vez que lo hacían clic. Y después de eso vieron el artículo.

En 1.7 estas mismas acciones conducen a una situación en la que cuando hago clic en el enlace, la pantalla del componente simplemente permanece vacía.

¿Cómo puedo obtener artículos registrados para mostrar una pantalla de inicio de sesión cuando el usuario final no ha iniciado sesión con suficientes derechos? Antes era muy fácil y parece que no puedo hacerlo funcionar ahora.

Respuesta

9

Voy a responder mi propia pregunta, porque estoy seguro de que las personas necesitarán esto en el futuro, y mi solución solo implica unas pocas reglas de código adicional y luego puedes configurar cada artículo, etc ... a Registrado y podrás vea un campo de inicio de sesión cuando un usuario no está conectado.

En sus plantillas index.php ubique esto cerca de la parte superior, obtiene el nivel de acceso de su artículo.

$article =& JTable::getInstance("content"); 
$article->load(JRequest::getVar('id')); 
$cAccLevel = $article->get("access"); 

continuación, agregar un módulo de posición por encima de su componente, y sólo muestran que cuando su nivel de acceso necesario es> 1

<?php if($cAccLevel > 1): ?> 
    <jdoc:include type="modules" name="LOGIN_MODULE_POSITION" /> 
<?php endif; ?> 

A continuación, añadir un módulo de inicio de sesión en el administrador de módulo para LOGIN_MODULE_POSITION.

Voila ... hay enrutamiento necesaria etc ... todo funciona fuera de la caja, he elegido el estilo de distancia del cuadro de cierre de sesión y el campo de acción como esta:

.logout-button, 
.actions{ 
    display:none; 
} 

Buena suerte!

+0

para omitir el cuadro de finalización, puede usar $ user = & JFactory :: getUser(); $ user_id = $ user-> get ('id'); if (! $ User_id) {... –

-2

Antes que nada tienes que actualizar tu instalación de joomla a 2.5 (es la última versión de joomla), 1.7 ya no es compatible con la comunidad de Joomla.

Existen varias formas de configurar sus derechos de visualización. K2 es un componente CCK útil para hacer el trabajo, también es una técnica útil que utilizo a seguir es el de "enlace" categorías de su artículo en un menú y establecer permisos específicos a los elementos de menú

+0

Tengo el mismo problema en 2.5, y tampoco puedo trabajar con K2. Estoy agregando una recompensa ahora, tal vez revise su respuesta para gazillion-o-points :) –

5
  1. Crear un nuevo menú de administrador de menú, diga que se llama "oculto menú".
  2. Agregue cualquier elemento del menú al que solo puedan acceder los usuarios registrados .
  3. Establezca los niveles de acceso requeridos de estos elementos de menú ("Especial" en este ejemplo, pero también podría ser "Registrado"). NO cree un módulo para el "menú oculto". No se mostrará en ninguna página, , por lo que no necesita un módulo.
  4. Cree su menú "real" (por ejemplo, "menú principal") y el elemento del menú que se mostrará para todos los usuarios (por ejemplo, "Enviar un artículo "). El elemento del menú tendrá un tipo de elemento de menú de "Alias". Es El parámetro "Elemento de menú" será el elemento de menú "Enviar un artículo" en el "menú oculto". El nivel de acceso para este elemento de menú será "Público", ya que queremos que todos puedan verlo y usarlo.

  5. Cree un módulo de tipo "mod_mainmenu" para este menú, como lo hace para cualquier menú.

  6. Cree un módulo de inicio de sesión y establezca el nivel de acceso en "Público". Asegúrese de que el módulo se muestre solo en el elemento de menú "Público" y , no del elemento registrado, y seleccione una posición visible.

Ahora, cuando un invitado (no usuario conectado) accede a la "Presentar un artículo " menú a elegir, se les redirige a la página en blanco con el mensaje "Sólo para los visitantes registred". . Si inician sesión con éxito, se llevan a a la página deseada (en este caso, "Enviar un artículo"). Si ya había iniciado sesión, van directamente allí.

+0

También leí esto en el sitio de Joomla, pero no funcionó en 1.7. Sin embargo, funcionó en 2.5 ... Bullet # 6 no es necesario, lo noté. Aunque estoy contento de poder hacer que esto funcione, todavía es extraño que esto sea demasiado trabajo ... Podría terminar pirateando algunas funciones principales ... Gracias –

1

Menú Ir CONTENIDO, crear o editar una sección para los elementos que desea proteger.

Usted verá una opción: Nivel de acceso

Hay 3 opciones:

Pública, registrado y especial

configurarlo para que: Registrados

Entonces usted necesita para cambiar sus artículos para esta sección y eso es todo.

2

Si lo que quiere es sólo para mostrar un contenido si el visitante es un usuario registrado, puede utilizar este código:

$user =& JFactory::getUser(); 

    <?php 
    if(!$user->guest){ ?> 

     [[what ever you want to do ]] 
    <?php endif; ?> 

Espero que ayude !!

Cuestiones relacionadas