Quick.CMS - test systemu zarządzania treścią

Kilka dni temu skontaktował się ze mną pracownik firmy OpenSolution. Przedstawił krótko swój produkt: malutki skrypt CMS, sugerując przetestowanie go i opisanie wrażeń. Rozwiązanie prezentuje się interesująco.

Robienie reklamy konkurencji nie jest czymś, co lubię robić na co dzień (prowadzę wszak własną firmę, gdzie wykorzystuję własny CMS), po przyjrzeniu się jednak Quick.CMS stwierdziłem, że chyba mogę sobie pozwolić na napisanie paru słów. Klientów raczej nie stracę, a rozwiązanie prezentuje się interesująco.

Gwoli ścisłości zaznaczam, że testowałem wersję 4.2.

Dla kogo to?

Quick.CMS, jak mi się zdaje, kierowany jest do użytkownika prywatnego, potrzebującego prościutkiej stronki, wizytóweczki. Ewentualnie widzę również jego zastosowanie jako wsparcie kampanii SEO, można bowiem na nim szybko i bezproblemowo postawić malutką stronkę tematyczną, wrzucić kilka tekstów i podlinkować do pozycjonowanej strony. Ewentualnie mógłby to być jakiś squeeze page, czy wreszcie stronka informacyjna na temat jakiegoś produktu.

Z tego, co widzę, CMS może być wykorzystany za darmo, co ucieszy tych mniej wymagających odbiorców. Na stronie OpenSolution znaleźć jednak można również płatne rozszerzenia i wsparcie techniczne. Osoby skłonne wydać parę złotych mogą zatem uczynić z tego niezwykle prostego CMSa nieco bardziej złożone narzędzie.

Jeśli chodzi o bardziej „wyrafinowane” zastosowania, to nawet pomimo dostępności dodatkowych pluginów, Quick.CMS raczej nie będzie się nadawał do pewnych zastosowań. Nie widzę go jako narzędzia dla blogera — tu znacznie lepiej sprawdzi się Wordpress. Nie sądzę, by nadawał się jako narzędzie do rozsyłania masowego mailingu (pomimo dostępności pluginu wzbogacającego go o obsługę newsletterów). Również wątpię, by miały sens modyfikacje CMSa pod kątem niestandardowych typów zawartości, wymagających dodatkowych pól w formularzu tworzenia strony — tutaj naturalnym wyborem będzie chyba Drupal.

Instalacja

Pierwsza rzecz, która rzuca się w oczy po rozpakowaniu pobranej paczki, to rozmiar skryptu. Całość waży około 1MB, z czego większość to obrazki i dodatki, m.in. TinyMCE. Samego kodu PHP jest tam zaskakująco mało — ot, kilka pliczków po kilkaset linijek kodu. Czy to dobrze, czy źle — nie wiem. Z jednej strony mamy do czynienia ze skryptem prawdopodobnie działającym diablo szybko (piszę „prawdopodobnie”, bo nie chciało mi się przeprowadzać testów na zewnętrznym serwerze i poprzestałem tylko na działającej jak burza lokalnej kopii). Z drugiej, pewne kwestie mogły zostać potraktowane trochę po macoszemu. Ale o tym za chwilę.

Instalacja skryptu przebiegła bezproblemowo. W zasadzie nie można nawet mówić o instalacji, bo wystarczyło skopiować pliki na swoje miejsce i od razu wszystko zadziałało. Bardzo fajne rozwiązanie dla „atechnicznych” użytkowników — a takich przecież jest sporo.

Skrypt nie korzysta z bazy danych, a jedynie płaskich, zserializowanych plików PHP, więc nie trzeba się martwić stworzeniem bazy i skonfigurowaniem połączenia. Dla małych, wizytówkowych stronek — jak znalazł. Do tego wszystko jest od razu prekonfigurowane tak, żeby wystarczyło zmienić kilka opcji i po paru minutach oglądać gotową stronę.

Rzut oka na backend

Panel administratora jest… hm… skromny. UX nie jest może jakimś majstersztykiem, ale najważniejsze założenie jest spełnione: interfejs jest czytelny. Jedyna rzecz, której panowie z OpenSolution powinni się przyjrzeć bliżej jest opisanie pól formularzy. URL, SEO, przekierowanie — to pojęcia, które rozumie każdy programista, ale nie każdy Kowalski. Przypuszczam, że skrypt bardzo skorzystałby na jakimś opisie objaśniającym, co dane pole w zasadzie robi [mała edycja: zwrócono moją uwagę na odnośnik do dokumentacji przy formularzach, zawierający opis pól, a którego wcześniej nie zauważyłem]. Poza tym wszystko wygląda OK. Zwłaszcza cieszy fakt wzięcia pod uwagę pozycjonowania: każda ze stron może mieć własny tytuł, opis, słowa kluczowe, czy adres URL.

Zarządzanie stronami jest nieskomplikowane. Ciekawie rozwiązano zwłaszcza podpinanie stron do menu — zamiast płaskiej listy dostępnych stron, mamy od razu podział na menu wraz z zagnieżdżeniami. Wizualnie ułatwia to zarządzanie całością. Nie wiem, jak sprawa wygląda z podłączaniem jednej strony do kilku menu. Zdarza się, że elementy pierwszego poziomu menu głównego są zduplikowane w stopce - a nie są to przecież oddzielne podstrony. Nie sprawdzałem jednak, czy taka opcja jest możliwa, wychodząc z założenia, że przeznaczenie CMSa (proste stronki dla niewymagających i przede wszystkim nieobeznanych z technologiami webowymi użytkowników) ma chyba prawo do wymuszania pewnych uproszczeń, przynajmniej w darmowej wersji.

Podobnie fajne, choć nieco ograniczone, jest zarządzanie plikami. Dodanie obrazków do podstrony i umieszczenie ich w pożądanym miejscu to tylko kilka kliknięć i nawet przeciętny Kowalski poradzi tu sobie bez problemu. Gorzej, jeśli chcemy mieć jakąś galerię zdjęć w ściśle określonym miejscu (np. między określonymi akapitami), ale Quick.CMS to nie Wordpress, a jego zarządzanie obrazkami to nie NexGEN Gallery, więc chyba nie ma sensu wymagać takiego poziomu konfigurowalności.

SEO

Adresy URL są średnio ładne, bazują bowiem na parametrach GET. Domyślam się, że jest to założenie przyświecające skryptowi — nie wymaga bowiem rozszerzenia mod_rewrite, ale mimo wszystko odniosłem wrażenie pewnego anachronizmu. Serwery nieoferujące mod_rewrite należą już chyba do wymarłego gatunku, a nawet jeśli jakieś darmowe hostingi są tak ubogie, to zawsze można wybrać inny, oferujący tak podstawowe funkkcje. Na szczęście w oferowanych przez Quick.CMS adresach URL jest zawsze jakiś znormalizowany tytuł strony, więc nie trzeba się martwić o to, że Google odmówi współpracy przy pozycjonowaniu strony. O ile jakiś fajny routing mógłby tu być przydatny (nie sądzę, by obciążył całość skryptu na tyle, by dało się zauważyć jakiekolwiek spowolnienie pracy), o tyle trzeba zauważyć, że standardowe adresy URL mogą zostać nieco „odpicowane” poprzez usunięcie z nich ID strony — dostępny jest plugin, który daje taką opcję. Dodatkową rzeczą, o jakiej należy pamiętać, jest fakt, że Quick.CMS nie jest jedynym produktem OpenSolution. Płatna wersja zwana Quick.CMS.Ext zawiera już tzw. przyjazne linki, zatem brak tej funkcji w wersji darmowej jest zapewne działaniem celowym — z mojego punktu widzenia, jako przedsiębiorcy, uzasadnionym.

Każda z edytowanych podstron, jak już wspomniałem wyżej, może mieć zdefiniowany tytuł i indywidualne znaczniki meta, podobnie jak URL. Nie znalazłem możliwości dodawania mniej oczywistych znaczników — przypisanie autorstwa za pomocą tagu, czy użycia indywidualnych ustawień robots (a spotkałem się już z sytuacją, gdzie klient chciał indeksować wszystkie podstrony serwisu z wyjątkiem jednej). Zadbanie o przyzwoite organiczne SEO za pomocą oferowanych narzędzi jest jednak możliwe, więc nie ma co narzekać.

Gorzej ma się sprawa z mapą strony XML, ale tu ponownie pojawia się argument ceny skryptu: funkcja jest niedostępna jedynie w wersji darmowej.

i18n, l10n

Nie kryję pewnego zaskoczenia w związku z obsługą wielojęzyczności (zarówno internacjonalizacji, jak i lokalizacji). Nie ma tu co prawda interfejsu lokalizacji, mamy raczej do czynienia z dwoma osobnymi zestawami danych i treści. To bardzo uproszczone podejście, które niestety nie umożliwia „przełączania” się między odpowiednikami tej samej podstrony w różnych językach. Ale ważne, że działa. Jedyny szkopuł to brak jakiegoś przełącznika języków we frontendzie — bez niego zmiana języka jest trochę uciążliwa. Ale być może jest do tego jakiś plugin. Przyznam bez bicia, że nie szukałem.

Będąc przy tłumaczeniach, myślę, że warto dodać jeszcze jedną rzecz: skrypt umożliwia względnie nieskomplikowane zarządzanie dostępnymi językami i dodawanie nowych, jednak zmienianie ich we frontendzie jest zasadniczo niemożliwe bez odrobiny kombinowania. To stwarza nieco probemów. Wyobrażam sobie sytuację, gdzie domyślnym językiem jest angielski, ale strona ma również wersję polską dla rynku lokalnego. Nie bardzo wiem, czy skrypt oferuje tylko wersję językową ustawioną jako domyślną, czy analizuje również nagłówki przeglądarki, ale widzę już, że Kowalski, zobaczywszy stronę po angielsku, nie zabawi na niej długo bez jakiegoś widżetu umożliwiającego przejście do polskie jwersji językowej. Jasne, dodanie go „na sztywno” to żaden problem… dla mnie. Byłoby fajnie, gdyby w kolejnych wersjach takie coś się pojawiło.

Zabawa z frontendem

Od strony frontendu wszystko wygląda całkiem nieźle. Autorski system szablonów nie jest specjalnie wyrafinowany, ale ma podstawowe opcje, takie jak obsługa zmiennych i pętli. Da się go opanować w parę minut, więc napisanie własnej skórki nie jest żadnym problemem, a przy okazji unikamy bardziej ociężałych rozwiązań, takich jak Smarty.

Dla mniej obeznanych z pracą frontendowca jest jeszcze jeden plus: CMS umożliwia instalowanie gotowych skórek. Tych zaś można znaleźć trochę na stronie producenta. Skórki płatne, trochę bardziej „wypasione” niż te darmowe, są również dostępne, a przypuszczam, że i skłonienie designera do złożenia czegoś customowego nie powinno nastręczyć większych problemów, czy stanowić ogromnego dodatkowego kosztu.

Skromna krytyka

Nie ma skryptów idealnych i trzeba o tym pamiętać. Dla niektórych wadą Drupala jest jego absurdalna wręcz skalowalność i możliwość wyklikania cudów na kiju. Idzie za tym dość duża złożoność systemu, odciskająca się też boleśnie na szybkości działania, czy generowanym obciążeniu serwera lub bazy danych. Pamiętam pewną anegdotyczną już sytuację, jak robiąc przedwyborczą stronkę typu „zagłosuj na mnie” jednemu z lokalnych polityków, pracowałem na Drupalu 6 i z niejakim zaskoczeniem stwierdziłem w pewnym momencie, że na stronie głównej każde żądanie generuje ponad 500 (słownie: pięćset) zapytań SQL. Istne szaleństwo! A słyszałem o przypadkach jeszcze bardziej skrajnych.

Dla mnie liczą się zalety — Drupal ma ich sporo, tak samo, jak sporo znalazłem w Quick.CMS (choć w obu przypadkach zalety są zupełnie inne, kwalifikując oba CMSy do diametralnie różnych zastosowań). Nie będę mówił, że Drupal jest zbyt złożony — bo jeśli potrzebuję prostszego rozwiązania, użyję Wordpressa, czy właśnie Quick.CMS. Jest jednak coś, na co zwrócić uwagę chyba warto.

Naturalnym dla mnie krokiem podczas testowania jakiegokolwiek skryptu jest próba zepsucia go. O ile ataki typu SQL injection trochę mijają się tu z celem, o tyle XSS już może być wykorzystany. Dobrze (albo i nie), że we frontendzie nie uświadczymy formularzy, bo nie ma gdzie próbować bawić się w internetowego złoczyńcę. Pluginy, które można doinstalować, dają możliwość wykorzystania formularzy, ale z tego, co widziałem, szukanie podatności nie jest takie proste. Natomiast panel administratora jest dostępny (znowu: bez dodatkowych pluginów) tylko dla jednej osoby, więc zabezpieczanie jego formularzy przed atakami XSS można uznać za mijające się trochę z celem. Jednak trochę dziwne wydaje mi się dopuszczenie wszelkich znaczników HTML we wszystkich polach formularzy — nawet takich, gdzie znaczniki powinny być odfiltrowane, jak tytuł strony. Oczywiście JavaScript również odfiltrowywany nie jest, chociaż być może it’s not a bug, it’s a feature.

Pozostając przy temacie formularzy: z tego, co widzę, jedynym „zabezpieczeniem” przed potencjalnie niebezpiecznymi znakami, jakie można wprowadzić w formularzu jest dodanie backslashy przed cudzysłowami (ale apostrofy już przechodzą bez problemu). Mało trochę i boję się, że ktoś mógłby tam coś zmajstrować. Byłoby też fajnie, gdyby przefiltrowane dane były wpisywane w formularz po odrzuceniu backslashy. Po wpisaniu do szukajki cudzysłowu i klikukrotnym naciśnięciu „szukaj” skończyło się na tym, że treść pola po każdym przeładowaniu strony „wzbogacała się” o dodatkowy backslash. Niby niewielkie potknięcie, ale jak na płatny plugin, chyba trochę nie na miejscu (mam jednak nadzieję, że błąd zostanie usunięty po opublikowaniu informacji na jego temat). Ciekawe jest też to, że wpisanie w tejże szukajce kawałka kodu JavaScript owocuje timeoutem. Sprytne zabezpieczenie, czy skrypt sobie nie radzi z szybkim przetworzeniem danych wejściowych?

Werdykt

Podsumowując: jeśli ktoś potrzebuje CMSa do szybkiego, łatwego i taniego zbudowania prostej stronki i zarządzania garstką statycznych stron, jeśli rozwiązania bardziej złożone, jak Wordpress, Drupal, czy inne znane rozwiązania tego typu są armatą na muchę i wykraczają poza realne potrzeby, to Quick.CMS jest naprawdę ciekawą propozycją. Łatwość instalacji, dostępność pluginów i skórek, szybkość działania i względna intuicyjność panelu administratora sprawiają, że niewymagający (i niezamożny) użytkownik znajdą tu coś, co pozwoli im zaistnieć w Internecie.


Komentarze

Jarek

2015-02-04, 14:43

Polecam sprobować Quick.Cms 6.0. Ta recenzja jest juz mocno zdezaktualizowana

Dominik Marczuk

2015-02-04, 14:54

Dwie duże wersje różnicy robią swoje :). Ale aktualizacji robić nie zamierzam: ani nie śledzę jego rozwoju, ani nie korzystam z niego w żadnym projekcie, więc nie bardzo też jest mi "po drodze" z kolejnym testowaniem i poprawianiem starego artykułu. Ale wielkie dzięki za Twoją uwagę.

dominikk

2015-03-01, 23:03

tekst recenzji mimo, że starszej wersji jest wsparciem dla ludzików, co wiedzą coś ale nie do końca i nie mają czasu na wnikanie - mnie to utwierdza w słuszności wyboru tego cms'a - small&easy i darmo i może działać poprawnie; thx za pracę dla autorów i Pana Marczuka


Napisz komentarz


Szukaj wpisów


Chmura tagów