27
kw.
2006
palikowski

Drupal 4.7 - wrażenia

Skoro już moja strona Drupalem jest napędzana, może nieco w temacie tego niedocenianego i niezbyt znanego CMS'a.

Przyznam, że Drupal kojarzył mi się do niedawna (nie mam pojęcia dlaczego!) z czymś niezbyt dopracowanym i przestarzałym... Co prawda system rozwija się ładnych parę lat, jest więc dojrzały, ale musiałem zweryfikować swoje skojarzenia bardzo szybko, zaraz po instalacji na lokalnym serwerze.

W momencie gdy piszę te słowa dostępna jest wersja 4.7 RC (Release Candidate ) 3, która jest naprawdę stabilna i działa bez problemu. Ze stabilnością poprzedniczek też nie było wiele problemów - moja strona działała całkiem dobrze na wersjach beta2, 4, 5 RC1 i RC3.

Oczywiście ściągnąć Drupala i moduły do niego, zobaczyć demo, przejrzeć go w akcji, najlepiej na oficjalnej stronie tego systemu - "Drupal.org http://drupal.org

*Instalacja Drupala...*

...nie jest może tak ładna jak w innych CMS'ach, ale za to sprowadza się do wgrania na serwer około 400kB plików, wrzucenia schematu bazy danych na serwer mysql i zmiany *jednej* linijki w konfiguracji (zawiera po prostu dane o bazie i użytkowniku mysql). Resztę system potrafi sobie samodzielnie 'wyczuć'.

Więcej o instalacji, spolszczeniu i konfiguracji Drupala znajdziesz w podręcznikach na stronach

letwist.net http://letwist.net/drupal/drupal
drupal.cvbge.org http://drupal.cvbge.org/node/22

Strona już działa, ale brakuje jej administratora. Rejestrujemy zatem pierwszego użytkownika, który staje się superadminem, ustawiamy jakieś przyjemne hasło i czym prędzej klikamy do panelu zarządzania. Brr... nieco surowa ta strona, pierwsze co robię to wymiana skórki na jakąś bardziej przyjazną oku. Na szczęście zanim zacznę szukać skórki w internecie mam do wyboru 4 lekkie, zgodne ze standardami, przyjemne dla oka wersje wyglądu. Jak miło.

Sprawdźmy jakie *moduły* są dostępne w 'gołej' wersji naszego nowego nabytku. Znajdziemy sporo dziwnych nazw ale są pośród nich też typowe rzeczy - i to całkiem sporo. Jest więc:

* forum dyskusyjne (proste ale dość przyjemne),
* ankiety (najprostsze z możliwych),
* agregator rss (z podziałem na kategorie),
* blogi użytkowników (każdy może mieć swój),
* profile użytkowników z dowolnymi polami,
* komentarze do zawartości,
* formularze kontaktowe dla każdego użytkownika,
* zaawansowana wyszukiwarka,
* upload plików,
* aliasy adresów (np. /autor, zamiast /node/23),
* uprawnienia użytkowników (role).

Oczywiście wymieniam te bardziej typowe. Z bardziej tajemniczych można wymienić *throttle* czyli system wyłączający niektóre elementy strony przy zbyt dużym obciążeniu, *blog api* pozwalające na dodawanie treści do naszej strony z serwisów obsługujących mechanizmy XML-RPC, *ping* do informowania zewnętrznych serwisów o zmianach na stronie, *tracker* służący do śledzenia zmian na witrynie, *watchdog* i *statystyki* czyli dziennik zdarzeń i informacje dla admina. Całkiem sporo jak na czystą instalację? To jeszcze nie koniec.

*Treść*

Wszelkie sprytne zabawki i wodotryski to jednak tylko dodatek do tego co jest w każdej witrynie najważniejsze. Chodzi mi o jej zawartość, czyli moduły *node i taxonomy*.

Osobny kawałek tekstu należy się systemowi publikowania treści i kategoryzowania jej w Drupalu. Do tego tematu postanowiono podejść trochę inaczej niż w znanych mi systemach. Dość ciężko mi to opisać więc posłużę się porównaniem.

Weźmy przykładową stronę na której są newsy, blogi, forum, download, galerie i artykuły. W Mambo/Joomla każdy z tych elementów to osobny komponent, w php-nuke osobny moduł. Każdy z nich ma inny interfejs, różnie wygląda administracja i podobne sprawy.

W Drupalu mamy *jeden* system który odpowiada za dowolny rodzaj treści, a każdy element - czy to atrykuł, wpis w blogu, obraz w galerii, plik, czy post na forum (!) to element tego systemu, tzw. node (różnie tłumaczone, ja lubię termin węzeł).

Tak, nie przywidziało się wam - forum, blogi, artykuły, książki, newsy, galerie, plikownie, linkownie - wszystko to opiera się o jeden moduł, w obrębie którego tworzymy coś na wzór szablonu treści. Szablon może zawierać dowolne pola - obrazów, plików, tekstowe, pola wyboru, pola typu lista, radio, checkbox, data. Następnie wprowadzamy przez taki szablon treść, która bez względu na rodzaj staje się węzłem systemu drupal, z własnym unikalnym numerem.

*Żeby nie było zbyt pięknie* - w podstawowej instalacji nie ma żadnego kreatora takich szablonów. Nie ma też modułów 'galeria', 'download', 'baza linków'. Z dostępnych szablonów mamy tylko wpis w blogu, statyczną stronę, artykuł i stronę książki (o książkach później). Kolejne szablony możemy sobie tworzyć za pomocą edycji plików szablonów, czyli musimy znać dość dobrze system Drupal. Jeśli nie macie zacięcia to takich zabaw, przeczytajcie kolejny akapit, ponieważ...

... *nie jest znów tak źle* , bo w dziale download strony drupal.org znajdziecie nie tylko masę gotowych do instalacji modułów, które wprowadzają nowe szablony (np. galerie, plikownie), ale także świetny moduł flexinode, za pomocą którego stworzycie swój unikalny szablon treści wybierając pola i nazywając je po swojemu. Kolejna dobra wieść to ta, że podobny do niego, ale jeszcze lepszy moduł CCK (Content Creation Kit) jest w fazie betatestów i zostanie wkrótce dołączony do rdzennych modułów Drupala (ale pewnie poczekamy na to do wersji 4.8).

Wróćmy na ziemię. Czy naprawdę z pomocą flexinode mogę sobie stworzyć dowolny rodzaj treści? Na start stworzyłem typ nazwany Recenzja, z polem do uploadu obrazka, oceną od 1 do 5, linkiem do strony producenta i nazwiskiem twórcy. Zajęło mi to kilkanaście minut :). Kolejny typ - Helpdesk do wprowadzania przez moich klientów zgłoszeń problemów z ich stronami - stworzyłem już w kilka minut.

*Wprowadzanie treści*

Ok, mamy zatem treść w dowolnej formie, przydałoby się ją jakoś wprowadzić do systemu a potem przydzielić do jakichś kategorii, stworzyć menu nawigacyjne, jak z tym sobie radzi Drupal?

Radzi sobie świetnie :). Kolejny raz przekonuję się o inteligencji twórców Drupala. Zamiast ustalać jeden słuszny i politycznie poprawny sposób, dali wolną rękę developerom. Dodawanie węzłów jest zatem dość rozbudowanym, a przede wszystkim modułowym systemem. Znaczy to, że przy odrobinie chęci, umiejętności programistycznych, lub po wyszukaniu gotowca na stronie drupal.org, możemy stworzyć sobie i użytkownikom praktycznie dowolny sposób dodawania treści.

A więc, mamy *formaty danych i filtry*. Jesteś bywalcem forów i lubisz bbcode? A może często pracujesz na systemach typu Wiki? Przyzwyczaiłeś się do Textile, albo po prostu wolisz z ręki pisać HTML? Nie ma problemu. Admin instaluje tylko odpowiedni filtr (te co wymieniłem są dostępne do ściągnięcia, można też napisać własne), a ty pisząc artykuł wybierasz sposób jaki ci odpowiada. Standardowo zainstalowany jest HTML, HTML z konfigurowalnymi ograniczeniami i PHP. Nie napiszę o WYSIWYG bo nie próbowałem, ale jest integracja z FCK i TinyMCE, więc nie powinno być problemów.

Bardzo wygodny jest zestaw narzędzi dostępny podczas zapisywania treści. Możemy więc za jednym zamachem napisać artykuł, wykonać link do niego w dowolnym menu, nadać mu alias (czyli zamiast /node/15 może być np. /o-autorze), załączyć plik, wybrać czy artykuł ma się pojawić na stronie frontowej, zmienić autora, wybrać czy mają być dostępne komentarze i wybrać datę publikacji.

Ok, napisałem już kilka artykułów, może by to jakoś poukładać w kategorie?

*Taksonomia uber alles*

Żeby oddać system taksonomii Drupala napisałem osobny artykuł "Drupal a taksonomia http://palikowski.vel.pl/node/5, ale poniżej streszczę jego sedno:

*Drupal posiada jeden z najlepszych i najbardziej rozbudowanych systemów taksonomicznych* (czyli obsługujących kategoryzację treści) jaki znam. Nie od parady moduł do tego przeznaczony nazywa się Taxonomy a nie Categories. Węzły (elementy zawierające treść) można zatem przydzielić do jednej lub kilku kategorii. Same kategorie (zwane tu słownikami) mogą mieć hierarchię prostą i złożoną, a należące do nich elementy (zwane terminami) mogą mieć synonimy i terminy powiązane. Wszystko to tworzy niezły galimatias i na początku nie bardzo wiadomo jak się w tym odnaleźć (do dzisiaj próbuję to ogarnąć :P). Każdy słownik i terminy w nim mogą zostać przydzielone do 'obsługi' dowolnych typów zawartości, oraz opisane (zdefiniowane). Można zatem użyć modułu taksonomii do stworzenia nie tylko kategorii ale i słownika (są też moduły do łączenia takiego słownika z treścią strony, wyświetlające opisy terminów w bloku obok artykułu lub jako opisy typu tooltip czy link do definicji). Uff...

*Forma*

No więc mamy już kategorie i treść, trzeba by to jakoś jeszcze pokazać na stronie, zrobić w menu linki, może RSS? Nic prostszego - każdy termin w słowniku posiada swój numer, i po dodaniu go do url strony dostaniemy listę należących do danego terminu elementów treści. Jeśli więc mamy blog i galerię zdjęć możemy wymieszać pod terminem 'moje miasto' zarówno notki z bloga, jak i pojedyncze zdjęcia. Dodatkowo dla każdego takiego wykazu artykułów mamy kanał RSS. Oczywiście jest też kanał RSS dla strony frontowej - na której możemy umieszczać (bądź nie) dowolny element treści. Każdy użytkownik ma też swój numer i adres bloga - z listą notek i kanałem RSS. Admin ma np. adres http://strona.pl/blog/1.

Do pełni szczęścia brakowałoby tworzenia wykazów zawierających elementy z więcej niż jednej kategorii - np. cms i webmaster. Brakowałoby - ponieważ taka też istnieje :). Wystarczy w adresie podać kilka liczb oznaczających id terminów i połączyć je w jeden ciąg (np. 4+7+12). W ten sposób również dostaniemy kanał rss z listą tych elementów.

W 'gołym' drupalu nie ma zbyt wiele możliwości sterowania wyprowadzaniem danych czyli prezentowaniem zawartości. Podstawowym i jedynym widokiem dostępnym w Drupalu jest widok typu blog - a więc zajawki artykułów, z linkiem "czytaj dalej". Możemy zdefiniować ile znaków ma zawierać zajawka, ile ma ich być na jednej stronie, wykonać boczny blok z najnowszymi i najpopularniejszymi artykułami, i to w zasadzie wszystko. Dobrze chociaż, że pisząc artykuł możemy wymusić przedłużenie bądź skrócenie wstępu wstawiając znacznik break w miejscu gdzie ma skończyć się zajawka.

Z drugiej strony mamy do Drupala wiele modułów rozszerzający możliwości prezentowania treści, tak więc każdy znajdzie coś dla siebie. Dzięki temu że autorzy nie narzucili nam swoich wizji Drupal może być tak niewielki (pamiętajmy, nieco ponad 400kB), a po ściągnięciu lub napisaniu odpowiednich modułów możemy dowolnie modelować naszą stronę.

Piszę i piszę, a końca nie widać. Coś chyba w tym drupalu jest skoro tyle można o nim nabazgrać. Żeby nie zanudzać i nie wygadać wszystkiego na jeden raz, postanowiłem że tu zakończę a kolejne wrażenia opiszę w następnym tekście. Będzie zatem coś o użytkownikach, ich uprawnieniach, profilach, a także forum dyskusyjnym i kilku ciekawych modułach ze strony drupal.org.

Do zobaczenia :).

Aktualizacja: jeśli macie ochotę na więcej wrażeń z używania drupala to zapraszam po "ten tekst http://palikowski.vel.pl/node/104.

PL - Pustynia drupaLowa

Wpisał grieco (niezweryfikowany) 28 April 2006 - 4:08pm.
Dziwi mnie tylko fakt, że drupal w Polsce jest baardzo w tyle za mambo, pn itd. - słabo rozpoznawalny, ze słabym marketingiem. Z drugiej strony mimo iż stron na drupalu nie liczy sie w tysiącach to przyznaje, ze widizałem dużo więcej "cukiereczków" niż u konkurencji. Wracając jednak do marketingu - na drupal.org pojawił się artykuł http://drupal.org/node/59170 - w którym zapowiadają - wraz z pojawieniem się finalnej wersji 4.7 - przeprowadzenie szerokiej kampanii reklamowej - na zewnątrz- wzorowanej na promocji 'liska' przez mozillę. Co na to Polska?? Mamy słabe community.. polska strona drupala to pustynia.. a szkoda. Bo w naszym kraju na "fali" nadchodzącej drupalowej kampanii można było 'co nie co' zdziałać. Gdyby nie Letwist.. ludzie nie wiedzielby nawet ze drupal istnieje. pzdrówka grajkoo

A propos

Wpisał archetwist@letwist.net (niezweryfikowany) 28 April 2006 - 10:56pm.
A propos letwist, marketingu i "co na to Polska": Na wydanie finalnej 4.7 przygotowałem małą drupalową reklamę 200x300 ;) . Co do tekstu - zabrakło mi cierpliwości żeby przeczytać w całości ;) , ale: - raz są używane angielskie, a raz polskie terminy - czasem nawet polskawe: agregator. I tak na marginesie - już chyba pisałem, że żadne ze znaczeń słowa "węzeł" nie pasuje do funkcji, którą spełnia element Drupala zwany po angielsku "node" (czy zwany dobrze - nie wnikam).