Kompleksowe tworzenie stron internetowych, webdesign, aplikacje CMS

PostNuke, system zarządzania treścią. Część 1

Artykuł został umieszczony w PHP Solutions, numer 04/2007.
Artykuł archiwalny - od 2008 roku projekt PostNuke został zakończony. Na jego bazie tworzona jest Zikula CMS.

Autor: Michał Gacki
Co powinieneś wiedzieć...: Należy znać podstawowe pojęcia, m.in: serwer, PHP, baza danych; Należy znać podstawy administracji serwerem i jego komponentami, np. tworzenie nowych baz danych
Co obiecujemy... Zaznajomienie się z działaniem PostNuke i jego modułami; Nauczenie się konfiguracji systemu pod swoje potrzeby łącznie z instalacją dodatkowych modułów; Zapoznanie się z regułami uprawnień

Od pewnego czasu webmasterzy przekroczyli próg statycznych stron WWW. Obecnie tworzy się dynamiczne strony najczęściej sięgając po język PHP. Nie każdy jednak musi być mistrzem PHP by stworzyć rozbudowany serwis – zawsze można sięgnąć po system zarządzania treścią, który nam w tym pomoże. Przedstawimy jeden z ciekawszych darmowych projektów – PostNuke (obecnie Zikula - przyp. autor)

Pierwsze wersje PostNuke utrzymywały kompatybilność z PHP–Nuke pod względem API (ang. application programming interface, w tym przypadku główny zbiór funkcji CMSa), a obecnie pozostałosci z tego CMSa prawie wcale nie ma, dlatego też nie możemy uruchamiać modułów z PN (skrót od PostNuke) na PHP–Nuke i odwrotnie. PN zawsze zachowywał licencję GNU/GPL, co przywiodło mu więcej zwolenników niż PHP–Nuke. W przeciwieństwie do swojego przodka, który nadal jest aktulizowany, PN na bieżaco miał łatane dziury, a także był dużo bardziej efektownie udoskonalany (np. PHP–Nuke do dzisiaj nie ma instalatora). PostNuke jest do dzisiaj jednym z najczęściej używanych CMSów, a nic nie zwiastuje, aby to się zmieniło – nowa wersja PostNuke jest już w budowie – co prawda trwa to już kilka lat, ale można pobrać już pierwsze wersje RC (ang. release candidate) i wszystko wskazuje na to, że wersję finalną zobaczymy już w tym roku.

Rozwój i CMSy na nim bazujące

Tak naprawdę ludzie zaczęli dostrzegać Postnuke już od wydania pierwszych wersji 0.7x. Wersje starsze, jak np. 0.716 byly bardzo wydajne, aczkolwiek nie miały w sobie nic odrózniającego się od konkurencyjnych systemów. Do teraz tych wersji używaja osoby, które uważaja, iż wersje te są dla nich wystarczające i nie obciążają zbytnio serwera. Często jednak takie osoby "atakują" fora supportowe z pytaniem jak ktoś mógł włamać się im na stronę lub dlaczego nowsza wersja dotychczas używanego przez nich modułu nie działa. Zazwyczaj odpowiedź jest prosta – Dokonaj aktulizacji, jednak nie wszyscy po tym są szczęśliwi, ale o tym w dalszej części artykułu. Kontynuując – dużo nowego wniosła wersja 0.726, która mimo tego, że jest odradzana z powodu wielu luk w bezpieczeństwie, nadal ma ogromną ilość użytkowników. Była to chyba jedyna wersja, która była jeszcze w miarę szybka i funkcjonalna, ale wszystkiego – teoretycznie – mieć nie moża. PHP idzie do przodu, serwery mamy coraz lepsze i powoli ludzie przestawają myśleć o optymalizacji, co jest błedem. Kolejną wersją był przełomowy PostNuke 0.75 – ta wersja była dużym krokiem do przodu, miała nieco inną filozofię dotyczącą modułów, była bardziej spopularyzowana dzięki temu, że po kilku przeróbkach można było zrobić stronę całkiem wyróżniającą się od innych, ale problem był jeden – moduły miały kod HTML na zasadzie "kod w kodzie", czyli ich layout wbudowany był po prostu w funkcje echo (funkcja PHP wyświetlająca dany tekst). Dopiero w PostNuke 0.760 moduły zaczęły korzystać z systemu szablonów Smarty. Wersja ta jest najnowszą stabilną wersją, którą wzbogacono już o poprawki i łatki kolejno wydając paczki PN 0.761, 0.762, 0.763 (na dniach po wydaniu zauważono kolejne problemy), 0.764. Wersja 0.76x jest zarazem najwolniejszą wersją PN (najbardziej obciąża serwery). Z PostNuke także zostały stworzone forki. Najpopularniejsze z nich to MDPro (powstały z PN 0.726, zachowuje 80% kompatybilności z PN 0.75 oraz ok. 60% z PN 0.76x), enVolution, Xoops oraz Xaraya (obecna wersja praktycznie nie jest wcale kompatybilna z PN, jej developerzy kompletnie przerobili silnik i z PostNuke w Xarayi zostało praktycznie tyle co nic). Zazwyczaj po doinstalowaniu kilku modułów z PN np. do MDPro, można uruchomić nowe moduły dedykowane tylko pod PostNuke. Ważną rolę odrywa tu pnRender, ale o tym także później.

Ogólnie o PostNuke i jego standardowych modułach

Do czego przyda nam się PostNuke i do jakiego typu stron go używać? PostNuke jest dość uniwersalnym systemem CMS, dzięki temu, że możemy wyłaczyć bez żadnego problemu modułu (moduł to odpowiedni "podskrypt" korzystający z funkcji PN i swoich, bedący tylko konkretną częścią strony; modułem są np. Newsy, Recenzje), których nie używamy. Mało tego – można także wyłaczyć wtyczki dla poszczególnych modułów, np. Komentarze dla Newsów, Ankiet. Takie zarządzanie modułami, które oferuje ten CMS, jest jego ogromną zaletą. Instalacja modułów pobranych z internetu nie stanowi także problemów – wystarczy odpowiednio skopiować folder na serwer i zaktywować moduł w panelu administracyjnym jednym kliknięciem myszki. Dla porównania np. dla polskiego jPortalu można doinstalować moduły (co i tak jest dużo bardziej uciążliwe niż w przypadku PN), ale o ich usuwaniu już nikt nie myślał. PN odrożnia jeszcze jedna rzecz – system wtyczek. Takie moduły jak komentarze są traktowane przez system jako wtyczki, które można podpiąć do dowolnych modułów – np. do modułu sklepu umożliwiając komentowanie jego produktów. Instalując jedną wtyczke sami wybieramy gdzie ma być ona używana. Przykładowo instalując wtyczke umożliwiającą używanie emotoikon możemy ją aktywować tylko dla forum lub dla forum, newsów, artykułów, czy też do wszystkich modułów. Tu nie trzeba nic kombinować – wszystko "załatwiamy" dzięki zaledwie kilku kliknięcią myszą. Gdzie jednak w modułach uniwersalność PostNuke? Otóz polega to na tym, że możemy usunąć modułu, które są dla nas zbyt bardzo rozbudowane lub nieintuicyjne, albo posiadające zbyt mała funkcjonalność. Wszystkie możemy zamienić na moduły alternatywne (oficjalne bądź nieoficjalne), których w internecie do pobrania setki i to za darmo. W dodatku nie trzeba daleko szukać – na stronach supportowych, których jest dość sporo (chociażby świetny polski support http: //www.post–nuke.pl), wszystko znajduje się w dziale download dobrze posegregowane. Musimy jednak pamiętać, że nikt nie ponosi odpowiedzialności za używanie nieoficialnych modułów, gdyż niektóre z nich mogą być powodem włamań na stronę. Czy jednak PostNuke jest odpowiedni na wszystkie strony? Oczywiście, że nie. Jest to CMS dedykowany średnim serwisom, ponieważ gdyby postawić na nim większy portal z odwiedzalnością powyżej kilku tysięcy unikalnych użytkowników dziennie, potrzeba było by bardzo mocnego dedykowanego serwera – i jeszcze nie ma gwarancji na to, że w danym momencie nie padnie nam baza MySQL, gdyż niestety zapytania w PostNuke nie są zbyt mocno zoptymalizowane. Czym możemy się ratować? System szablonów Xanthia i pnRender (czyli implementacja Smarty w PN) posiada możliwość cachowania i buforowania, gdzie nawet samo właczenie cachowania szablonów wpływa znacząco na prędkość serwisu. Pamiętajmy także o tym, aby nie zaśmiecać naszego PN wszystkimi możliwymi modułami – używajmy tylko tych, które są nam potrzebne! Ale nie ma się co martwić na zapas – przeciętną stronę na tym CMSie "uciągnie" każde lepsze konto hostingowe. Można by rzec, że PN nie nadaje się na małe serwisy, które nie potrzebują tych wszystkich "bajerów". Jednak jeśli ktoś bardzo chce, zawsze może PostNuke odpowiednio odchudzić i przygotować do takiej strony, gdzie głowną rolę będzie odgrywała dobrze zrobiona skórka. Różni użytkownicy pokazywali np. portfolia wykonane na tym CMSie, zawierające zaledwie kilka podstron – niby nic trudnego, ale to się mija z celem. Najlepsze zastosowanie PN to raczej strony średniej wielkości, typu strony klubowe, hobbystyczne (np. o mniej popularnym sporcie), ale to nie jest reguła! Wszystko już zależy od osobistego punktu widzenia oraz od umiejętności programistycznych użytkownika – bo nawet najgorszy CMS w rękach dobrego programisty może dobrze wypaść na każdej stronie.

Zacznijmy naszą przygodę z PostNuke od ogólnego zapoznania się z jego silnikiem i panelem administracyjnym. Jednak zanim przejdziemy do praktyki na naszej “postnukowej” stronie, po krótce pokażę jak owy CMS zainstalować. Załóżmy, że interesuje nas polska wersja tego CMSa. Polski PostNuke team szykuje spolszczenia zawsze na czas. Gotowe, polskie paczki (przetłumaczone całe jądro i moduły) PostNuke jak i PostNuke Lite (“odchudzona” wersja tego CMSa) znajdują się na stronie http://www.post–nuke.pl. Pobieramy najnowszą wersję, czyli PostNuke 0.764. Po zakończeniu pobierania rozpakowywujemy ją na naszym dysku twardym. Po rozpakowaniu ujrzymy dwa foldery – html oraz phoenix–sql. Pierwszy zawiera wszystkie pliki potrzebne do uruchomienia i instalacji PN (Rysunek 1.), drugi tylko zrzut z bazy danych – nie będzie on nam jednak potrzebny, gdyż użyjemy wbudowanego w PostNuke instalatora.

INSTALACJA

• Kopiujemy pliki na nasz serwer. Upewnijmy się, że nasz klient FTP nie zamienia liter przy kopiowaniu na małe. Po tym uruchamiamy w przeglądarce plik install.php.
• Wybieramy język instalacji (Rysunek 2.)
• Akceptujemy licencję GNU/GPL
• Ustawiamy prawa zapisu, czyli chmod 777 na pliki config.php, config–old.php oraz katalogi pnTemp/pnRender_cache, pnTemp/ pnRender_compiled, pnTemp/Xanthia_cache, pnTemp/Xanthia_compiled. Wtedy Post- Nuke wskaże nam, że katalogi mają odpowiednie prawa zapisu po kliknięciu w przycisk Sprawdź ponownie. Będzie można wtedy przejść do kolejnego punktu instalacji
• Uzupełniamy dane do naszej bazy danych MySQL (możemy założyć nową z pomocą skryptu instalacyjnego jeśli mamy takie uprawnienia lub panelu administracyjnego serwerem. Jeśli mamy darmowy serwer dane powinny być dostarczone przy rejestracji lub w panelu serwera) (Rysunek 3.) • Potwierdzamy dane bazy przyciskiem Nowa instalacja
• Jeśli nie mamy stworzonej nowej bazy, a mamy uprawnienia do jej stworzenia, zaznaczamy Utwórz bazę danych, jeśli korzystamy z istniejącej bazy – wystarczy tylko kliknąć Start (Rysunek 4.)
• Gdy ukaże nam się wstępny wykaz tabel, klikamy Kontynuuj
• Podajemy login, hasło, e–mail i adres www konta, które będzie służyło jako główne konto w naszej stronie na PostNuke
• Po zobaczeniu końcowego wykazu tabel klikamy Zakończ
• Usuwamy katalog install i plik install.php bądź zmieniamy ich nazwę (jeśli będziemy chcieli później prosto przeinstalować PN) oraz zmieniamy chmod config.php i config–old.php na 444

Po tych czynnościach możemy przejść już do index.php, gdzie ukaże się nam PostNuke świeżo po instalacji (Rysunek 5.). Skoro instalacja jest już zakończona, ważna dla nas będzie na początek znajomość głównego schematu linków. W wersji 0.76x wszystko ujednolicono jak najbardziej było to możliwe, aby przy okazji zachować kompatybilność ze starymi modułami. W modułach linki generuje teraz jedna funkcja. Najważniejsze co trzeba wiedzieć:

index.php – strona główna, z parametrami name lub module wczytuje dany moduł. Np.: index.php?name=Downloads – moduł downloadu
• admin.php – panel administracyjny, dostępny po zalogowaniu. Np. admin.php?module- =News – administracja newsami
• user.php – logowanie, rejestracja i zarządzanie kontem użytkownika
• banners.php – sprawdzanie ilości odsłon i kliknięć w bannery klientów (skrypt logowania dla klientów)
• print.php – skrypt wyświetlający strony do druku, obecnie praktycznie nie używany

Rozłożenie istotnych katalogów:


• languages – do niego kopiuje się pliki językowe jądra, dla obsługi innych języków. Każdy moduł i blok ma swój katalog “pnlang ” lub “lang ”, dla swych własnych
• includes – ten katalog zawiera więcej istotnych katalogów. Nas będą interesować
• blocks – katalog bloków menu oraz search – katalog wtyczek do wyszukiwarki
• modules – katalog modułów, zawiera wszystkie foldery z plikami modułów
• themes – katalog skórek, zawiera podfoldery ze skórkami, tam należy także umieszczać nowe skórki

Kolejną ważną rzeczą jest administracja. Każdy moduł może mieć panel zarządzania w panelu administracji PostNuke, pod własną ikonką. 90% modułów z tej opcji korzysta. Poszczególne moduły można w panelu administracyjnym dzielić na kategorie (przełączanie między nimi odbywa się za pomocą zakładek) – tę opcję umożliwia moduł Panel administracyjny (gdyż tak naprawdę główne opcje PN to też moduły – np. ustawienia strony, czy też same zarządzanie modułami). Pod ikonkami panelu administracyjnego znajduje się menu szybkiego zarządzania newsami, lista ostatnio dodanych newsów oraz aktualna ankieta (Rysunek 6.).

Pierwsze ćwiczenie – zanim stworzymy własną skórkę, zmieńmy skórkę strony na jedną ze standardowych. Standardowym modułem do obsługi szablonów jest Xanthia, czyli wszystkie szablony traktujemy jak szablony systemu Smarty. Zmieńmy także nazwę strony i główne ustawienia. W tym celu wchodzimy w moduł Ustawienia. Zmieniamy nazwę strony przykładowo na Moja testowa strona PostNuke, pole logo możemy sobie darować – jest to prawie nieistotne, gdyż takie elementy będziemy ustawiać we własnej skórce – jednak można tam podać adres URL do logo strony, slogan strony – jest to tekst wyświetlany w pasku tytułowym obok nazwy strony, a także w opisie strony – możemy wpisać co nam się podoba (warto zaopatrzyć ten tekst w słowa kluczowe dla wyszukiwarek), data startu – data założenia strony, potrzebna jedynie do modułu statystyk, e–mail admina – adres email, na którego kierowane będą wszystkie maile z formularzy, wyłącz serwis – opcja przydaje się jedynie wtedy, gdy jesteśmy zalogowani i chcemy na szybko dokonać jakichś zmian w systemie nie dając dostępu użytkownikom do strony – należy tutaj uważać na to, aby nie odejść od komputera, ponieważ po czasie zostaniemy wylogowani i aby uzyskać ponowny dostęp do strony będzie trzeba zmienić pewną wartość w bazie MySQL (rozwiązanie opisano na forum http://www.post–nuke.pl), słowa kluczowe – nic innego jak klucze dla wyszukiwarek zawarte w tagu meta, domyślny temat graficzny – główna szata graficzna serwisu – zauważmy, że na liście widnieje tylko obecnie użyty standardowy motyw ExtraLite, ponieważ nie jest to skórka modułu Xanthia (inne standardowe skórki należy zaktywować w Xanthia pod linkiem obok, aby były widoczne na liście), zmieńmy temat dla testu na pnDefault, zezwól użytkownikom na zmianę motywu – jeśli wybierzemy tak, użytkownicy będą mogli zmienić skórkę w swoim panelu po zalogowaniu – zostawmy tę opcję zaakceptowaną, by później zobaczyć jak to działa, ustawienia wielojęzykowe – można tam wybrać domyślny język strony i zezwolić lub zabronić zmiany języka – zostawmy także zezwolone, strona główna – możemy zmienić tam główny moduł – np. zamiast standardowego News ustawić Downloads, jeśli ma to być strona z pobieraniem plików, a także dodać funkcję startową i argumenty (każdy moduł na swoją funkcję, np. view – wyświetla moduł, odpowiada temu atrybut &func=view – dla przykładu: index.php?module- =Downloads&func=view), co pozwala na wyświetlenie np. konkretnej kategorii downloadu, ustawienia niusów – możemy ustawiać ilość newsów na stronie głównej oraz w panelu administracyjnym, sortowanie newsów oraz stroniconowanie – czyli linki do kolejnych stron z newsami (pager), raportowanie błędu – po włączeniu tej opcji będziemy informowani o błędach głównie w zapytaniach do bazy MySQL, a także innych głównych błędach związanych ze stroną – możemy także ustawić zabawne komunikaty błędów, różne – opcje te mają wpływ na wydajność systemu – jeśli włączymy wsparcie dla starych modułów, PostNuke będzie działał minimalnie wolniej, ale będziemy mogli używać zazwyczaj bez problemów modułów ze starszych wersji, za to opcja kompresji przyspiesza działanie strony, wiadomość w stopce – tekst w tym polu będzie się wyświetlał na stronie w miejscu, gdzie w kodzie skórki wstawiliśmy znacznik stopki – można tu używać HTML i spokojnie usunąć wszystkie powered by (choć miłym gestem jest zostawić te obrazki), konfiguracja źródła artykułów – inaczej konfiguracja RSS, opcje bezpieczeństwa – możemy tutaj ustawić na jaki czas użytkownicy mają być zalogowani (jeśli wcześniej nie użyją opcji wyloguj), włączyć sprawdzanie adresów polecających stron do druku, włączyć pnAntiCracker (jeśli na stronie dzieje się coś podejrzanego pnAntiCracker wysyła o tym informacje na e–mail administratora, bardzo często są to alarmy fałszywe), opcje HTML – możemy ustawić które tagi HTML mają być dozwolone do użytku przez użytkowników w komentarzach, postach na forum, newsach itp. – należy zwrócić uwagę, by nie zezwalać na wszystkie tagi, a szczególnie na te narażające serwis na niebezpieczeństwo, jak chociażby tag <script>. Wprowadzone zmiany w ustawieniach możemy już zatwierdzić.

Jak widać nasz PostNuke nieco się zmienił... Zapraszam do drugiej części mojego artykułu.

Autor: Michał Gacki

Przeczytaj też: PostNuke, system zarządzania treścią. Część 2

Zaufali nam:

i wielu więcej

Nowości »

Postanowiliśmy umieścić poradniki dotyczące tworzenia stron WWW, które opublikowaliśmy kilka lat temu na łamach magazynu PHP Solutions. Są to artykuły prasowe, które od dziś będzie można przeczytać online i zastosować w praktyce. Jeśli jesteś początkującym programistą lub chcesz zacząć swoją przygodę z programowaniem, zapraszamy do lektury. więcej nowości >