Moduły w systemach zarządzania treścią

Transkrypt

Moduły w systemach zarządzania treścią
Moduły w systemach zarządzania treścią
S
ystemy zarządzania treścią służą do zarządzania treścią i to chyba
każdy zainteresowany tematem wie. Dedykowane systemy są o tyle
dobre, że są skierowane pod konkretne wymagania. Ale jeżeli chcemy
wykorzystać już ten sam system do innego projektu pojawiają się
problemy. Rozwiązaniem tego jest zbudowanie „czystego silnika” do
którego dołączane są moduły np. moduł menu bocznego, artykułów itd.
Silnik wtedy staje się bardzo uniwersalny.
Wystarczy pomyśleć o tym, że mamy zbudować serwis internetowy typu
Web 2.0 który ma mieć możliwość dodawania filmów/plików
multimedialnych oraz dodawanie, komentowanie artykułów. Mając
„uniwersalny silnik” skupiamy się jedynie na dopisaniu modułu filmów i
artykułów. Piszemy dwa moduły, uruchamiamy aplikację na serwerze,
wchodzimy do panelu administracyjnego wskazujemy miejsce docelowe
(sekcję) modułu i klikamy „Dodaj moduł” – piękne prawda?
Takie rozwiązanie oszczędza nam wiele czasu. W łatwy sposób można
zbudować rózgo rodzaju serwisy.
Osadzanie modułów
Wszystko wydawało się dosyć proste. Wystarczyło zainkludować plik
modułu z kodem PHP i odpowiednim plikiem szablonu TPL. Ale jak to ułożyć
na stronie, żeby było tam gdzie chcemy? Na tym etapie pojawiły się
pierwsze poważne problemy. Pomyślałem, że zobaczę jak to jest robione
przez innych koderów.
Przypadkowo natrafiłem na komercyjny system zarządzania treścią o
budowie modułowej. Zobaczyłem na źródło dema systemu i okazało się, że
aplikacja generuje tabelki co teraz się zupełnie nie sprawdzi. Choćby ze
względu na przeglądarki i standardy W3C. Tabelki są stosunkowo łatwym
rozwiązaniem. Można je o wiele łatwiej modyfikować nie narażając się na
„rozjechanie” strony. Tak jak wcześniej powiedziałem takie rozwiązanie
mnie nie zadowala.
Zarządzanie modułami
Mając wgrany moduł do systemu musimy nim jeszcze jakoś zarządzać za
pomocą panelu administracyjnego. Rozwiązanie tego problemu przyszło mi
bardzo szybko. Kod modułu podzieliłem na dwie klasy. Pierwsza odpowiada
za działanie modułu a druga za administrację/zarządzanie modułem. W
panelu administracyjnym wygląda to tak, że po dodaniu modułu w zakładce
moduły pojawia się odnośnik z nadaną nazwą. Przechodząc do konkretnego
modułu do panelu jest inkludowana i wywoływana druga część kodu modułu
czyli część
autor: Wojciech Chybiorz
CMS (ang. Content
Management System) –
System Zarządzania Treścią –
aplikacja internetowa która
umożliwia łatwe zarządzie
serwisem internetowym.
Web 2.0 – tym określeniem
mianuje się serwisy WWW
które budują internauci. To
użytkownicy wpływają na
treść. Przykładem tego jest
znany wszystkim YouTube.
Inkludować – dołączyć plik
do pliku.
W3C (World Wide Web
Consortium) – organizacja
która zajmuje się
standardami sieciowymi.
odpowiadająca za administrację
Zaczynamy
Dla lepszego zrozumienia dołączyłem schemat działania systemu:
Objaśnienie
Do bazy danych trzeba wgrać rekord z nazwą szablon. Przy dodawaniu nowego szablonu do bazy należy
ustalić ilość sekcji w szablonie. Sekcja w szablonie jest to każdy element <div> w którym będziemy osadzać
moduły (dowolna ilość). Pliki szablonu wgrywane są do katalogu
templates/szablony/nazwa_szablonu/nazwa_szablonu.tpl
Dodawanie modułu odbywa się podobnie do dodawania szablonu. Po wskazaniu modułu i wyborze sekcji z
aktywnego szablonu następuje instalacja modułów. Plik nazwa_modulu.php jest wgrywany do katalogu
moduly/nazwa_modulu.php, plik nazwa_modulu.tpl jest uploadowany do katalogu
autor: Wojciech Chybiorz
templates/nazwa_modulu.tpl, i opcjonalnie wykonywana jest funkcja instalacyjna z drugiej części modułu
która wgrywa np. tabelkę do bazy danych. Po wgraniu plików i tabelek dodawany jest rekord do tabeli
moduly z nazwą modułu, statusem (domyślnie ma wartość 0 = nieaktywny) i numerem sekcji w której będzie
się znajdował.
Budowa szablonu
Szablon TPL jest podzielony na sekcje. Sekcji można utworzyć ile się tylko chce. Trzeba je zdefiniować w
kodzie szablonu TPL modułu. Należy podać liczbę sekcji przy dodawaniu szablonu do bazy. W przykładzie są
to 3 sekcje.
Ilość sekcji jest zapisywana w polu pojemniki tabeli szablony.
Przykład zawartości szablonu TPL modułu:
1. <div id="wrapper">
2.
<div id="top">
3.
{assign var="id" value="1"}
4.
{section name=mod loop=$Mod}
5.
{section name=mod loop=$Box}
6.
{if $Box[mod] == $id}{include file="$Mod[mod]"}{/if}
7.
{/section}
8.
{/section}
9. </div>
10.
11. <div id="menu">
12.
{assign var="id" value="2"}
13.
{section name=mod loop=$Mod}
14.
{section name=mod loop=$Box}
15.
{if $Box[mod] == $id}{include file="$Mod[mod]"}{/if}
16.
{/section}
17.
{/section}
18. </div>
19.
20. <div id="stopka">
21.
{assign var="id" value="3"}
22.
{section name=mod loop=$Mod}
23.
{section name=mod loop=$Box}
24.
{if $Box[mod] == $id}{include file="$Mod[mod]"}{/if}
25.
{/section}
26.
{/section}
27. </div>
28.
29. </div>
W linii 3, 12, 21 są zadeklarowane sekcje. Kolejno 1, 2, 3. Skrypt pobiera z tabeli moduly wszystkie rekordy,
inkluduje potrzebne pliki PHP i przekazuje je do szablonu. Po zadeklarowaniu sekcji w liniach 3, 12, 21 jest
wykonywana pętla w której jest sprawdzane czy wartość pola pojemnik tabeli moduly jest równy sekcji.
Jeżeli jest równy to do danej sekcji <div id=”…”> … </div> jest inkludowany szablon modułu.
Zakończenie
Artykuł miał na celu przedstawienie mojego sposobu zarządzania modułami w CMS’ach. Celowo nie
umieszczałem kodu PHP aplikacji. Myślę, że w miarę jasno przedstawiłem swój pomysł. Gdy ukończę
całkowicie silnik przedstawię działanie tego sposobu „na żywo” w postaci wersji demo.
autor artykułu:
Wojciech Chybiorz