Gdy tworzysz skórkę lub plugin dla siebie, wszelką ich konfigurację zapewne ograniczasz do zapisania kilku stałych/zmiennych w PHP. Zawsze będziesz mógł wrócić do kodu i zmienić ich wartość, przecież to potrafisz. Gdy tworzysz wtyczkę lub skórkę dla klienta, musisz przygotować mniej lub bardziej rozbudowaną stronę konfiguracji, by klient sam mógł sobie wyklikać zmiany.
Tworzenie Options page jest piekielnie trudne, nudne i zniechęcające (jeśli ktoś z tym się nie zgadza, proszę o uzasadnienie). Dokumentacja w Kodeksie jest rozbieżna – po części opisuje starą metodę, gdzie indziej pokazuje metodę nową, która wcale łatwiejsza nie jest. Nie znoszę tego.
Od kilku miesięcy tworzenie stron konfiguracyjnych jednak zwyczajnie polubiłem. A to wszystko za sprawą wypuszczenia przez autorów strony Cheezburger swojej klasy do „wytwarzania” takich stron – CheezCap. Od tego czasu jest to po prostu bajecznie proste. No może nie bajecznie, bo są małe błędy, jednak mimo wszystko nic prostszego chyba obecnie nie ma.
CheezCap pozwala tworzyć strony konfiguracyjne skórek i wtyczek, zawierające typowe pola formularzy (pole wyboru, pole na tekst jedno i wielolinijkowe, checkboksy…) i grupować je w interfejs zakładkowy. Mały wycinek takiej strony widzicie na obrazku powyżej.
Oto jak użyć CheezCap do wlasnych potrzeb i rozwiązać błędy, jakie się na pewno spotka.
Pobierz CheezCap
Znajdziesz go pod tym adresem. Pobrany katalog wgraj do swojego katalogu skórki (w przypadku tworzenia wtyczek, wgraj oczywiście do katalogu wtyczki).
Połącz CheezCup ze swoją skórką
Do pliku functions.php dopisz:
require_once('cheezcap/cheezcap.php');
Skonfiguruj stronę konfiguracyjną
Wszelkich edycji dokonaj w pliku cheezcap/config.php. Zajrzyj do tego pliku, jest on wstępnie skonfigurowany i myślę, że nie trudno domyślisz się co gdzie wpisać.
W zmiennej $themename wpisz nazwę twojej strony konfiguracyjnej.
Aby utworzyć nową zakładkę utwórz nowy obiekt klasy Group() (jak go stworzyć na pewno zorientujesz się – od razu po zainstalowaniu plik config.php zawiera już 3 takie obiekty).
Aby na zakładce utworzyć nową opcję konfiguracyjną, utwórz nowy obiekt jednej z klas BooleanOption (utworzony zostanie checkbox), TextOption (utworzy jednolinijkowe pole tekstowe lub textarea), DropdownOption (utworzy rozwijaną listę wyboru).
I to wszystko. Parametry konieczne do przekazania do klasy podczas tworzenia obiektu różnią się nieco w zależności od tworzonego typu pola i wszystkie są ładnie opisane przez przykład w pliku konfiguracyjnym.
Użyj opcji w swojej skórce
Aby pobrać wartość ustawienia należy odwołać się do obiektu przez $cap->wartość. Przykładowo:
if ($cap->my_boolean_option) {
// zrób coś
}
powyższy kod sprawdzi czy wartość opcji my_boolean_option jest logiczną prawdą (true) i jeśli tak, wykona dany blok kodu. Prościej być chyba nie może.
Problemy
W czasie używania CheecCap zauważyłem kilka problemów; nie sprawiają one jednak żebym miał z niego zrezygnować lub aby części z nich nie dało się obejść.
plik konfiguracyjny zawiera kilka grup i opcji konfiguracyjnych w postaci tablic. Za tablicami w niektórych miejscach pozostawiono niepotrzebne przecinki. W niektórych konfiguracjach PHP sprawia to, że strona się wysypuje. Przecinki należy więc usunąć.
przed odwołaniem się do $cap->wartość łatwo jest zapomnieć o zasięgach zmiennych. Jeśli coś nie działa, przed odwołaniem do zmiennej wykonaj global $cap;
Tytuł strony konfiguracyjnej zawsze ma dopisane po nim słowo „Config”. Jednak nie jest to chyba zbyt uciążliwe.
Klasa narzuca taki a nie inny wygląd i układ strony konfiguracyjnej. Do każdego pola można dopisać tylko jego nazwę i opis. Czasem to okazuje się za mało, gdy np chcielibyśmy zrobić formularze warunkowe. Podejrzewam jednak, że po obejrzeniu klasy na pewno da się ją rozszerzyć o brakujące, specyficzne potrzeby. Sam jednak tego jeszcze nie robiłem.
Co sądzicie o takim rozwiązaniu? A może sami jakoś lepiej radzicie się z topornością api dotyczącego stron opcji? Naprawdę czekam na Wasze komentarze, może uda mi się dzięki temu odkryć coś lepszego niż CheezCap!
Comments