WordPress jako CMS – bloki treści

Jedną z rzeczy, której brakuje mi w WordPress to możliwość budowania stron z bloków, które można umieszczać w zdefiniowanych regionach i oczywiście edytować ich zawartość (podobnie jak to ma miejsce w Drupalu).

Ostatnio pracowałam nad serwisem, w którym strona główna składała się z trzech bloków treści i kluczową sprawą była możliwość ich edycji przez klienta. Teoretycznie taką funkcjonalność można „zasymulować” z pomocą widgetów oraz sprytnie zdefiniowanych sidebarów, ale na szczęście szybko okazało się że nie ma takiej potrzeby :) Rzut oka do repozytorium WordPress i znalazłam kilka obiecujących wtyczek. Ostatecznie jednak wypróbowałam dwie,Multiple content blocksPage.ly MultiEdit i właśnie tą drugą chciałam tutaj przedstawić.

Krok 1. Instalujemy wtyczkę.

Zaczynamy od początku, czyli od instalacji i aktywacji wtyczki w panelu administracyjnym. Wtyczka nie posiada rozbudowanego panelu opcji. W opcji Ustawienia->Multi-Edit mamy jedynie możliwość włączenia obsługi shortocode-ów w zdefiniowanych regionach. Domyślnie opcja ta jest wyłączona.

Krok 2. Tworzymy szablon strony

Wykonaj kopię pliku page.php i zmień jego nazwę na dowolna inną. Na potrzeby tego artykułu stworzymy szablon strony Kontakt z dwoma blokami treści – Left i Right.

<?php
/*
Template Name: Kontakt
MultiEdit: Left,Right
*/
?>

Z punktu widzenia wtyczki page.ly MultiEdit najważniejsza jest druga linijka, gdyż tutaj deklarujemy bloki, z których będziemy korzystać. Nazewnictwo jest dowolne, aczkolwiek nie testowałam, jak wtyczka reaguje na polskie znaki diakrytyczne. Jest to o tyle ważne, że są to równocześnie nazwy regionów wyświetlane w panelu administracyjnym.

Następnie musimy wskazać miejsca w kodzie szablonu, w których powinny zostać wstawione bloki za pomocą poniższego kodu:

<?php multieditDisplay('Left'); ?>

Należy pamiętać, żeby funkcję multiedit() wstawić w środku pętli głównej. W naszym przykładzie mogło by to wyglądać tak:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
	<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
		<div class="entry">
			<?php the_post(); ?>
			<div class="left-content">
            <?php multieditDisplay('Left'); ?>
            </div>
            <div class="right-content">
            <?php multieditDisplay('Right'); ?>
            </div>
        </div>
    </div>
<?php endwhile; endif; ?>

Struktura i nazewnictwo klas css jest zupełnie dowolne. Ważne, aby nazwa bloku podana jako argument funkcji multieditDisplay() była zgodna z tą zdefiniowaną w nagłówku.

I jeszcze rzut oka na ostateczny layout:
Przykładowy layout z zastosowaniem bloków treści

Krok 3. Tworzymy nową stronę w panelu administracyjnym.

Teraz wystarczy tylko wejść do panelu administracyjnego i utworzyć nową stronę, a następnie wybrać dla niej szablon, który przed chwilą stworzyliśmy. Po zapisaniu kopii roboczej i odświeżeniu strony, naszym oczom ukaże się zmodyfikowany edytor z zakładkami odpowiadającymi naszym regionom.
Edycja strony ze zdefiniowanymi blokami treści
Zakładka Main Content zawiera główną treść strony (wyświetlaną za w pętli głównej za pomocą funkcji the_post();).

To w zasadzie koniec. Pozostaje nam już tylko uzupełnić treść w poszczególnych zakładkach i zapisać zmiany. W ten sposób stworzyliśmy stronę ze zdefiniowanymi blokami, których treść można swobodnie edytować.

Related posts:

  1. Jak dodać spis treści dla wpisu lub strony?
Tagi: , , ,

Komentarze

  1. Ciekawe. Brakuje mi tylko przykładu pokazującego jak wygląda strona z wypełnionymi blokami, które sobie stworzymy.

  2. bastetmilo pisze:

    Wydaje mi się, że podobny efekt możemy osiągnąć za pomocą takiego sposobu jak tu http://wp.smashingmagazine.com/2011/10/14/advanced-layout-templates-in-wordpress-content-editor/

    • Ola Łączek pisze:

      Można by :) Sama korzystam z tego właśnie rozwiązania na innym blogu, ale tylko w postach, na stronach nie próbowałam.

      Nie wiem jednak, jak to rozwiązanie dostosować, żeby layouty były wczytywane w zależności od wybranego szablonu strony (gdyby takich layoutów było kilka).

  3. Prowital pisze:

    Gantry Framewok na którym robione są themy ze stajni RocketTheme także umożliwia podobne działania. Tutaj pozycje widgetów, na którymś z filmów ukazana była możliwość ustawiania ilości i szerokości kolumn za pomocą suwaka w adminie.

Dodaj komentarz

*

*