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;
?>