Po omówieniu ogólnej struktury witryn tworzonych przy użyciu systemu PostNuke oraz opisaniu systemu Xanthia przejdziemy do praktycznego wykorzystania poznanych wiadomości. Serwis poświęcony geometrii zilustruje kolejne kroki dostosowania PostNuke’a do konkretnych wymagań.
Struktura tworzonej witryny
Wykonanie portalu rozpoczynamy od ustalenia struktury zawartej w nim treści. Witryna ta będzie poświęcona geometrii, w szczególności tworzeniu konstrukcji geometrycznych na komputerze. Głównym zadaniem serwisu będzie publikacja artykułów oraz konstrukcji wykonanych jednym z popularnych programów do nauki geometrii. Będziemy publikowali dwa rodzaje dokumentów:
- artykuły,
- konstrukcje geometryczne.
Obydwa rodzaje dokumentów mogą zawierać ilustracje. Osobą dodającą treść do witryny będzie wyłącznie administrator systemu. Zarówno artykuły, jak i konstrukcje podzielimy na grupy tematyczne. Obydwa podziały będą jednopoziomowe.
Dane serwisu: artykuły
Dane do umieszczenia w serwisie przygotowujemy w plikach .html. Pliki zawierają tekst sformatowany przy użyciu znaczników HTML. Nie są to jednak pełne strony WWW – dokumenty nie zawierają elementów HTML, HEAD, BODY, itd.
Pierwsza grupa dokumentów to pięć artykułów poświęconych programowi C.a.R: \”Wprowadzenie\”, \”Program C.a.R\”, \”Szczegółowy opis programu C.a.R\”, \”Kolorowanie konstrukcji\” oraz \”Miejsca geometryczne\”. Pliki tekstowe z treścią artykułów posiadają prefiks nazwy car-…txt, na przykład car-opis.txt. Artykuły te umieścimy w sekcji o nazwie Program C.a.R.
Druga grupa dokumentów to artykuły zawierające treści zadań (prefiks nazwy: zadania-…txt). Artykuły te umieścimy w sekcji Klasówki. Ostatnia sekcja, o nazwie Różne, zawiera bibliografię i informacje o innych programach do geometrii.
Dla ułatwienia przygotowania portalu wszystkie artykuły i sekcje są zawarte w skrypcie sql o nazwie {stala}sekcje-all.sql{/stala}. Wykonanie tego skryptu doda do witryny opisane sekcje i artykuły.
Dane serwisu: konstrukcje
Drugi rodzaj dokumentów zawartych w serwisie, konstrukcje geometryczne umieścimy jako artykuły osobnych tematów (ang. topic). Definiujemy tematy: Elipsy, Hiperbole, Okręgi, Parabole i Stożkowe. Treść konstrukcji, podobnie jak i artykułów, przygotowujemy w plikach o rozszerzeniu .html.
Skrypt {stala}konstrukcje.sql{/stala} umieści w bazie danych powyższe pięć tematów i wypełni je przykładowymi konstrukcjami. Wszystkie pliki przykładowe (zarówno .sql jak i .html) zawierają polskie znaki diakrytyczne zakodowane w standardzie ISO-8859-2.
Sekcje i tematy
Obecnie portal jest podzielony na trzy sekcje i pięć tematów. Sekcjami są:
- Program C.a.R (pięć artykułów),
- Klasówki (dwa artykuły),
- Różne (trzy artykuły).
Tematy witryny to:
- Elipsy (22 konstrukcje),
- Hiperbole (6 konstrukcji),
- Okręgi (1 konstrukcja),
- Parabole (8 konstrukcji),
- Stożkowe (1 konstrukcja).
Rozbudowa witryny może przebiegać w dwóch kierunkach. Po pierwsze możemy dodawać artykuły i konstrukcje w każdej z sekcji oraz w każdym z tematów. I tak np. możemy dodać nowych pięć konstrukcji poświęconych stożkowym oraz dwa nowe artykuły w sekcji różności.
Drugim sposobem rozbudowywania witryny jest definiowanie nowych sekcji i tematów. Jeśli na przykład zechcemy opublikować kilka artykułów opisujących program Cabri, wówczas najlepiej będzie dodać nową sekcję Program Cabri i umieścić nowe artykuły wewnątrz sekcji. Podobna sytuacja będzie miała miejsce, gdy do witryny zechcemy dodać kilka konstrukcji poświęconych trójkątom. Wówczas należy zdefiniować temat Trójkąty i konstrukcje poświęcone trójkątom przypisać do tegoż tematu.
Za każdym razem, gdy do serwisu zechcemy dodać artykuł lub nową konstrukcję, należy najpierw przygotować odpowiedni plik .html. Oczywiście moglibyśmy wykorzystać formularz PostNuke służący do dodawania artykułów i wprowadzać treść artykułu z klawiatury do formularza. Jednak takie wyjście jest niewygodne z kilku powodów. Po pierwsze edycja tak przygotowywanego dokumentu przebiega dość topornie (na przykład nie mamy żadnych opcji ułatwiających pisanie tekstu, które są zawarte w edytorach). Po drugie nie mamy możliwości sprawdzenia błędów w tekście. Wreszcie, nie możemy publikowanego tekstu najpierw wydrukować w celu ostatecznej weryfikacji.
Powyższe argumenty przemawiają za tym, by tekst publikowanych artykułów zapisywać w plikach. Gdy plik jest gotowy, wówczas korzystając z techniki kopiuj-wklej i odpowiedniego formularza wprowadzamy tekst do bazy danych portalu.
Wygląd witryny
Przejdźmy do systemu nawigacji tworzonej witryny. Po pierwsze zrezygnujemy ze standardowego menu głównego PostNuke\’a. Opcje takie jak Avant Go czy Polls są zupełnie zbędne. Przydatnymi natomiast będą menu zawierające odnośniki do artykułów i konstrukcji opublikowanych w serwisie.
Każda sekcja otrzyma własne menu zawierające listę artykułów. I tak: sekcja Program C.a.R otrzyma menu zawierające pięć odnośników: Wprowadzenie, Program C.a.R, Opis programu C.a.R Kolorowanie konstrukcji oraz Miejsca geometryczne. W podobny sposób sekcja Klasówki otrzyma dwie, zaś sekcja Różne – trzy opcje.
Ponadto witrynę wzbogacimy o menu zawierające wykaz kategorii konstrukcji (czyli listę tematów zawartych w portalu).
Instalacja witryny
Po ustaleniu wymagań przechodzimy do instalacji serwisu. Pracę rozpoczynamy od wykonania standardowej procedury instalacyjnej pakietu PostNuke w wersji 0.75. Następnie usuwamy folder install oraz plik {stala}install.php{/stala}.
Możemy również usunąć część modułów. W przygotowywanym serwisie niepotrzebnymi modułami są między innymi: Avant Go, Administration messages czy Banners. Moduły usuwamy korzystając z zakładki Modules panelu administracyjnego. Po deaktywacji modułu (opcja Deactivate) i usunięciu go (opcja Remove) usuwamy odpowiedni folder zawarty w {stala}PostNuke-0.750/html/modules{/stala}. Zauważmy, że usunięte moduły znikają z panelu administracyjnego.
Zanim dodamy do bazy danych artykuły, należy zmienić listę dostępnych znaczników. W panelu administracyjnym witryny przechodzimy do zakładki Settings. W wykazie zatytułowanym HTML tags allowed in posts włączamy (tj. zaznaczamy pole wyboru w trzeciej kolumnie pt. Allowed with attributes) dostępność następujących elementów HTML:
- DIV,
- H1, …, H6,
- IMG,
- P oraz
- SPAN.
Teraz możemy przystąpić do umieszczenia artykułów w portalu. Możemy tego dokonać ręcznie, tj. za pośrednictwem panelu administracyjnego. W takim przypadku należy najpierw zdefiniować tematy i sekcje, a następnie kolejno dodać wszystkie artykuły i konstrukcje.
Jest to dość pracochłonne. W celu ułatwienia wykonania ćwiczenia najlepiej wykorzystać skrypty SQL: {stala}sekcje-all.sql{/stala} oraz {stala}konstrukcje.sql{/stala}. Uruchomienie plików wsadowych {stala}sekcje-all.bat{/stala} i {stala}konstrukcje.bat{/stala} spowoduje dodanie do bazy danych opisanych sekcji, tematów, artykułów i konstrukcji.
Po wykonaniu powyższego kroku powinniśmy ujrzeć w serwisie nowe artykuły. Na razie jeszcze kodowanie znaków będzie niepoprawne (stosujemy angielską wersję PostNuke). Z problemem tym uporamy się przygotowując skórkę.
Artykuły i konstrukcje, które dodaliśmy do serwisu, zawierają ilustracje umieszczone w kodzie artykułów elementami IMG. Konieczne jest zatem umieszczenie w odpowiednim miejscu serwisu plików graficznych. Wszystkie elementy IMG wskazują pliki graficzne z folderu {stala}images/dane{/stala}. Należy więc utworzyć folder {stala}PostNuke-0.750/html/images/dane{/stala} i skopiować do niego wszystkie pliki graficzne towarzyszące artykułom i konstrukcjom (pliki te są zawarte w folderach obrazy).
Gdy artykuły i konstrukcje są już umieszczone w bazie danych, przystępujemy do utworzenia systemów menu. Przechodzimy do zakładki Blocks panelu administracyjnego i wybieramy opcję New block. Tworzymy blok typu Core/Generic menu. We właściwościach bloku ustalamy tytuł (np. Program C.a.R)), umiejscowienie (np. Position: Left) i dodajemy kolejno opcje odpowiadające poszczególnym artykułom, przy czym pola URL pozostawiamy chwilowo puste.
Pominięte pola URL wypełnimy w następujący sposób. Przechodzimy do menu głównego witryny i wybieramy opcję Sections. Ujrzymy trzy sekcje. Wybieramy sekcję poświęconą programowi C.a.R, po czym przechodzimy do pierwszego artykułu (artykuł powinien już zawierać ilustrację przedstawiającą okno główne programu). Kopiujemy zawartość pola adres przeglądarki WWW. Pole to zawiera hiperłącze przenoszące do wybranego artykułu. Skopiowane hiperłącze należy wkleić do pominiętego przed chwilą pola URL tabeli zawierającej utworzone menu. W identyczny sposób wklejamy pozostałe cztery adresy. W ten sposób otrzymamy kompletne menu.
W identyczny sposób wykonujemy menu dotyczące pozostałych sekcji oraz menu zawierające wykaz tematów.
Teraz serwis zawiera cztery nowo utworzone menu. Jeśli zechcemy dodać artykuły do którejkolwiek z sekcji lub nową kategorię konstrukcji, wówczas należy zmodyfikować menu dodając odpowiednie informacje. Jeśli natomiast dodajemy nową sekcję, to w serwisie powinno pojawić się nowe menu zawierające artykuły nowo dodanej sekcji.
Kolejnym krokiem tworzenia serwisu jest ustalenie strony startowej. Na stronie tej zechcemy umieścić wyłącznie komunikat powitalny. W tym celu instalujemy nowy moduł o nazwie DynaMOD. Instalacja modułu przebiega następująco:
- rozpakowujemy archiwum modułu,
- kopiujemy rozpakowany folder do {stala}PostNuke-0.750/html/modules{/stala},
- w panelu administracyjnym modułów inicjalizujemy nowy moduł (odnośnik initialise),
- aktywujemy nowy moduł (odnośnik activate).
Na liście dostępnych modułów powinien pojawić się wpis DynaMOD. W pliku {stala}dynamod_user_main.htm{/stala} (folder {stala}PostNuke-0.750/html/modules/DynaMOD/pntemplates{/stala}) wprowadzamy tekst komunikatu powitalnego, po czym zmieniamy stronę startową portalu na DynaMOD. Służy do tego lista rozwijana o nawie Start page zawarta w ustawieniach systemu (zakładka Settings panelu administracyjnego).
Skórka witryny
Gdy dane witryny są już umieszczone w bazie danych, a sam portal skonfigurowany, przystępujemy do pracy nad skórką. Jest to ostatni etap dostosowywania Postnuke do konkretnych potrzeb.
Kopiujemy skórkę pnDefault i poddajemy ją różnym modyfikacjom. Przykładowa skórka pnGeometria zawiera podział portalu na trzy kolumny oraz szablon menu z tłem przedstawionym na rys. 1.
Pamiętajmy o tym, by pliki szablonów zawierały znacznik ustalający kodowanie polskich znaków na ISO-8859-2.
Modyfikowanie skryptów PostNuke\’a
Niestety, nie unikniemy konieczności modyfikacji skryptów .php systemu PostNuke. Powodem takiej sytuacji jest fakt, że PostNuke pomimo stosowania systemu skór jest ciągle jeszcze mieszaniną kodów PHP i HTML. Moduły PostNuke produkują gotowy kod HTML. Jeżeli kod ten nie odpowiada nam, to nie mamy innego wyjścia i musimy poddać modyfikacjom skrypty PHP.
Przykładem takiej sytuacji jest poprawianie błędnego kodu HTML produkowanego przez moduł Sections. Kod HTML zawiera zamknięcie wiersza tabeli, co powoduje problemy przy zastosowaniu trzykolumnowego szablonu strony głównej. Jednym z miejsc, które musimy zmienić, jeśli chcemy utworzyć własną, trzykolumnową skórkę, jest zawartość funkcji {stala}viewarticle(){/stala} w pliku {stala}modules/Sections/index.php{/stala}. Funkcja ta drukuje zamykające znaczniki {html}
{/html} oraz {html}
{/html}, pomimo, że żadna tabela nie jest otwarta.
W jaki sposób szukać miejsc wymagających poprawy? Możemy wyszukać fragmenty kodu drukujące jakąś konkretną zawartość, np.:
i dodać pewne własne (unikalne) identyfikatory (np. postaci ?????A, ?????B itd.):
echo \"?????A
Wówczas zaglądając do źródła HTML otrzymanej strony możemy stwierdzić, które miejsce kodu PHP odpowiada za podany fragment. Przykładowy serwis Geometria zawiera modyfikacje w pliku {stala}index.php{/stala} modułu Sections oraz także w plikach {stala}modules/Topics/index.php{/stala}, {stala}modules/News/index.php i modules/News/article.php{/stala}.
Widoczność bloków w modułach
Jedną z ciekawszych opcji konfiguracyjnych PostNuke\'a jest ustalanie widoczności konkretnych bloków systemu w modułach. Po wejściu do panelu administracyjnego Xanthii oraz wybraniu edycji skórki pnGeometria przechodzimy do ustalenia dostępności bloków (opcja Block control). Tutaj wybieramy interesujący nas moduł, na przykład Sections (z listy Modules wybieramy pozycję Sections). Następnie na liście Blocks zaznaczamy wszystkie bloki i naciskamy przycisk Update.
Na ekranie zostanie wyświetlona lista umożliwiająca podjęcie decyzji, które spośród wszystkich bloków zawartych w portalu mają być widoczne na stronach wyświetlanych za pomocą wybranego modułu.
Jest to bardzo istotna cecha portalu, która daje duże możliwości w dziedzinie adoptowania portalu do konkretnych potrzeb. Wykorzystując tę cechę możemy na przykład udostępniać inny system menu na stronach zawierających artykuły sekcji, a inny na stronach dotyczących konstrukcji. Jeszcze inne systemy menu mogą być zawarte na stronie głównej wyświetlanej modułem DynaMOD.
Witryna pt. \"Konstrukcje Geometryczne\"
Gotowa witryna została przedstawiona na rysunkach 2-5. Strona główna, widoczna na rys. 2, przedstawia komunikat powitalny wyświetlany za pomocą modułu DynaMOD.
Po wybraniu jednego z artykułów zawartych w menu, które są umieszczone z lewej strony, użytkownik zobaczy treść odpowiedniego artykułu. Rysunek 3 przedstawia wygląd witryny po wybraniu artykułu Opis programu C.a.R z menu Program C.a.R.
Menu zawierające kategorie konstrukcji jest widoczne z prawej strony. Po wybraniu opcji Elipsy jest wyświetlana strona przedstawiona na rys. 4. Strona ta zawiera zestawienie wszystkich konstrukcji, które dotyczą elips.
Natomiast kliknięcie dowolnej z konstrukcji przeniesie nas do strony widocznej na rysunku 5. Strona ta zawiera krótki opis konstrukcji oraz ilustrację.