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