Natknąłem się na bardzo ciekawą wypowiedź niejakiego Chrisa Wilsona - platform architect Internet Explorer’a. Podczas MIX 2007 powiedział on, że Microsoft planuje zawarcie swego rodzaju “umowy” z twórcami stron internetowych (chodzi oczywiście o koderów HTML/CSS). Umowa ta zobowiązywałaby webdeveloperów do ścisłego trzymania się standardów. Wilson powiedział, że aktualnie tylko połowa spośród dwustu największych serwisów internetowych na świecie jest zgodna ze standardami W3C a jeszcze 5 lat temu żadna firma nie zwracała w ogóle uwagi na zgodność ze standardami. Twierdzi on ponadto, że gwałtowniejsze zmiany w silniku IE spowodowałyby kłopoty z prawidłowym wyświetlaniem stron. Po zastosowaniu wspomnianej umowy odpowiedzialność za źle wyświetlające się strony spadłaby na nas - webdeveloperów.
HALO! O czym ten pan mówi? Odpowiedzialność za źle wyświetlające się strony od zawsze ciąży na koderach - fakt, dostajemy drgawek dostosowując nasz kod pod IE6 i ostatnio również IE7. Tutaj MS dodał nam sporo dodatkowej pracy. Ze słów Wilsona wynika, że kiedy już zrobią przeglądarkę w pełni zgodną ze standardami to odetną się całkowicie od krytyki kierowanej w kierunku IE. Podpiszą z nami “umowę”? Brzmiałoby to mniej więcej tak: “nasza przeglądarka zbudowana jest w 100% zgodzie ze standardami - coś się źle wyświetla - to musi być wina developera lub W3C - mamy to na papierze”. A może należy się kilka słów wyjaśnień odnośnie poprzednich odsłon (IE6, IE7), może to my powinniśmy podpisać z MS “umowę” o następującej treści: “Nasz kod jest w 100% zgodny ze standardami W3C, nieprawidłowości w wyświetlaniu strony spowodowane są przez błędy przeglądarki”.
Programistom i marketingowcom Microsoft’u gratuluję tupetu.
Dziś pierwszy dzień wiosny. Dokładnie 3 lata temu (ściślej to trochę później - o 22:00), w katowickim szpitalu, przyszła na świat nasza córeczka. Miała szczęście trafić na prawdziwy, piękny, pierwszy dzień wiosny - ciepły i słoneczny (o 22 już niekoniecznie słoneczny :) ). To, że był to poniedziałek, było wtedy nieistotne.

Aż trudno uwierzyć, że minęły już całe 3 lata - Nadia stała się dziewczynką, nie jest już małym, ruchliwym, dzidziusiem, którego pamiętamy.

Jakiś czas temu zacząłem podchodzić do WordPressa bardzo poważnie, próbując zbudować na nim w pełni funkcjonalny serwis. Jako w pełni funkcjonalny serwis rozumiem stronę, która zawiera dowolną ilość edytowalnych podstron, konfigurację struktury tychże, moduł wiadomości, formularz kontaktowy, biuletyn mailowy, ewentualne forum bądź system komentarzy. Wszystko to w dowolnie zaprojektowanej oprawie graficznej, która w żaden sposób nie może być ograniczana poprzez sposób realizacji projektu.
Nie jestem programistą, więc nie jestem w stanie stworzyć w pełni funkcjonalnego, stabilnego, serwisu z dynamicznie uzupełnianą treścią. Tutaj z pomocą przyszedł mi WordPress, który z początku traktowałem tylko jako bardzo ciekawy system blogowy (z kategoriami, postami i komentarzami na czele). Kilka blogów później postanowiłem wykorzystać potencjał tkwiący w WP do bardziej ambitnych realizacji. Manipulując wyłącznie kategoriami udało mi się stworzyć całkiem sprawnie działający serwis festiwalu filmowego Watch Docs. Przypisanie kategorii do wszelkich opcji nawigacyjnych okazało się całkiem nieźle funkcjonować.

To było jednak nadal podejście Webmasterskie. Niewiele miało wspólnego z CMSem, ponieważ korzystałem wyłącznie z postów, pomijając zaawansowane zarządzanie stronami statycznymi (page, wp_list_pages). Później przeczytałem od deski do deski instrukcję tworzenia “skórek” i doznałem olśnienia. System warunkowych tagów WordPress’owych (Conditional Tags) w ramach PHP okazał się niebywale intuicyjny. Z ich pomocą możemy dowolnie definiować gdzie i w jakich okolicznościach chcemy wyświetlić określone elementy. Wszystko w ramach jednego szablonu. Dzięki Conditional Tags ustalamy przede wszystkim przy jakich warunkach wyświetlimy Template Tags. Te można uzupełniać o atrybuty, które ustalają np. ilość wyświetlanych elementów przez dany tag czy też prefiks html’owy.
Gdybym teraz pracował nad projektem pokroju Watch Docs z pewnością użyłbym Template Tag zwanego the_tag, czyli tagu w sensie słowa kluczowego. Takie słowa kluczowe stanowią świetne uzupełnienie kategorii, których nie musimy już mnożyć w nieskończoność. Kategorie to stałe i niezmienne elementy, które uzupełniamy słowami kluczowymi. W przypadku festiwalu filmowego kategoriami pozostałyby więc konkursy, natomiast tytuły filmów, data wyświetlania i litera alfabetu stałyby się słowami kluczowymi. Słowa kluczowe tworzymy w nieco inny sposób od kategorii - nie są one z góry definiowane. Każdorazowo musimy wpisać tagi do konkretnego posta. Czyli w sytuacji, kiedy posiadam do opisania film, to określam konkurs, do którego przynależy jako jego kategorię (zawsze jedna z dziesięciu). Natomiast jego tytuł jest już słowem kluczowym, które jest użyte tylko raz, więc nie ma sensu tworzyć z niego kategorii. Litery alfabetu również przyporządkowuje jako słowa kluczowe. Z tytułów (czy liter, choć to raczej pozbawione jest sensu) mogę stworzyć chmurę tagów, która może pokazywać popularność danego tytułu (dzięki plugin’owi). Z liter alfabetu mógłbym utworzyć chmurę tagów sortowaną poprzez ilość postów przyporządkowanych do danej litery (tu już plugin nie jest potrzebny).

Znakomitym pomysłem jest też możliwość stosowania szablonów podstron. Możemy stworzyć X takich szablonów by później swobodnie się pomiędzy nimi przełączać tworząc nową podstronę. Struktura podstron jest stosunkowo łatwa w konfiguracji, tworząc szablon musimy pomyśleć w jakiej hierarchii mają wyświetlać się w menu kolejne podstrony - np. alfabetycznie lub po czasie dodania. Można stworzyć kilka wersji i korzystać z nich jak z szablonów. W ten sposób budujemy typowy system zarządzania stronami (możliwość edycji określonych w szablonie elementów podstron, czyli podstawowy >the_content< plus pola dodatkowo w rodzaju: "czy wiesz, że", "o autorze"). Właściwie typowa strona korporacyjna może oprzeć się w całości o >pages< oraz >posts< użyte tylko do modułów wiadomości. Obecnie nie dysponuje przykładem takiej strony, który mógłbym zademonstrować publicznie - mogę jedynie zagwarantować, że system ten sprawdza się świetnie.
Plugin'y - to kolejna wielka zaleta WordPress'a. Gdy nie jesteśmy w stanie osiągnąć czegoś manipulując funkcjami WP, instalujemy plugin, których na dedykowanych WordPress'owi stronach jest multum. Dzięki plugin'om tworzymy newslettery, formularze kontaktowe, rozbudowujemy standardowe funkcje WP o nowe parametry, tworzymy zaawansowaną walidację danych przesyłanych poprzez formularze na stronie, czy likwidujemy wiszące, polskie, znaki dzięki prostemu plugin'owi Artura - “Wiszące Spójniki” - tego nie ma nawet Zend Framework :)
WordPress jest narzędziem, o które z powodzeniem można oprzeć serwisy bez rozbudowanej funkcjonalności społecznościowej. Plusów zastosowania takiego rozwiązania jest sporo. Przytoczę najważniejsze z nich:
- WordPress jest w ciągłym rozwoju, narzędzie to jest szeroko stosowane i ogólnie znane, kod staje się doskonalszy wraz z wypuszczaniem nowych wersji;
- to szerokie rozpowszechnienie przekłada się na możliwość przenoszenia obsługi projektu pomiędzy różnymi wykonawcami;
- do zrealizowania całego projektu potrzebny jest grafik i Web Developer, zbędny staje się programista (może on wspierać Web Developera pisząc potrzebne plugin’y); Web Developer projektuje cała strukturę serwisu i staje się jego jedynym wykonawcą;
- odbiorca serwisu wykonanego z wykorzystaniem WP otrzymuje produkt z maksymalnie prostym panelem administracyjnym; panel ten jest identyczny w każdym projekcie opartym o WP; do panelu istnieje pełna, szczegółowa, dokumentacja stworzona przez autorów WordPress’a - w razie problemów można do niej sięgnąć, z dokumentacją do autorskich systemów CMS niestety bywa różnie;
- tworzymy stronę opartą o “skórki”, nie jest więc problemem przygotowanie kilku takich skórek, których zmiana to jedno kliknięcie; w ten sposób wchodzimy w posiadanie skórek okolicznościowych: na Boże Narodzenie, Wielkanoc czy alarmowej w skali szarości;
- idealna optymalizacja pod silnik wyszukujący google’a; dodatkowo możemy tworzyć XML sitemaps korzystając z wtyczki;
- generowanie RSS;
Obecnie jestem w trakcie realizacji kilku projektów opartych o WP. Mam nadzieję, że w najbliższym czasie będę miał okazję je tu zaprezentować. Postaram się również zamieścić artykuł o powstawaniu takiego serwisu “od kuchni”.