Strona Główna > Dokumentacja techniczna Plio CMS > Jak tworzyć własne zajawki dynamiczne
22.03.2006 Zespół Plio.pl

Jak tworzyć własne zajawki dynamiczne

Zajawki autopromocyjne oferowane standardowo przez system Enkidu CMS są statyczne – ich zmiana wymaga interwencji administratora. Można jednak łatwo dodać do nich elementy dynamiczne zwiększające atrakcyjność serwisów

Podobnie jak moduły, zajawki autopromocyjne korzystają ze wszystkich zmiennych globalnych i funkcji zwiększających bezpieczeństwo systemu. Aby dodać nowy typ dynamicznej zajawki, wystarczy dodać jej kod do osobnego pliku nazwa.inc.php w katalogu /teasers oraz dopisać jej nazwę do tablicy $teaser_names w pliku /include/modules.inc.php. Tablica ta ma strukturę 'nazwa-identyfikator' => 'Nazwa przyjazna dla użytkownika'.

Jak działa zajawka dynamiczna?

Standardowa funkcja generująca kod HTML zajawek w systemie Enkidu CMS zapisuje wyniki swojej pracy w zmiennej $cache. Umieszcza w niej dodatkowo ciąg znaków <!-- AUTOTEASER --> w miejscu, gdzie najlepiej wstawić dynamicznie generowany HTML, a następnie włącza przez polecenie include kod zawarty w pliku o wskazanej przez administratora „nazwie przyjaznej” z tablicy $teaser_names. Dopiero po wykonaniu tego polecenia HTML zajawki przechowywany w zmiennej $cache jest włączany do generowanej strony.

Wystarczy więc, że kod zawarty w pliku nazwa.inc.php zmieni zawartość zmiennej $cache, a zmieni się też kod HTML zajawki widziany przez użytkownika.

Przykład 1: Zmiana koloru tła zajawki


<?
cache=str_replace('<div class="teaserp">','<div class="teaserp" style="background-color:#FFF7E7">',$cache);
?>

Skrypt dodaje blokowi div otaczającemu zajawkę styl nadający tłu kolor ecru.

Przykład 2: Aktualna data


<?
$cache=str_replace('<!-- AUTOTEASER -->','Dziś jest '.date("Y-n-j G:i:s", time()).', imieniny Chucka Norrisa',$cache);
?>

Korzystanie z cache odciąża serwer

Każda zajwka generowana dynamicznie, zwłaszcza zawierająca pytania do bazy, istotnie obciąża serwer. Nie każda jednak zajawka musi być generowana za każdym razem, gdy użytkownik wchodzi na stronę. Np. kod HTML zajawki z przykładu 1. może być wygenerowany raz, a dobrze w momencie zmieniania treści zajawki przez administratora.

To, czy dana zajawka będzie rzeczywiście tworzona od podstaw przy każdym otworzeniu strony określa zmienna $cached mogąca przyjmować wartości true albo false. Skrypt odpowiedzialny za dynamiczną część zajawki powinien przypisać tej zmiennej odpowiednią wartość.

Kod HTML zajawek z $cached równym true generowany jest tylko przy zmianie treści zajawki w panelu administracyjnym. Pozostałe zajawki są wyświetlane z pola cache tablicy ecms_teaser w bazie danych systemu.

Uwaga: zmienianie wartości pola cache można „zlecić” dowolnemu modułowi. Np. jeżeli stworzymy w serwisie moduł randkowy i będziemy chcieli na stronie głównej umieścić zajawkę z liczbą aktualnie zarejestrowanych użytkowników, wystarczy że dodamy modułowi randkowemu funkcję zmieniającą cache zajawki przy dodaniu lub usunięciu użytkownika randek. Można przy tym wykorzystać funkcję recache_teaser($sel) z pliku /include/teasers.inc.php.

Podpowiedź: Przy testowaniu nowej zajawki lepiej ustawić w niej zmienną $cached=false i ewentualnie przestawić ją na wydajniejsze $cached=true, gdy jesteśmy w pełni zadowoleni z efektów.