Lis
30
2011

Tworzenie stron konfiguracyjnych jest trudne. Z zastosowaniem CheezCap już nie.

 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!

Powiązane wpisy

O autorze: Konrad Karpieszuk

Jak każdy chyba tutaj zacząłem po prostu od blogowania. WordPress jednak tak mnie zafascynował, że szybko zabrałem się za tworzenie stron na nim opartych. Później przyszedł czas na pisanie poradników z nim związanych, zdarzyła się nawet książka. Współorganizowałem pierwszy polski WordCamp. Opiekuję się serwisem WPzlecenia.pl, a teraz także tym podserwisem, na którym właśnie jesteście: dev.WPzlecenia. Wszystkim życzę jak najwięcej wyniesionej WIEDZY odnośnie WordPressa. Zaparzcie kawę, usiądźcie wygodnie i - do lektury! :)

Obecnie jestem pracownikiem firmy tworzącej wtyczkę WPML (pozwala tworzyć wielojęzykowe strony), gdzie odpowiadam za jej rozwój. Jestem także autorem bardzo popularnej wtyczki sklepowej TradeMatik

6 komentarzy + Dodaj komentarz

  • Raczej tworzę szablony pod konkretne życzenia, więc rozbudowanych opcji konfiguracyjnych nie tworzyłem – w przypadku niewielu opcji większych problemów nie miałem, jednak pamiętam, że za pierwszym razem wygodne to nie było. Później to wiadomo: kopiuj, wklej, edytuj, zapisz :)

    Opisane rozwiązanie wydaje się ciekawe, będzie trzeba je przetestować.

    • ale czasem jednak to sie przydaje i pod konkretny szablon dla jednego klienta. przykladowo: nie wiem jaki jest adres fanpage’u na facebooku. moglbym zapytac mailem i jak dostane odpowiedz wpisac w skorke. moge tez dac pole na wpisanie tego adresu w cheezcap i spokojnie pracowac dalej.

  • Ja akurat mam przygotowany szablon i tam wstawiam wszelkie dodatkowe opcje (telefon, fax, fanpage, itd.).
    Co prawda chciałbym to zrobić trochę inaczej, ale testowałem różne rozwiązania i moje działa, a to chyba najważniejsze ;)
    Ale wtyczki nie znałem, sprawdzę, przyda się.

    • rozumiem, ze masz szablon kodu, ktory produkuje options page? :) to tez w sumie dobry pomysl

      • Tak, zrobiłem sobie w ogóle cały szablon WP z Custom Post Type, template itp.
        Jak tworzy się nowa strona to wywalam co niepotrzebne albo dodaję to co się przydaje.
        Dzięki temu mogę wdrożyć nowego skin w ciągu godzin, nie dni ;)

        A tutaj zrobiłem sobie jeden szablon, dodaję odpowiedni pola i po sprawie.
        Nie wiem czy kodem jest to super dobre rozwiązanie, ale porównywałem je z Nettuts+ i innymi znanymi serwisami także nie jest źle ;)

  • Miał ktoś przyjemność działać z http://www.binpress.com/app/wordpress-fastoptions/514 ?
    Ciekaw jestem, co wygodniejsze…

Uwaga, leci reklama:

Firefox jest znów szybki!

Gdzie nas czytać?

Autorzy »
Komentujący »
#wpzlecenia »