Wstęp
Z Dokumentacja CMS WEGO
Spis treści |
Informacje podstawowe
Ogólna metoda wołania API modułów
Moduły posiadają znormalizowane API, do którego serwis ma dostęp na kilka możliwych sposobów. Część z funkcji ma sens tylko w przypadku wywołania z poziomu kodu PHP. Każdy moduł udostępnia określoną listę metod API. Każda z nich może przyjmować inną liczbę parametrów, część z nich może być opcjonalna, dlatego też chcieliśmy uniknąć udostępniania API w postaci globalnych funkcji PHP. Zanim jednak przejdziemy do opisu API warto wspomnieć o dokumentacji API dostępnej z poziomu panela.
Inicjalizacja WEGO
Poniższy kod powinien znaleźć się na początku każdego pliku PHP, który musi bezpośrednio obsłużyć zapytanie wysłane z przeglądarki (z pominięciem automatycznego routingu wego):
require_once($_SERVER['DOCUMENT_ROOT'] . '/panel/check.settings.php'); require_once($_SERVER['DOCUMENT_ROOT'] . '/class/engine.class.php'); require_once('wegocms/class/engine.class.php'); $engine = engine::getInstance($systemData); $site = new siteEngine($engine);
Wywołanie API modułów
Od tego momentu zmienna $site zawiera wskaźnik na silnik serwisu. Dostęp do modułów jest możliwy przez funkcję call klasy engine. Przykład:
$foo = $site->engine->call('news/list', array('filter' => 'current'));
Ogólna postać wywołania jest następująca:
call('nazwaModułu/nazwaMetodyApi', array('parametr1' => 'wartość1', ...))
Kod Smarty
W przypadku większości typowych serwisów, nie ma potrzeby omijania wbudowanego routingu WEGO i można pozwolić samemu silnikowi na tłumaczenie adresów wysłanych z przeglądarki na odpowiednie wywołania szablonów Smarty. W takim przypadku nie ma potrzeby pisania choćby jednej linii kodu PHP, a dostęp do niezbędnego API realizuje samo Smarty.
Dostępna jest ogólna metoda wywołująca API dowolnego modułu:
{wego brick="nazwaModułu/nazwaMetodyApi" [parametr1="wartość1" ...] [assign="nazwaZmiennej"]}
Nazwę modułu i nazwę metody można znaleźć w panelu WEGO(zaraz po zalogowaniu po prawej stronie jest widoczny link do API), podobnie listę atrybutów, które podaje się w konwencji HTML/XML - jako pary nazwa=wartość. Istnieje jeden specjalny atrybut, assign, który pozwala przypisać wynik wywołania do odpowiedniej zmiennej Smarty.
W celu dokładnego zapoznania się z danymi zwracanymi przez daną metodę warto skorzystać z funkcji{debug}
Drzewo katalogów
Jedynym obowiązkowym katalogiem w WEGO jest /templates/ w którym należy umieszczać szablony Smarty. Jednakże z uwagi na przejrzystość systemu zalecamy następującą organizację katalogów:
- /templates/ - wyżej wymieniony obowiązkowy katalog z szablonami Smarty
- /css/ - arkusze stylów
- /js/ - skrypty JavaScript
- /images/ - wszelkiego rodzaju obrazki
- obrazki dodawane za pomocą TinyMCE dla artykułów, produktów, galerii zdjęć są dodawane do katalogu /images_mce/
- pliki dodawana za pomocą TinyMCE są umieszczane w katalogu /files_mce/
Ważne pliki
- /css/main.css określa style z których korzysta TinyMCE przy edycji WYSIWYG w panelu.
- /templates/not-found.html - wywoływany przy wystąpieniu błędu 404
- /templates/box/pagging.html - stworzony przez nas skrypt realizujący stronicowanie (np. stronicowanie w archiwum aktualności)
Dostępne skrypty
WEGO zawiera kilka gotowych skryptów JS oraz .htc. Dostępne są:
- /css/csshover.htc - efekt "whatever hover" dla IE
- lightbox.js - zmodyfikowany na potrzeby WEGO lightbox 2.0. Modyfikacja dotyczyła ukrywania animacji flash przy wywoływaniu lightboxa. Wymagane pliki:
- /css/lightbox.css
- /js/lightbox.js
- /js/prototype.js
- /js/scriptaculous.js
- /images/prev.gif
- /images/next.gif
- /images/loading.gif
- /images/close.gif
- /js/suckerfish.js - popularny skrypt suckerfish dropdowns.
Dostępne są też skrypty z efektami dla scriptaculous.js:
- /js/builder.js
- /js/controls.js
- /js/dragdrop.js
- /js/effects.js
- /js/slider.js
- /js/util.js
oraz dwa bardzo przydatne skrypty:
- /js/swfobject.js -osadzanie flasha na stronie z obejściem patentu Eolas
- /js/pngfix.mod.js - przezroczyste png dla IE - ta wersja jest zmodyfikowana celem poprawienia współpracy z swfobject.js
Od wersji WEGO 1.2 usunęliśmy biblioteki prototype i scriptacoulous wraz z opartym na nich lightboxem. Zamiast tego zdecydowaliśmy się używać jquery.lightbox wraz z jquery(biblioteka jest po prostu lżejsza). Przy aktualizacjach skryptu jquery.lightbox należy pamiętać o dodaniu kodu:
$(document).ready(function(){ $(function() { $('a[@rel*=lightbox]').lightBox(); }); });
które umożliwią poprawną współpracę skryptu z WEGO.
Użytkownik może oczywiście dodawać własne skrypty js.
Obsługa wersji językowych
Wybór wyświetlanej wersji językowej
WEGO automatycznie wykrywa język w którym powinien zostać wyświetlony serwis (negocjuje język z przeglądarką). Opcję tą można wyłączyć z poziomu panelu Wego -> ustawienia. Jeśli negocjacja wersji językowej z przeglądarką zakończy się niepowodzeniem, serwis jest wyświetlany w domyślnej wersji językowej, którą również można zmienić w panelu Wego -> ustawienia. Informacja o bieżącej wersji językowej jest przechowywana w zmiennej:
{$lang}
Konstrukcja adresów URI odwołujących się do dowolnej strony w aktualnym języku:
/{$lang}/template_name
Przykład menu umożliwiającego zmianę aktualnie wyświetlanej wersji językowej:
<h2>{translate text="[header] wersja językowa"}</h2> <ul id="languages"> <li><a href="/pl/{$section}/{$subsection}">{translate text="[menu] pl"}</a></li> <li><a href="/en/{$section}/{$subsection}">{translate text="[menu] en"}</a></li> <li><a href="/de/{$section}/{$subsection}">{translate text="[menu] de"}</a></li> </ul>
Dodawanie/usuwanie wersji językowych
Dodawanie i usuwanie wersji językowych jest możliwe tylko w zakładce ustawienia w Panelu Sterowania WEGO. Do wprowadzenia tych zmian niezbędne są uprawnienia superadministratora.
