2012-05-08 6 views
5

In Joomla prima di 1.6 ho potuto impostare una voce di menu a pubblico, e il suo contenuto: un articolo per esempio per registrati .Mostra un articolo joomla solo agli utenti registrati, oppure una schermata di login, se non registrati nel sì

Questo ha portato a una situazione in cui le persone potevano vedere il collegamento a un articolo nel menu quando non hanno effettuato l'accesso, ma hanno ottenuto un componente di accesso ogni volta che hanno fatto clic su di esso. E dopo quello hanno visto l'articolo.

In 1.7 queste stesse azioni portano a una situazione in cui quando faccio clic sul collegamento lo schermo del componente rimane vuoto.

Come si ottengono articoli registrati per mostrare una schermata di accesso quando l'utente front-end non ha effettuato l'accesso con diritti sufficienti? E 'stato così facile prima e non riesco a farlo funzionare ora.

risposta

9

Im che va rispondere alla mia domanda, perché la gente Im sicuro che avranno bisogno di questo in futuro, e la mia soluzione prevede solo poche regole di codice in più e quindi è possibile impostare ogni articolo ecc ... al Legale e potrai vedere un campo di accesso quando un utente non è connesso.

nei modelli index.php collocare questo vicino alla parte superiore, si ottiene il livello di accesso del vostro articolo.

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

quindi aggiungere una posizione modulo sopra il componente, e mostrare solo quando il livello di accesso necessario è> 1

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

Quindi aggiungere un modulo di login nel vostro gestore di modulo LOGIN_MODULE_POSITION.

Voila ... senza di routing necessaria ecc ... tutto funziona out of the box, ho scelto per lo stile via la scatola di logout e il campo di azione in questo modo:

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

Buona fortuna!

+0

di omettere la casella di logout, è possibile utilizzare $ user = & JFactory :: getUser(); $ user_id = $ user-> get ('id'); if (! $ User_id) {... –

-2

Prima di tutto è necessario aggiornare l'installazione di joomla a 2.5 (è l'ultima versione di joomla), 1.7 non è più supportato dalla comunità Joomla.

Esistono diversi modi per impostare i diritti di visualizzazione. K2 è un componente CCK utile per fare il lavoro, anche una tecnica utile che uso da seguire è quello di "link" categorie del vostro articolo in un menu e impostare autorizzazioni specifiche per le voci di menu

+0

Ho lo stesso problema in 2.5, e non posso ottenere la cosa lavorare con K2 sia. Im l'aggiunta di una taglia ora, forse rivedere la vostra risposta per gazillion-o-punti :) –

5
  1. creare un nuovo menu da gestore di menu, diciamo che è denominato "menu nascosto ".
  2. Aggiungere voci di menu che saranno accessibili solo agli utenti registrati .
  3. Impostare i livelli di accesso richiesti per queste voci di menu ("Speciale" in questo esempio, ma potrebbe anche essere "Registrato"). NON creare un modulo per il "menu nascosto". Non verrà visualizzato su nessuna pagina, , quindi non ha bisogno di un modulo.
  4. Crea il tuo menu "reale" (ad esempio, "menu principale") e la voce di menu che verrà visualizzata per tutti gli utenti (ad esempio "Invia un articolo "). La voce di menu avrà un tipo di voce di menu "Alias". È il parametro "Voce di menu" sarà la voce di menu "Invia un articolo" su il "menu nascosto". Il livello di accesso per questa voce di menu sarà "Pubblico", dal momento che vogliamo che tutti siano in grado di vederlo e usarlo.

  5. Creare un modulo di tipo "mod_mainmenu" per questo menu, proprio come si fa fare per qualsiasi menu.

  6. Creare un modulo di accesso e impostare il livello di accesso su "Pubblico". Assicurarsi che il modulo sia visualizzato solo nella voce di menu "Pubblico" e non nell'elemento registrato e selezionare una posizione visibile.

Ora, quando un ospite (non-utente connesso) accede alla "Invia un articolo " menu a scelta, li reindirizza alla pagina vuota con il messaggio "Solo per i visitatori REGISTRATI". . Se si collegano correttamente, vengono portati alla pagina desiderata (in questo caso, "Invia un articolo") a . Se ci sono già stati registrati, ci vanno direttamente.

+0

ho letto anche questo sul sito Joomla, ma non ha funzionato sul 1.7. Ha funzionato però su 2.5 ... Bullet # 6 non è necessario ho notato. Anche se io sono felice di essere in grado di ottenere questo lavoro, è ancora strano che questo è soo molto lavoro .. potrei finire l'hacking alcune funzioni fondamentali ... Grazie –

1

Vai al menu CONTENUTO, crea o modifica una sezione per gli elementi che desideri proteggere.

Vedrai un'opzione: livello di accesso

C'è 3 opzioni:

pubblico, registrato e speciale

impostarlo: Registrato

allora avrete bisogno per cambiare i tuoi articoli per questa sezione e basta.

2

Se quello che vuoi è solo per mostrare un contenuto se il visitatore è un utente registrato, è possibile utilizzare questo codice:

$user =& JFactory::getUser(); 

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

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

Speranza che aiuta !!