Jeśli nie Wordpress, to co...?date2022-05-06 11:24:28authoradminpreviews63214
landing page of the best project I cooperate

Tak dużo słyszy się o włamaniach na strony Wordpressa, że aż strach go instalować. A gdy już zdecydujemy się na tą platformę, zmuszeni jesteśmy do jej regularnej aktualizacji, co dla niektórych właścicieli stron jest bardzo uciążliwe. Więc co robić...? Ja wybrałem inną opcję - napisałem własny system zarządzania treścią. Mój CMS działa od 2013 roku i nie doświadczył ani jednego włamania, choć co kilka dni takie próby są odnotowywane. Dlaczego zdecydowałem się napisać coś swojego zamiast skorzystać z gotowych systemów typu Wordpress czy Joomla? Z kilku powodów.

Po pierwsze, chciałem stworzyć coś swojego i przy okazji się czegoś nauczyć. Uważam, że najszybciej się uczymy - przynajmniej jeśli chodzi o mnie - gdy robimy coś w praktyce. Zanim zacząłem projekt, wielu rozwiązań, które w nim zastosowałem, nie znałem, i byłem zmuszony poszukać ich w internecie (w dokumentacjach, na forach). W ten sposób zdobyłem mnóstwo cennej wiedzy.

Po drugie, chciałem mieć system skrojony na miarę, wyglądający i działający dokładnie tak, jak sobie zaprojektowałem. Wspomniane gotowe CMS-y nie umożliwiłyby mi tego. Chyba że poinstalowałbym w nich mnóstwo różnych wtyczek, ale obniżyłoby to wydajność i bezpieczeństwo systemu, a często też mogłoby sprawiać problemy z kompatybilnością różnych ich wersji. A tego chciałem uniknąć.

Po trzecie, mój system - w przeciwieństwie do Wordpressa i Joomli - jest lekki i szybki. Nie jest takim ogromnym kombajnem, nie ma w nim niepotrzebnych rzeczy, jest dokładnie tyle, ile potrzebuję. Ani grama więcej.

Po czwarte, znam mój system od podszewki, dzięki czemu wiem, jak go rozbudowywać, dokładać kolejne moduły funkcjonalne, ulepszać. W ten sposób powstały serwisy, które zostały stworzone na bazie mojego systemu i mają dodatkowe, swoje własne, odrębne funkcjonalności: Landing page projektu ExeSystem czy Prezentacja danych.

Po piąte wreszcie, budowa mojego systemu nie jest powszechnie znana, a więc nie znają jej też hakerzy. A nawet, mając kod źródłowy mego frameworka, nie będą tracili czasu na jego zrozumienie i złamanie zabezpieczeń, bo im się to po prostu nie opłaca - moich stron jest zaledwie kilka (cóż to jest wobec tysięcy stron postawionych choćby na Wordpressie!). W związku z tym mój system nie wymaga ciągłych, łatających dziury w zabezpieczeniach aktualizacji, jak ma to miejsce w przypadku znanych open-source'owych systemów. Raz się go zainstaluje i można zapomnieć, nie zaprzątać sobie głowy regularnym instalowaniem najnowszych wersji.

System ten zacząłem tworzyć w kwietniu 2013 r. i w dużej mierze skorzystałem z rozwiązań wprowadzonych w moich poprzednich projektach. Ten szablon jest najnowszy i najlepszy, gdyż zawiera mechanizmy automatyzujące generowanie stron oraz własne walidatory formularzy. Framework jest już kompletny, wszystkie wymagane funkcje zarządzania stroną już są zrobione. Należą do nich m. in.: zarządzanie konfiguracją serwisu, kontami użytkowników, mechanizm kontroli praw dostępu, zarządzanie nawigacją serwisu, podstronami, galerią, generowanie raportów aktywności i statystyk. A wszystko jest zgromadzone w wygodnym i przejrzystym panelu administracyjnym.

Szybko stwierdziłem, że trzeba dodać nową funkcjonalność - filtrowanie list. Uznałem, że jest to przydatne narzędzie, ułatwiające znajdowanie poszukiwanych pozycji na długich listach, zwłaszcza gdy są one podzielone na wiele stron. Aby mechanizm działał, musiałem stworzyć jedną klasę z trzema metodami, i w każdym kontrolerze mającym funkcję listy stworzyć obiekt tej klasy i wywoływać odpowiednie metody (inicjującą i aktualizującą paginację). A dzięki wprowadzeniu nowej klasy pojawiło się rozwiązanie problemu, nad którym pracowałem od dłuższego czasu. I tak oto upiekłem dwie pieczenie na jednym ogniu.

Po krótkim okresie testowania rozszerzyłem funkcjonalność paginacji list - dodałem możliwość zmiany ilości pozycji wyświetlanych na jednej stronie za pomocą wygodnej kontrolki. Dzięki temu można na bieżąco dobierać sobie ilość wierszy na stronę, tak aby wygodnie nawigować po różnych listach - wiadomo: raz chcemy mieć listy krótsze i z większym podziałem na strony, raz dłuższe ale za to z mniejszą liczbą stron.

Ostatnio napisałem własny mechanizm kontroli dostępu użytkowników do zasobów serwisu. Mechanizm oparty jest na dynamicznie zarządzanej liście powiązań użytkownicy - zasoby. Powiązania te można zmieniać z poziomu panelu administratora. Jak to się robi, pokazałem na filmie CMS - mechanizm kontroli dostępu.

Z myślą o tych z Was, którzy chcieliby przetestować system u siebie, stworzony został instalator serwisu, który znacznie ułatwia, a wręcz wyręcza webmastera w zainicjowaniu i uruchomieniu aplikacji na serwerze. Teraz framework będzie dostarczany wraz z instalatorem, dzięki czemu postawienie serwisu stanie się jeszcze łatwiejsze.

Cały kod źródłowy CMS-a jest do pobrania z repozytorium na GitHubie: https://github.com/andrzuk/MyCMS. Zachęcam do eksperymentów i przeróbek na własne potrzeby i według własnych wizji. Powodzenia!