PDA

Zobacz pełną wersję : problem z zapamiętaniem szaty użytkownika



Mega_Kupa
26-03-2006, 00:02
Witam!

Mam taki problem, że na stronie umożliwiam użytkownikom zmianę wyglądu, lecz każdy po powrocie na stronę ma znowu wygląd domyślny (nawet po zalogowaniu). Wiecie może jak zrobić, aby użytkownik miał przez cały czas wybraną przez siebie szatę?

Ta strona jest zamknięta, tzn. jest pewna liczba użytkowników i każdy ma swoje konto, bez zalogowania nie zobaczymy nic.

Mam zintegrowane phpBB <- piszę to, bo wiem, że modyfikuje tabelę #__users, a to może być coś z tym...

Wersja Joomla! - 1.0.7

Dziękuję za wszelką pomoc!

frico
26-03-2006, 12:57
Preferowana templetka zapisywana jest raczej po stronie użytkownika jako cisteczko /jak sie nie mylę ;)/. Tam więc szukaj problemu.

Zrób prosty test i będziesz wiedział czy ciastko się w ogóle zapisuje przy odwiedzinach.

Pozdrawiam
frico

Mega_Kupa
26-03-2006, 19:46
Hej!

Masz rację - to w cookies jest ustawiane, a problem rozwiązałem następująco (tzn. nie wiem czy rozwiązałem do końca, ale jak narazie działa... zobaczę z czasem):

w pliku /includes/joomla.php znalazłem taką część kodu:


if (file_exists( $mosConfig_absolute_path .'/templates/'. $jos_change_template .'/index.php' )) {
$lifetime = 60*10;
$cur_template = $jos_change_template;
setcookie( 'jos_user_template', "$jos_change_template", time()+$lifetime);
} else {
setcookie( 'jos_user_template', '', time()-3600 );
}
i w tej części zamieniłem $lifetime = 60*10; (10 minut) na $lifetime = 604800; (tydzień).

Następnie poszukałem funkcji:

function getTemplate() {
return $this->_template;
}
i zamieniłem ją na:

function getTemplate() {
setcookie( 'jos_user_template', $this->_template, time()+604800);
return $this->_template;
}

Do tej pory działało tak, że cookies było ustawione na 10 minut od momentu zmiany wyglądu (czy potem to ciastko było modyfikowane, to nie wiem). Gdy cookie się przeterminowało, to portal wracał do domyślnego wyglądu.

Teraz jest tak, że cookie jest ustawiane na tydzień i dodatkowo jego czas życia jest ustawiany na nowo na tydzień przy każdym wywołaniu funkcji getTemplate(); czyli przy każdej odsłonie strony. Dzięki temu czas życia ciastka jest za każdym razem aktualizowany, a co za tym idzie informacja o wybranej przez użytkownika szacie jest zapisana dłużej.

Dzięki za wskazówkę :)