Struktura i budowa bloków Concrete5

Opis budowy i funkcjonowania własnych bloków w Concrete5 CMS

Blok Concrete5 to zbiór plików w określonym katalogu umieszczonym w katalogu "blocks". Struktura bloku składa się z plików i katalogów:
  • add.php: wymagany. Szablon wyświetlany przy dodawaniu bloku
  • edit.php: opcjonalny, wyświetlany przy edytowaniu bloku. edit.php i add.php to zwykłe formularze korzystające z elementów Concrete5.
  • controller.php: wymagany, zawiera podstawowe dane o bloku (nazwa, opis, rozmiary) oraz logikę odpowiedzialną za funkcjonowanie bloku.
  • db.xml: wymagany dla każdego bloku zapisującego swoje dane w bazie danych (przeważnie każdy). Ten plik zawiera wyrażenia XML potrzebne do stworzenia tabel bloku w bazie danych opisanych formatem ADOXMLS.
  • auto.js: gdy plik istnieje jest dołączany do bloku w trybie dodawania i edycji.
  • icon.png: opcjonalny, ikona wyświetlana na liście bloków
  • tools/: opcjonalny, zawartość tego katalogu może być używana przez blok do dowolnych celów.
  • templates/: opcjonalny, można wykorzystać do alternatywnych szablonów istniejących bloków nadpisać te z Concrete.

Instalacja bloku

Mając gotowy blok, czy to własny lub pobrany z listy bloków na marketplace Concrete trzeba go zainstalować.
  • Umieszczamy katalog bloku w blocks/
  • Logujemy się do Concrete i przechodzimy do dashboard
  • Wybieramy zakładkę "Add Functionality" i instalujemy nowo dodany blok
Jeżeli blok jest rozprowadzany jako pakiet to umieszczamy go w "/packages". Blok zostanie zainstalowany (stworzone zostaną tabele) i będzie go można dodawać do stron z poziomu CMSa.

Właściwości w controller.php

Controller.php zawiera informacje o bloku, jak i automatycznie wykonywane metody przy określonych zdarzeniach. Wymagane właściwości to:
  • btDescription: opis bloku wyświetlany w dashboard i w interfejsie bloku
  • btName: nazwa bloku
Opcjonalne właściwości to:
  • btTable: główna tabela bloku. Jeżeli podana oraz jeżeli blok używa tylko jednej tabli to będzie w stanie automatycznie zapisywać informacje do bazy pod warunkiem że pola formularza będą dokładnie zmapowane na strukturę tabeli.
  • btInterfaceWidth i btInterfaceHeight: długość i wysokość modalnego okna używanego przy dodawaniu i edycji bloku.

Struktura tabel w db.xml

Schemat tabeli zawarty w db.xml dla przykładowego bloku wyglądać może tak:
<schema version="0.3">
		<table name="NAZWA_TABELI">
			<field name="bID" type="I">
				<key ></key>
				<unsigned ></unsigned>
			</field>
			<field name="content" type="X2">
			</field>
		</table>
	</schema>
Gdzie "NAZWA_TABELI" to nazwa tabeli zdefiniowana w kontrolerze. W powyższym przykładzie zdefiniowaliśmy kolumnę bID typu integer, unsigned, klucz główny. Następnie mamy pole "content" typu longtext (symbol X2). Format tej konfiguracji to AXMLS.
Każda tabela bloku musi mieć kolumnę bID jako klucz główny. Używana jest ona przez Concrete do wykonywania operacji na blokach.

Dodawanie bloka - add.php

Przykładowa zawartość add.php może wyglądać tak:
<?php echo $form->label('content', 'Treść');?>
<?php echo $form->text('content', '', array('style' => 'width: 320px'));?>
Wykorzystujemy mechanizmy concrete do wygenerowania formularza z polem zmapowany na kolumnę content w bazie danych. Po dodaniu bloku wywoływana jest metoda save(). W przypadku bardziej złożonej funkcjonalności blok może nadpisać domyślną metodę, która zapisuje wysłane dane do głównej tabeli bloka.

Edycja bloka - edit.php

Zawartość "edit.php" jest automatycznie wyświetlana gdy blok jest edytowany. Zazwyczaj będzie to bardzo podobny formularz do tego z add.php. Różnicą będzie opcja przekazywania istniejących wartości do formularza:
<?php echo $form->label('content', 'Treść');?>
<?php echo $form->text('content', $content, array());?>

Wyświetlanie bloka

Szablon "view.php" jest podobny do szablonu edycji, tyle że jeszcze prostszy bo nie ma formularza:
<?php echo $controller->content ?>
blog comments powered by Disqus

Kategorie

Strony