28
kw.
2006
palikowski

Drupal 4.7 - Wrażeń ciąg dalszy

Pora na kolejną porcję achów i ochów nad Drupalem. "Poprzedni tekst http://palikowski.vel.pl/node/103 nawet nie wyczerpał tematu 'gołej' instalacji tego systemu. Co zatem pozostało do powiedzenia? Całkiem sporo, dziś skupię się na rozwinięciu niektórych po macoszemu potraktowanych tematów, oraz podaniu kilku nowych.

Na początek co ciekawsze opcje jakie znajdziemy w panelu administratora.

*SEO*

Czyli Search Engine Optimization. Można powiedzieć, że Drupal posiada dość dobry system przyjaznych wyszukiwarkom adresów. Oprócz zmiany adresu z formy http://strona/index.php?node=12 na http://strona/node/10 mamy też moduł path pozwalający na nadawanie dowolnej stronie dowolnego aliasu.

*Użytkownicy i uprawnienia*

Mimo, że drupal jest niewielki, to system użytkowników jest całkiem rozbudowany. Można zatem dodać dowolne pola (jedno/wielowierszowe pole tekstowe, pole wyboru, lista wyboru, tekstowe pole listy, URL, data), do ich profili, zdecydować czy mają być obowiązkowe, widoczne podczas rejestracji, widoczne w widoku profilu itd.

Z ciekawych funkcji należy wymienić możliwość wyświetlania list użytkowników, którzy w danym polu wpisali lub wybrali taką samą wartość - a więc osoby z tego samego kraju, miasta, słuchające rocka lub pracujące na linuxie - wszystko zależy jakie pola dodamy w ich profilu.

Także uprawnienia są rozwiązane dość ciekawie. Możemy definiować dowolną ilość ról (grup, rang) i przydzielać im prawa. Na przykład Redaktorzy mogą mieć dostęp do edycji wszystkich artykułów i książek, a Znajomi do uploadu plików itd.

Co ciekawe uprawnienia nie są narzucone z góry (nie ma zestawu typu read/comment/add/edit/admin), ale każdy moduł ma swoje specyficzne uprawnienia - w zależności od funkcji jakie oferuje.

*Forum*

Nie jest to forum tak rozbudowane jak phpbb, smf czy ipb. Jednak dostarcza postawowe, znane z innych rozwiązań, możliwości, a więc:

* podział na tablice,
* dowolnie zagnieżdżane kategorie,
* wyświetlanie wątków wedługg popularności, daty,
* widok wątku jako lista płaska lub wątkowa - zwinięta lub rozwinięta,
* przenoszenie wątków

Należy dodać, że forum jest zbudowane jako część systemu zarządzania treścią drupala, a więc każdy wątek jest węzłem (node), z dołączonymi odpowiedziami.

*Bloki*

Bloki w Drupalu niewiele różnią się od tych w innych systemach. Są to po prostu miejsca na stronie gdzie można wyświetlić menu, listę ostatnich wątków, reklamę, linki, a nawet wykonać kod php. Wyświetlanie bloku może być uzależnione od adresu lub - jeśli administrator da taką możliwość - od wyboru przez użytkownika czy chce widzieć ten blok. Można też uzależnić wyświetlanie bloku od kodu php wpisywanego w polu konfiguracji bloku.

Bloki można podzielić na pisane własnoręcznie, dostarczone wraz z drupalem, oraz dostarczone przez zainstalowane moduły. Zwykle po instalacji nowego modułu dostajemy do dyspozycji jeden lub więcej nowych bloków, przykładowo po zainstalowaniu modułu "image" do systemu dodany zostanie blok "ostatni/losowy/popularny obraz".

*Dziennik zdarzeń*

Bardzo przydatna rzecz - zapisywane są tu wszelkie zdarzenia jakie miały miejsce w systemie - logowanie użytkowników, zmiany treści, nowe odpowiedzi, nieudane próby dostępu do plików, odmowy dostępu, błędy działania modułów, prace cron itd. Przeglądanie dziennika ułatwia możliwość wybrania tylko jednej kategorii, np. "szukaj" pokaże nam jakie frazy wpisywano w wyszukiwarkę. Jest też kilka raportów dotyczących tego skąd na naszą stronę trafiają goście, jakie strony są popularne i kto jest najczęstszym odwiedzającym.

*Języki*

Drupal został napisany w sposób umożliwiający całkowitą kontrolę nad językiem interfejsu. Mechanizm gettext, korzystający z plików .po i .pot, pozwala na łatwe przetłumaczenie fraz we wszystkich miejscach na stronie.

Niestety aby w Drupalu uzyskać wielojęzyczność treści a nie tylko interfejsu i komunikatów, należy zaopatrzyć się w moduł i18n, który jeszcze nie został całkiem przerobiony do współpracy z wersją 4.7.

*Drupal jest logiczny*

To co uderza mnie od samego początku używania tego systemu to konsekwencja i logiczność. Może z początku administracja nie jest intuicyjna (to chyba jedna z rzeczy nad którą autorzy powinni popracować aby system zdobył większą popularność), ale kiedy już obklikamy i oswoimy się z panelem administracyjnym, wszystko staje się bardzo sensowne.

Co więcej, po zainstalowaniu kilku dodatkowych modułów zaczynam rozumieć, że nawet dodatki pisane przez programistów spoza ekipy twórców drupala, korzystają z takich samych mechanizmów, co moduły rdzenne.

*Drupal jest na czasie*

Developerzy drupala nie śpią. A jeśli śpią, to z jedną ręką na klawiaturze, wprowadzając poprawki. Taki żart z podcastu na "lullabot http://lullabot.com, ale chyba po części prawdziwy. Zresztą, wspomniana witryna serwująca podcasty (audio i video) to też dowód, że drupalowcy są 'na fali' :).

Myślę, że obecnie drupal jest jednym z najprężniej rozwijanych skryptów typu CMS w internecie. Ostatnie tygodnie przyniosły nam kilka coraz stabilniejszych wersji beta i RC. Kolejne moduły są ulepszane i przerabiane do poziomu 4.7 - często z użyciem nowych technik, np. AJAX'u. Jednocześnie linia 4.6 i 4.5 nadal jest wspierana i łatana (4.5 tylko do momentu wypuszczenia stabilnej wersji 4.7). Developerzy ciągle wymyślają nowe elementy, dzięki którym skrypt jest bardziej przyjazny dla administratorów i redaktorów, oraz bardziej dostępny dla odwiedzających.

Krótko mówiąc na brak supportu (przynajmniej po angielsku) nie będziemy narzekać. To jedna z ważniejszych spraw jakie powinno się brać pod uwagę wybierając platformę pod stronę. Cieszy też wsparcie dla starszych wersji - mamy pewność, że opierając serwis o którąś z wersji drupala nie zostaniemy na lodzie kiedy wyjdzie nowsza. Przy okazji - moja rada na dziś to wybrać 4.7, mimo, że jeszcze nie ma do niego wszystkich modułów z 4.6. Jednak stabilne wydanie, do którego zostało naprawdę niewiele czasu, powinno zmienić tę sytuację. Wyjątkiem może być konieczność użycia nietypowego modułu, który nie będzie przepisany do 4.7 (bo np. jego twórca tak postanowił).

*System szablonów*

Drupal ma ciekawą cechę, a mianowicie można korzystać w nim z kilku różnych systemów szablonów. Obecnie najmocniej wspieranym jest PHPTemplate, który jest szybki i opiera się jak łatwo chyba zauważyć z nazwy o kod PHP. Jednak, jeśli ktoś chce, może zainstalować inny system szablonów i pisać skórki w nim. Obecnie "dostępne lub projektowane silniki szablonów do drupala to http://drupal.org/project/Theme+engines smarty, wgSmarty, xtemplate, PHPTAL.

*Drupal stoi modułami*

Wybór modułów, czyli dodatków, do drupala jest naprawdę spory. Co prawda, ze względu na nietypowe podejście jeśli chodzi o tworzenie treści, możemy się zdziwić, kiedy na liście modułów na drupal.org nie znajdziemy tak typowych nazw jak download, katalog linków, galerie, forum. Za to kiedy przyjrzymy się bliżej, znajdziemy przykładowo moduł "files", który dodaje do systemu rodzaj zawartości typu "plik". Tak samo sprawa się ma z Image, dzięki któemu dodamy obraz jako typ treści.

Skoro mamy rozbudowany system taksonomiczny i odpowiednie typy zawartości nic nie stoi na przeszkodzie abyśmy sami zaprojektowali sobie dział download, prawda?

No cóż, rzeczywistość nie jest tak prosta. Jak już wspomniałem standardowa dystrybucja dostarcza nam tylko widok ala blog, inne musimy sobie zaprojektować używając API drupala i PHP. Tu też przychodzi z pomocą moduł views, który służy do generowania innych niż blog widoków naszej pokategoryzowanej treści. Jest to jednak temat na osobny tekst.

Skoro nie ma wielu typowych modułów, to może są jakieś nietypowe? Oczywiście, jest ich masa. W chwili obecnej nie potrafię jednak napisać o nich nic więcej, niż to co ich autor zawarł w opisie na liście modułów na stronie drupal.org. Na pewno można znaleźć tam wiele dodatkó mocno rozszerzających i korzystających z modułu taksonomia. Podejrzewam, że żaden z systemów cms nie ma tyle możliwości 'grzebania' w systemie taksonomicznym.

Kolejna grupa to moduły rozszerzające nasz skrypt o rozbudowane narzędzia służące do tworzenia społeczności sieciowej. Można więc zbudować stronę ala grono.net, na zaproszenia, z grupami i listami dyskusyjnymi. Można stworzyć giełdę, platformę typu wiki, system dodawania i recenzowania wszelkiego rodzaju produktów.

To że drupal nadaje się na budowę potężnego narzędzia wspomagającego społeczności możemy przekonać się odwiedzając stronę "civicspace labs http://civicspacelabs.org/home/, gdzie znajdziemy drupala zintegrowanego z masą dodatków, a więc wyszukiwanie podobnych użytkowników, listy znajomych, newslettery, potężny system CRM (oparty o "civiCRM http://openngo.org/), ankiety i badania, kalendarium, galerie i plikownie.

*Drupal nie jest ideałem*

Po tym wszystkim co napisałem można by stwierdzić że mówię o skończonej doskonałości, idealnym CMS nadającym się na każdą stronę. Oczywiście tak nie jest. Kilka wad, które spędzają sen z powiek jego użytkowników to:

* problemy jakie przyniósł gettext, czyli na przykład konflikty łańcuchów znaków używanych w różnych modułach, a także niezbyt wygodne śledzenie zmian w kolejnych wydaniach plików językowych,
* brak rdzennego wsparcia dla zawartości wielojęzycznej (a moduł i18n sprawia jeszcze dużo problemów)
* brak zaawansowanych funkcji przy forum (które jednak można 'dopalić' paroma modułami)
* dość niewielka popularność w polsce (co przekłada się na niewielkie wsparcie w naszym języku)
* nieintuicyjna obsługa oraz brak instalatora, co odstrasza początkujących użytkowników.

... ? zapewne do tej listy można dopisać wiele pozycji, być może ktoś napisze swoje propozycje w komentarzach.

Chyba wystarczy na dziś tej propagandy, mógłbym chyba pisać jeszcze długo, jednak następny artykuł o drupalu będzie jak trochę dokładniej mu się przyjrzę :). Szacunek dla wszystkich twórców stron i ich ulubionych CMS - oby Wasze systemy były tak dobre lub nawet lepsze niż drupal! :)