Dobra, to idzie tak:
0. Założenia: musisz posiadać jQuery. Z reguły Joomla domyślnie ładuje jQuery ale warto się upewnić czy tak jest faktycznie przeglądając kod strony (głównej wystarczy).
1. Pobierasz wtyczkę stąd: https://github.com/carhartl/jquery-cookie
Pobierz ZIP: http://prntscr.com/no1yev
2. Rozpakuj u siebie na dysku.
3. Skopiuj plik jquery.cookie.js z /jquery-cookie-master/src do swojego szablonu na serwerze ROOT/templates/<nazwa-szablonu>/js (jeśli nie masz tego katalogu to go utwórz)
4. Edytuj plik index.php w ROOT/templates/<nazwa-szablonu>
5. Odszukaj kod:
Kod PHP:
<jdoc:include type="head" />
Pod nim dodaj:
Kod PHP:
<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/js/jquery.cookie.js"></script>
<?php
$host = $_SERVER['REQUEST_URI'];
if($host == "/") {
?>
<script type="text/javascript">
jQuery(function() {
var COOKIE_NAME = 'returning-cookie';
$go = jQuery.cookie(COOKIE_NAME);
if ($go == null) {
jQuery.cookie(COOKIE_NAME, 'test', { path: '/', expires: 6 });
}
if ($go != null) {
window.location = "/news.html"
}
});
</script>
<?php } ?>
W taki sposób: http://prntscr.com/no22ak
Wyjaśnienia kodu
1. Ten kawałek ładuje wtyczkę http://prntscr.com/no22q7
2. Ten kawałek:
Kod PHP:
<?php
$host = $_SERVER['REQUEST_URI'];
if($host == "/") {
?>
To warunek sprawdzający czy jesteśmy na stronie głównej, bo chcemy by skrypt wykonywał się TYLKO na stronie głównej... w innym wypadku będzie nas przekierowywać w nieskończoność.
2. Ten kawałek określa nazwę ciasteczka:
Kod:
var COOKIE_NAME = 'returning-cookie';
Tekst returning-cookie możesz zmienić na inny byleby nie miał spacji i znaków diakrytycznych.
3. Ten kawałek to znowu warunek w js sprawdzający czy zmienna $go zawiera wartość null czyli jest pusta
Kod:
if ($go == null) {
jQuery.cookie(COOKIE_NAME, 'test', { path: '/', expires: 6 });
}
jeśli jest pusta tworzy ciasteczko z zawartością test i ważna na 6 dni. Możesz zmienić test na dowolna wartość ale bez znaków diakrytycznych. Tak samo 6 możesz zmienić na 365. Po roku ciasteczko straci ważność i użytkownik zostanie potraktowany jak nowy, nie powracający.
4. Ten kawałek sprawdza czy wartość zmiennej $go jest różna od null czyli nie jest pusta:
Kod:
if ($go != null) {
window.location = "/news.html"
}
jeśli nie jest to przekierowuje do lokalizacji /news.html. Możesz zmienić wartość "/news.html" na inną ale pamiętaj o początkowym slashu.
Ograniczenia
Należy pamiętać, że niektórzy wyłączając obsługę cookies w przeglądarce, usuwają cookies lub zmieniają przeglądarkę. W takiej sytuacji kod nie zadziała (brak obsługi cookie) lub potraktuje odwiedzającego jako nowego i wyświetli stronę startową a za kolejnym razem już przekieruje. Cookie musi mieć datę ważności (nie może być bezterminowe - patrz persistent cookie).
Po utworzeniu ciasteczka przekierowanie będzie wcią ż działało więc np. jeśli ma się w menu pozycję dla pierwszej strony np. HOME to klikajac na nie... zostaniemy zawróceni na stronę docelową... nie da sie wyświetlic już strony HOME bez usunięcia ciasteczka.
Skrypt jest wykonywany zaraz po załadowaniu części strony z kodem więc strona startowa może "mignąć" więc jakiś preload może się przydać do jej spowolnienia.
Przykład
http://siristru.prolusatia.pl
1. Wejdź na stronę
Zostanie załadowana strona startowa "home"
2. Odśwież stronę
Nastąpi przekierowanie do zakładki "News"