Logowanie

Zobacz pełną wersję : Różne pliki css dla użytkownika zalogowanego i nie zalogowanego.



woker20
25-01-2012, 09:45
Witam

Problem polega na tym iż chcę stworzyć stronkę której wygląd cały czyli kolory, rozmieszczenie modułów, rozmiary modułów są różne dla zwykłego nie zalogowanego użytkownika i inny dla zalogowanego użytkownika. Problem można rozwiązać w ten sposób aby jeśli użytkownik się zaloguje to szablon zamiast używać arkusza stylów czytanego z pliku np. "niezalogowani.css" zacznie czytać plik "zalogowani.css". Nie wiem czy to jedyne rozwiązanie ale taki mi przyszło do głowy. Problem w tym że nie wiem jak ustawić w pliku index.php szablonu aby on po wykryciu iż użytkownik się zalogował zmienił plik? Proszę o pomoc.

coliberek1
29-01-2012, 18:06
Hej,

kiedyś robiłam jedną stronkę, na której pojawiały się inne moduły dla zalogowanych a inne dla niezalogowanych.

Ogólnie wygląda to na tej stronie tak:


<?php

$user = & JFactory::getUser();

echo $user->get('id') ? '' : '<div class="modul1"><jdoc:include type="modules" name="modul-rej" /></div>' ;

?>


W php raczej jestem raczkującym testerem niż ekspertem, ale myślę że jakby taką komendę wrzucić w ramy "if - else" to mógłbyś wyświetlać inne klasy/id divów poszczególnym typom użytkowników i dzięki temu poszczególne części szablonu miałyby inny wygląd.

Ponieważ w końcu mam luźniejszy dzień :) i mogę podziałać rekreacyjnie, to dla testów próbowałam pokombinować z tym $user = & JFactory::getUser(); w zakresie dołączania plików css do szablonu, ale niestety bez skutku. Może jednak Ty coś wymyślisz w tej sprawie.

woker20
29-01-2012, 19:26
Czegoś podobnego w php już próbowałem i też mi nie wychodziło ale podobnie jak ty nie jestem w tej sprawie ekspertem dlatego zacząłem ten temat. Jedyne co mi udało się zrobić to uzyskać podobny efekt ale stosują coś co chyba nazywa się przypisany szablon. Zrobiłem to tak iż ustawiłem ze po zalogowaniu ma się otwierać konkretna strona w wybranym przeze mnie szablonie, który jest tym samym szablonem tylko z innym plikiem css. To co prawda nie jest do końca to co chciałem uzyskać ale efekt jest podobny. Nadal jednak jestem zainteresowany tym czy nie dało by się jakoś za podmienić te pliki css w podobny sposób co ty napisałeś. Ale dzięki za radę w stosunku modułów. Jeśli to na zadziała u mnie i/lub czegoś nie sknocę to można by to zrobić za pomocą jednego pliku css i jednego szablonu. Po testuję i dam znać.

neo_fox
29-01-2012, 20:14
kiedyś robiłam jedną stronkę, na której pojawiały się inne moduły dla zalogowanych a inne dla niezalogowanych.

A nie prościej byłoby po prostu poprawne skonfigurowanie wyświetlanie modułu?

woker20
31-01-2012, 00:00
A nie prościej byłoby po prostu poprawne skonfigurowanie wyświetlanie modułu? A jak byś skonfigurował "moduł" piszę w cudzysłowach bo to chyba złe określenie, ale chodzi mi o to co w szablonie zapisuje się jako
<jdoc:include type="component" /> ? Bo tego chyba nie da się tak skonfigurować aby dla zalogowanych miało inny kształt i wygląd niż dla nie zalogowanych ? Jeśli można to proszę o wskazówki.

neo_fox
31-01-2012, 13:07
Można zrobić w szablonie coś takiego:


$doc = JFactory::getDocument();
if( JFactory::getUser()->get( 'id' ) ) {
$doc->addStyleSheet( '/sciezka/do/pliku/dla/zarejestrowanych.css' );
}
else {
$doc->addStyleSheet( '/sciezka/do/pliku/dla/niezarejestrowanych.css' );
}


To jest polecenie do włączenia komponentu. Na przykład com_content czy innych komponentów


<jdoc:include type="component" />

coliberek1
31-01-2012, 19:31
hej @neo_fox,

przegenialne rozwiązanie! To teraz będę musiała poszukać okazji, żeby je zastosować. :)

Pozdrawiam
Malgosia

woker20
02-02-2012, 08:54
I właśnie o to mi chodziło :) Wielkie dzięki :) Jeśli o mnie chodzi to temat można zamknąć :) Podane rozwiązanie działa tak jak należy :)