Transcript Slajd 1
dr inż. Piotr Czapiewski Moduły, komponenty, pluginy Szablony Forma prezentacji (układ strony, style, kolorystyka) Moduły i komponenty Dodatkowa funkcjonalność (zaawansowane menu, sondy, fora, galerie, itp.) Moduł – wyświetlanie Komponent – zarządzanie zawartością Pluginy Najbardziej zaawansowana forma rozszerzenia Joomla! Najniższa warstwa systemu, kontrola podstawowych funkcji Joomla! Extensions Directory http://extensions.joomla.org 24 kategorie rozszerzeń + podkategorie Najpopularniejsze rozszerzenia Najlepiej oceniane Kopie zapasowe i migracja JoomlaPack JCE, XHTMLSuite in2it, CrossContent, JoomlaFCK Editor Zarządzanie użytkownikami Community Builder E-commerce Galerie zdjęć i filmów Expose Flash Gallery Wspomaganie zarządzania treścią SectionEx VirtueMart – ogólny sklep internetowy Rozwiązania dla konkretnych produktów, np. samochody, nieruchomości Obsługa płatności, subskrypcji, obsługa koszyka, aukcje… Edytory Mapy stron Zarządzanie plikami joomlaXplorer Remository Zarządzanie projektami, praca grupowa, kalendarze… Kopie zapasowe oraz migracja witryny Narzędzie do tworzenia kopii zapasowych witryn oraz ich odtwarzania http://www.joomlapack.net Automatyczny backup w postaci pojedynczego archiwum ZIP ▪ Zawartość bazy danych ▪ Struktura plików Technologia AJAX ▪ Zmniejszenie liczby błędów związanych z opóźnieniem w komunikacji Możliwość stworzenia instalatora ▪ Instalacja na serwerze, gdzie nie ma jeszcze Joomla! ▪ Kopiowanie na serwer tylko archiwum ZIP i pojedynczego pliku PHP Podział zadania na mniejsze etapy ułatwia backup dużych witryn Zastosowania Etapy działania Kopie zapasowe Inicjalizacja Klonowanie witryn Zrzut bazy danych Migracja witryny Pakowanie plików Stworzenie witryny wzorcowej Lokalne testowanie nowych wersji Lokalne debugowanie Finalizacja Instalacja Standardowo: Rozszerzenia->Instalator Po zainstalowaniu pojawia się nowe menu: Komponenty->JoomlaPack Podstawowe Katalogi: wyjściowy i tymczasowy Nazwa pliku wyjściowego Poziom logowania Zaawansowane Kompatybilność ze starszą wersją MySQL, algorytmy kompresji, itp. Zmieniać tylko wówczas, gdy przy parametrach domyślnych backup się nie powiedzie Frontend Możliwość wywołania backupu automatycznie (np. z użyciem cron, wget) Numeryczne Parametry Magiczne Nazwa mówi wszystko… Ruszać tylko w razie absolutnej konieczności… Podstawowe Katalogi: wyjściowy i tymczasowy Nazwa pliku wyjściowego Poziom logowania Zaawansowane Kompatybilność ze starszą wersją MySQL, algorytmy kompresji, itp. Zmieniać tylko wówczas, gdy przy parametrach domyślnych backup się nie powiedzie Frontend Możliwość wywołania backupu automatycznie (np. z użyciem cron, wget) Numeryczne Parametry Magiczne Nazwa mówi wszystko… Ruszać tylko w razie absolutnej konieczności… Podstawowe Katalogi: wyjściowy i tymczasowy Nazwa pliku wyjściowego Poziom logowania Zaawansowane Kompatybilność ze starszą wersją MySQL, algorytmy kompresji, itp. Zmieniać tylko wówczas, gdy przy parametrach domyślnych backup się nie powiedzie Frontend Możliwość wywołania backupu automatycznie (np. z użyciem cron, wget) Numeryczne Parametry Magiczne Nazwa mówi wszystko… Ruszać tylko w razie absolutnej konieczności… Podstawowe Katalogi: wyjściowy i tymczasowy Nazwa pliku wyjściowego Poziom logowania Zaawansowane Kompatybilność ze starszą wersją MySQL, algorytmy kompresji, itp. Zmieniać tylko wówczas, gdy przy parametrach domyślnych backup się nie powiedzie Frontend Możliwość wywołania backupu automatycznie (np. z użyciem cron, wget) Numeryczne Parametry Magiczne Nazwa mówi wszystko… Ruszać tylko w razie absolutnej konieczności… Podstawowe Katalogi: wyjściowy i tymczasowy Nazwa pliku wyjściowego Poziom logowania Zaawansowane Kompatybilność ze starszą wersją MySQL, algorytmy kompresji, itp. Zmieniać tylko wówczas, gdy przy parametrach domyślnych backup się nie powiedzie Frontend Możliwość wywołania backupu automatycznie (np. z użyciem cron, wget) Numeryczne Parametry Magiczne Nazwa mówi wszystko… Ruszać tylko w razie absolutnej konieczności… Wykonanie kopii Backup Now / Twórz kopię zapasową Wykonanie kopii Backup Now / Twórz kopię zapasową Kopiuj swoją stronę internetową ▪ Pełna kopia witryny, baza danych + pliki Kopiuj swoją bazę danych ▪ Kopia samej bazy danych, do zaimportowania np. przez phpMyAdmin Postęp procesu… …gotowe. Zarządzanie plikami kopii Manage Backup Files Pobieranie lub usuwanie archiwum z kopią Zawartość archiwum Instalator zbliżony do instalatora Joomla Przywracanie kopii zapasowej Metoda 1 ▪ Rozpakowanie archiwum z kopią ▪ Wgranie na serwer ▪ Uruchomienie instalatora Metoda 2 ▪ Wgranie na serwer archiwum ZIP oraz pliku kickstart.php ▪ kickstart.php znajduje się w archiwum kickstart_1.2.2.zip, pobranym wraz z pakietem instalacyjnym JoomlaPack ▪ Uruchomienie pliku kikstart.php ▪ Skrypt rozpakuje archiwum i uruchomi instalator Przykład Zapisano archiwum z kopią witryny: site-localhost-20081205-154756.zip Katalog , w którym ma się znaleźć kopia witryny: c:\xampplite\htdocs\joomla5 Do powyższego katalogu kopiujemy pliki: ▪ site-localhost-20081205-154756.zip ▪ kickstart.php Uruchamiamy skrypt kickstart.php wchodząc na adres: ▪ http://localhost/joomla5/kickstart.php Uruchomienie kickstart.php Wybór archiwum do zainstalowania Uruchomienie kickstart.php Postęp rozpakowywania Uruchomienie kickstart.php Rozpakowywanie zakończone Uruchomienie instalatora Nie zamykaj okna przeglądarki Kliknij na linku Instalator kopii zapasowej Kroki takie same, jak przy instalacji Joomla! Instalator kopii zapasowej Kluczowy moment: konfiguracja bazy danych Instalator kopii zapasowej Ponowne ustawienie hasła administratora Joomla! Instalator kopii zapasowej Porządki… Moduł sklepu internetowego Sklep internetowy http://virtuemart.net Plugin do Joomla! realizujący pełną funkcjonalność sklepu internetowego Zarządzanie kontami użytkowników (adresy dostawy, historia zakupów, itd.) Potwierdzanie zakupów przez e-mail Bezpieczne połączenie przez SSL Obsługa płatności i wysyłki Rozszerzalny za pomocą pluginów Katalog produktów Organizacja produktów w kategorie Możliwość użycia jako katalog, bez funkcjonalności sklepu Ocena produktów przez użytkowników Joomla! z preinstalowanym i skonfigurowanym sklepem VirtueMart http://virtuemart.net, Downloads, VirtueMart eCommerce Bundle (w. Joomla! 1.5.8) Polska wersja Polskie centrum VirtueMart http://www.virtuemart.pl Spolszczenia samego VirtueMart Specjalna wersja eCommerce Bundle PL [Jarzębina] Panel administracyjny polskiej wersji VirtueMart Nazwa szablonu – bez spacji i znaków specjalnych Katalogi szablonu [joomla]/templates/nazwa_szablonu/ [joomla]/templates/nazwa_szablonu/CSS/ [joomla]/templates/nazwa_szablonu/images/ Podstawowe pliki szablonu index.php – główny plik szablonu; układ i logika strony templateDetails.xml – plik z metadanymi template.css – główny arkusz CSS template_thumbnail.png – podgląd szablonu Zawartość pliku templateDetails.xml Nazwa szablonu, opis, autor, wersja, data utworzenia Informacja dla instalatora – lista plików szablonu <?xml version="1.0" encoding="windows-1250"?> <?xml version="1.0" encoding="windows-1250"?> <!DOCTYPE<!DOCTYPE installinstall PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" <name>SzablonTestowy</name> "http://dev.joomla.org/xml/1.5/template-install.dtd"> "http://dev.joomla.org/xml/1.5/template-install.dtd"> <install version="1.5" type="template"> <creationDate>04 June 2008</creationDate> <install version="1.5" type="template"> <name>SzablonTestowy</name> <author>Jan Kowalski</author> <creationDate>04 June 2008</creationDate> <author>Jan Kowalski</author> <authorEmail>[email protected]</authorEmail> <authorEmail>[email protected]</authorEmail> <authorUrl>www.kowal.pl</authorUrl> <authorUrl>www.kowal.pl</authorUrl> <copyright></copyright> <copyright></copyright> <license>GNU/GPL</license> <license>GNU/GPL</license> <version>1.0.0</version> <description>Przykładowy szablon</description> <version>1.0.0</version> <files> <files> <description>Przykładowy szablon</description> <filename>index.php</filename> <filename>index.php</filename> <filename>css/template.css</filename> <filename>css/template.css</filename> </files> </files></install> Główny (i jedyny wymagany) plik szablonu – index.php Mieszanka HTML i PHP Określenie struktury strony, wyświetlanie modułów i komponentów, układ strony Wywołanie funkcji Joomla Framework Logika strony, zachowanie, funkcje JavaScript Typowy układ strony nagłówek szukaj ścieżka nawigacji (breadcrumbs) lewe menu część główna stopka prawe menu Najprostsza zawartość pliku index.php <html> <body> <table width="800px"> <tr> <td colspan="2" id="header">header</td> <td rowspan="2" id="search">search</td> </tr> <tr> <td colspan="2" id="breadcrumbs">breadcrumbs</td> <tr> <td id="left_menu">left_menu</td> <td id="main">main</td> <td id="right_menu">right_menu</td> </tr> <tr> <td colspan="3" id="footer">footer</td> </tr> </table> </body> </html> Wywołanie metod klasy JDocument Obiekt jdoc, wywołanie metody: <jdoc:nazwa_metody parametry /> Dodawanie nagłówka <jdoc:include type="head" /> Dodawanie modułów <jdoc:include type="modules" name= "top" style= "xhtml" /> Dodawanie komponentu głównego <jdoc:include type="component" style="xhtml" /> Funkcja wyświetlająca moduł: <jdoc:include type="modules" name= "nazwa" style= "styl" /> Nazwa odpowiada pozycji modułu top, left, user1, user2, user3 Styl określa sposób opakowania kodu HTML modułu Nie determinuje dokładnego sposobu formatowania, dopiero CSS wprowadza właściwe formatowanie Dostępne style: ▪ ▪ ▪ ▪ ▪ table – moduł wyświetlany w tabeli horz – moduł wyświetlany horyzontalnie, w komórce otaczającej tabeli xhtml – moduł wyświetlany wewnątrz elementu div rounded – przystosowanie do wyświetlania zaokrąglonych narożników none – brak dodatkowego formatowania modułu none – brak dodatkowego formatowania modułu table – moduł wyświetlany w tabeli horz – moduł wyświetlany w zagnieżdżonej tabeli xhtml – moduł wyświetlany wewnątrz elementu div rounded – przystosowanie do wyświetlania zaokrąglonych narożników rounded – przystosowanie do wyświetlania zaokrąglonych narożników Oprócz dyrektywy jdoc:include w pliku index.php można wykorzystywać dowolne funkcje PHP, w tym funkcje udostępniane przez Joomla Framework Przykłady: $this – bieżący obiekt, w przypadku szablonu – obiekt klasy JDocumentHTML ▪ <?php echo $this->language; ?> Inne dostępne pola: ▪ template, title, description, link Przydatne metody klasy JDocumentHTML: $this->countModules(‘user1’); $this->countModules(‘user1 + user2’); Przykład: sprawdź, czy w górnej części strony znajdują się jakieś moduły jeśli tak – wyświetl moduły; jeśli nie – wyświetl obrazek <?php if($this->countModules('top')) : ?> <jdoc:include type="modules" name="top" /> <?php else : ?> <img src='placeholder.gif'> <?php endif; ?> Definicja parametrów – plik templateDetails.xml <params> <param name="authorCopyright" type="radio" default="1" label="Author Copyright" description="Show/Hide copyright."> <option value="0">hide</option> <option value="1">show</option> </param> </params> Wartości parametrów – plik params.ini Dostęp do parametrów z poziomu kodu: $this->params->get('nazwaParametru') Zabezpieczenie szablonu przed wywołaniem z zewnątrz (nie za pośrednictwem Joomla!) defined(‘_JEXEC’) or die(‘No access available’); Powyższy kod należy umieszczać zawsze przed kodem wykonywalnym, np. na początku pliku index.php Dodanie odwołania standardowego arkusza CSS (zdefiniowanego przez Joomla!): <link rel="stylesheet" href="templates/system/css/general.css " type="text/css" /> Dodanie odwołania do arkusza CSS szablonu: <link href="templates/nazwa_szablonu/css/template.css " rel="stylesheet" type="text/css" /> lub bardziej uniwersalnie: <link rel="stylesheet" href="templates/ <?php echo $this->template ?> /css/template.css" type="text/css" /> Do przygotowania arkusza CSS konieczna jest znajomość nazw stylów/klas stosowanych przez główny komponent oraz moduły Joomla Przykładowe style: article_separator, author, componentheading, contentpane, module, sectiontableentry, sectiontablefooter, title, … Definiujemy tylko te style, które są nam potrzebne Lista wszystkich stylów http://docs.joomla.org/CSS pliki przykładowych szablonów Narzędzie pomocne w identyfikacji właściwych stylów CSSViewer 1.0.3 – wtyczka do przeglądarki Firefox https://addons.mozilla.org/pl/firefox/addon/2104 Przygotowanie szablonu do dystrybucji Pakowanie Plik templateDetails.xml musi zawierać listę wszystkich plików szablonu <files> <filename>index.php</filename> <filename>css/template.css</filename> <filename>images/logo.jpg</filename> </files> Katalog szablonu pakujemy do pliku .zip Instalacja Standardowo, z poziomu panelu administracyjnego Joomla: Rozszerzenia Instalator Szablony dla wersji 1.0 i 1.5 nie są ze sobą kompatybilne Dwie możliwości: Użycie szablonu przez włączenie trybu legacy Konwersja szablonu do wersji 1.5 Zmiany konieczne w pliku index.php: Joomla 1.0 _VALID_MOS $mosConfig_absolute_path $mosConfig_live_site Stałe łańcuchy tekstowe echo 'Hello' Joomla 1.5 _JEXEC $this->baseUrl $mainframe->getCfg( 'live_site' ) Wywołania funkcji – wsparcie dla wielu wersji językowych echo JText::_( 'Hello' ) mosGetParam JRequest::getVar $id = mosGetParam( $_REQUEST, 'id', 0 ); $id = JRequest::getVar( 'id', 0 ); mosShowHead() <jdoc:include type="head" /> mosMainBody() <jdoc:include type="component" /> mosLoadModules($position_name, <jdoc:include type="modules" $style); name=$position_name style=$style /> Odpowiedniki stylu wyświetlania modułu: Joomla 1.0 -3 -2 -1 0 Zmiany w templateDetails.xml <mosinstall type="template"> <install version="1.5" type="template"> Joomla 1.5 rounded xhtml none table Materiały dotyczące budowy szablonów http://docs.joomla.org/Joomla!_1.5_Template_Tutorial http://docs.joomla.org/Template_reference_material D. Rahmel, Professional Joomla!, Wrox 2007 T. B. Silver, Joomla! Template Design, Packt Publishing 2007 Programowanie modułów Najprostszy moduł – Hello World Przygotuj katalog dla modułu: mod_helloworld Stwórz główny plik modułu: mod_helloworld.php <?php defined( '_JEXEC‘ ) or die( 'Dostep zabroniony!' ); echo JText::_( 'Hello World!‘ ); ?> Najprostszy moduł – Hello World Stwórz plik deskryptora modułu: mod_helloworld.xml <?xml version="1.0" encoding="Windows-1250"?> <install type="module" version="1.5.0"> <name>Hello World</name> <author>Jan Kowalski</author> <creationDate>Listopad 2008</creationDate> <copyright>(C) 2008 Jan Kowalski</copyright> <license>GNU/GPL</license> <authorEmail>[email protected]</authorEmail> <authorUrl>www.jasiokowalski.pl</authorUrl> <version>1.0.0</version> <description>Moduł Hello World</description> <files> <filename module="mod_helloworld">mod_helloworld.php</filename> </files> </install> Instalacja modułu Hello World Moduł musi zostać zarejestrowany w Joomla! Konieczne jest spakowanie plików modułu do archiwum ZIP i zainstalowanie przez panel administracyjny Spakuj katalog mod_helloworld do archiwum mod_helloworld.zip Zainstaluj moduł przez panel administracyjny (Rozszerzenia->Instalator) Umieść moduł na pozycji top (Rozszerzenia->Moduły->Nowy->Hello World, Pozycja=top) Moduł Hello World widoczny na stronie głównej witryny <?xml version="1.0" encoding="Windows-1250"?> <install type="module" version="1.5.0"> <name>Modul bash.org.pl</name> <author>Jan Kowalski</author> <creationDate>Listopad 2008</creationDate> <copyright>(C) 2008 Jan Kowalski</copyright> <license>GNU/GPL</license> <authorEmail>[email protected]</authorEmail> <authorUrl>www.jasiokowalski.pl</authorUrl> <version>1.0.0</version> <description> Moduł wyświetlający najnowszy wpis ze strony bash.org.pl </description> <files> <filename module="mod_bash">mod_bash.php</filename> </files> </install> <?php defined('_JEXEC') or die( 'Dostep zabroniony!' ); $ch = curl_init('http://bash.org.pl/latest/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $page = curl_exec($ch); curl_close($ch); $pattern = '#<div class="quote post-content post-body">(.*?)</div>.*#s'; preg_match($pattern, $page, $out); $msg = trim($out[1]); echo $msg; ?> <?xml version="1.0" encoding="Windows-1250"?> <install type="module" version="1.5.0"> <name>Modul Dilbert</name> <author>Jan Kowalski</author> <creationDate>Listopad 2008</creationDate> <copyright>(C) 2008 Jan Kowalski</copyright> <license>GNU/GPL</license> <authorEmail>[email protected]</authorEmail> <authorUrl>www.jasiokowalski.pl</authorUrl> <version>1.0.0</version> <description> Moduł wyświetlający najnowszy komiks ze strony dilbert.com </description> <files> <filename module="mod_dilbert">mod_dilbert.php</filename> </files> </install> <?php defined('_JEXEC') or die( 'Dostep zabroniony!' ); $ch = curl_init('http://dilbert.com/strips/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $page = curl_exec($ch); curl_close($ch); $pattern = '#<div class="STR_Image">.*?<img src="(.*?)".*#s'; preg_match($pattern, $page, $out); $img = '<img src="http://dilbert.com/' . $out[1] . '" />'; echo $img; ?>