Joomla! - przydatne dodatki.pdf

(1361 KB) Pobierz
37151875 UNPDF
Technika
Joomla!
Przydatne dodatki
Dla Joomla! istnieje wiele użytecznych dodatków – w tym artykule pojawią
się trzy z nich – które zwiększają już i tak duże możliwości tego systemu a
za pomocą niewielkiej ilości kodu php możemy jeszcze lepiej dopasować
je do swoich potrzeb.
Dowiesz się...
• Jak dopasować system do własnych potrzeb
za pomocą dostępnych komponentów;
• Jak umieścić własny skrypt PHP za pomocą
Add PHP;
• Jak dodawać ogłoszenia za pomocą kompo-
nentu JA.
Powinieneś wiedzieć...
• Umiejętność zainstalowania systemu Joomla!
oraz dodatkowych komponentów;
• Umiejętność tworzenia sekcji, kategorii i arty-
kułów w Joomla!;
• Podstawowa wiedza z zakresu PHP.
numer magazynu a kategorie w sekcji
będą widoczne w menu jako jego spis
treści,
• nazwa sekcji to numer czasopisma li-
cząc od pierwszego wydania (np. 64).
Według nazwy sekcji będą pobierane
dane z bazy więc nie może się ona po-
wtarzać. Ta liczba również określi któ-
ry numer jest najnowszy (największa
liczba).
• tytuł to podpis który wyświetli się pod
czasopismem (np. 1(64)/2008),
• do sekcji przypisać można też obrazek
– okładkę magazynu która wyświe-
tli się na stronie głównej gdzie będzie
można wybrać dany numer. Żeby ob-
razki pojawiły się na liście rozwijanej
obok pola Grafika należy je umieścić
na serwerze w katalogu images/stories
(Rysunek 2.)
Poziom trudności
trzebujemy. Można w ten sposób również
wstawić do artykułu zawartość pliku teksto-
wego (w ten sam sposób, podając nazwę pli-
ku txt zamiast php) – jest to przydatna moż-
liwość jeśli do wielu artykułów wstawiamy
wspólny fragment tekstu; można go wtedy
umieścić w zewnętrznym pliku i załączyć w
podany sposób, późniejsze zmiany dla tego
wspólnego fragmentu będą dokonywane tyl-
ko w jednym pliku.
W pierwszej części artykułu poka-
Run Digital Add PHP
RD Add PHP to dodatek (bot) umożliwiają-
cy wstawienie do artykułu kodu PHP, który
zostanie wykonany.
Dodatek instalujemy wybierając z menu
Instalatory –> Boty . Po wczytaniu plik bę-
dzie widoczny na liście Zainstalowane boty .
Przed użyciem musimy go jeszcze opubliko-
wać wybierając z menu Boty –> Boty witryna
i Publikacja .
Użycie tego dodatku jest bardzo proste
– wystarczy w treści wybranego artykułu
wstawić nazwę pliku z kodem w postaci:
Przykład zastosowania
– strona czasopisma
Magazyn Twój Ogród to darmowa gazetka,
która chce również udostępniać swoje treści
na stronie internetowej. Odwiedzający ma-
ją mieć możliwość przeglądania aktualnego
numeru i wszystkich poprzednich nume-
rów wraz z całą ich zawartością.
Możemy więc przygotować prosty skrypt
php który pobierze z bazy danych informa-
cje o dotychczas wydanych numerach i wy-
świetli ich okładki oraz numery jako lin-
ki – po kliknięciu w wybrany numer poka-
że się jego spis treści jako kolejne pozycje w
menu – one z kolei prowadzić będą do arty-
kułów w danym numerze.
Skrypt ten wstawimy do powitalnego ar-
tykułu na stronie głównej. Domyślnie może-
my też wyświetlić w menu spis treści aktu-
alnego numeru (Rysunek 1.) Przygotowanie
treści w serwisie:
Do sekcji przypisujemy kategorie. Tytuł ka-
tegorii to pozycja w spisie treści danego wy-
dania i wyświetlana będzie jako link w me-
nu. Po kliknięciu w ten link pokażą się ar-
tykuły z danej pozycji.
Dodajemy artykuły wybierając dla każde-
go odpowiednią sekcję (numer magazynu) i
kategorię (temat). Przygotowanie skryptu:
• Zadaniem naszego skryptu będzie wy-
świetlenie okładek wydanych magazy-
nów i oraz ich numerów jako linków
które wyświetlą spis treści danego nu-
meru (Listing 1.)
{rdaddphp ile=sciezka/plik.php}
w miejscu gdzie ma być widoczny rezultat
działania kodu.
Podany plik może zawierać dowolny
skrypt php który zostanie wykonany w
chwili wyświetlenia artykułu Może to być
nasz własny licznik, formularz, galeria czy
zapytanie do bazy danych – cokolwiek po-
Musimy teraz utworzyć artykuł lub mate-
riał statyczny który wyświetli na stronie
głównej rezultat działania naszego skryp-
tu. Możemy umieścić w nim dowolne tre-
ści (Rysunek. 3) a w miejscu gdzie mają wy-
świetlić się okładki wstawiamy:
• Wykorzystamy sekcje i kategorie do po-
grupowania treści. Sekcja określi dany
{rdaddphp ile=skrypty/sekcje.php}
50
03/2008
żemy na praktycznym przykła-
dzie jak skorzystać z możliwo-
ści umieszczenia w treści artykułu własnego
kodu php, za pomocą dodatku Add PHP.
37151875.042.png
 
37151875.043.png 37151875.044.png 37151875.001.png 37151875.002.png 37151875.003.png 37151875.004.png 37151875.005.png 37151875.006.png 37151875.007.png
Joomla!
Po utworzeniu materiału umieszczamy go
jako pierwszą pozycję w menu ( Menu –>
mainmenu ) żeby wyświetlił się jako strona
startowa oraz żeby umożliwić odwiedza-
jącym powrót do strony z wyborem maga-
zynu (Rysunek 4.). Zostało nam jeszcze do
przygotowania wyświetlanie spisu treści da-
nego numeru – po kliknięciu w link pod
wybranym numerem następuje przekaza-
nie informacji o numerze sekcji (czyli o nu-
merze danego magazynu którego spis treści
ma się pokazać). Możemy zrobić to na kil-
ka sposobów – ponieważ w przypadku tego
serwisu w menu z lewej strony zawsze wy-
świetlamy jakiś spis treści możemy po pro-
stu wstawić skrypt w naszym pliku strony
index.php z katalogu aktualnego szablo-
nu ( templates –> katalog z szablonem ). Od-
najdujemy w nim wpis:
Rysunek 2. Nowa sekcja – grudniowy numer magazynu
<?php mosLoadModules ('left'); ?>
Który wyświetla moduły przypisane do ob-
szaru left (jak np. nasze menu główne). Pod
nim wstawiamy skrypt wyświetlający linki
do artykułów z danego numeru:
<? include ('skrypty/spis.php'); ?>
Z bazy danych pobierane są informacje o
kategoriach w podanej sekcji i zostają wy-
świetlone jako linki do artykułów z kate-
gorii ( task=blogcategory ).
Jeśli sekcja nie została podana wyświetla
się spis treści z ostatniego numeru (katego-
rie z sekcji o najwyższym numerze w na-
zwie). Skrypt widoczny na Listingu 2.
Artykuły wyświetlane są w sposób do-
myślny (Rysunek 5.)
Jeśli chcemy określić swój sposób wyświe-
tlania treści (ilość kolumn, kolejność arty-
kułów itd.) możemy w menu głównym ( Me-
nu –> mainmenu ) utworzyć przykładowy
link do artykułów w sekcji dla którego okre-
Rysunek 3. Przykład artykułu z wstawionym kodem php
Rysunek 1. Pierwsza strona magazynu Twój
Ogród – z lewej spis treści aktualnego numeru,
obok okładki i linki do poprzednich numerów
Rysunek 4. Łącze do materiału który wyświetli się na stronie głównej w menu głównym
www.phpsolmag.org
51
 
37151875.008.png 37151875.009.png 37151875.010.png 37151875.011.png 37151875.012.png 37151875.013.png 37151875.014.png 37151875.015.png
Technika
ślimy wszystkie te ustawienia – link ten nie
będzie opublikowany (Rysunek 6.) ale mo-
żemy wykorzystać go jako wzór w naszym
skrypcie (plik spis.php ), w miejscu gdzie
wstawiamy linki do artykułów, podając jego
identyfikator (ID pozycji menu):
Ulepszamy galerię
W tej części artykułu zaprezentujemy kom-
ponent PonyGallery który umożliwi nam
szybkie stworzenie galerii zdjęć na naszej
stronie. Pokażemy również jak stworzyć
możliwość wypisania kategorii naszych
zdjęć w postaci linków tekstowych.
Żeby dodać link do galerii zdjęć jako pozycję
w menu wybieramy Menu –> mainmenu , Dodaj ,
Komponent , podajemy nazwę (np. Galeria ) i wska-
zujemy na liście komponentów PonyGallery .
Po wczytaniu zdjęć możemy zobaczyć naszą ga-
lerię na stronie (Rysunek 8.). Sposób wyświetlania
zdjęć na stronie oraz informacje jakie są przy tym
widoczne możemy określić w części administracyj-
nej za pomocą Configuration Managera PonyGalle-
ry . Na stronie wyświetlają się nazwy kategorii wraz
z przypisanymi im obrazkami. Po kliknięciu w da-
ną kategorię możemy zobaczyć umieszczone w
niej zdjęcia (Rysunek 9.).
echo"<a href=\"$mosConig_live_site?option=com
_content&task=blogcategory&id=$id_k&Itemid=3\
" class=
\"mainlevel\">$title_k</a><br />";
PonyGallery
Komponent instalujemy wybierając z menu Insta-
latory –> Komponenty . Po wczytaniu pliku Pony-
Gallery będzie widoczny w menu Komponenty .
Możemy teraz tworzyć kategorie zdjęć,
wczytywać pliki, zmieniać ich tytuły, opisy,
przydział do kategorii itd. Miniaturkę dla
kategorii można wybrać z listy po wczyta-
niu zdjęć do danej kategorii.
Artykuły będą teraz wyświetlane w sposób ja-
ki określiliśmy w naszym wzorze (Rysunek 7.)
Skrypt można łatwo dostosować do własnych
potrzeb, określając jakie treści mają być widocz-
ne na stronie oraz sposób ich wyświetlania.
Dodajemy linki w menu
Do wyboru galerii możemy wrócić klikając przy-
cisk wstecz jeśli jednak mamy duży wybór zdjęć w
wielu kategoriach może przydać się nam ich spis
w postaci linków zawsze widocznych na stronie.
Rezultat ten możemy osiągnąć w podobny spo-
sób co w poprzednim przykładzie – tworzymy od-
powiedni skrypt i umieszczamy go tam gdzie ma
być widoczny – w artykule lub w danym menu.
Wstawienie skryptu w menu bocznym: W pliku
index.php z katalogu aktualnego szablonu ( templa-
tes –> katalog z szablonem ) odnajdujemy wpis:
<?php mosLoadModules ('left'); ?>
Który wyświetla moduły przypisane do ob-
szaru left (jak np. nasze menu główne). Pod
nim wstawiamy skrypt wyświetlający linki
do kategorii naszych zdjęć:
<? include ('skrypty/linki.php'); ?>
Rysunek 5. Domyślny sposób wyświetlania artykułów
Rysunek 7. Artykuły wyświetlane w sposób określony
za pomocą jednej pozycji w menu głównym
Rysunek 6. Przykładowa pozycja w menu z zapisanymi ustawieniami dotyczącymi wyświetlania artykułów
Rysunek 8. Kategorie zdjęć stworzone a pomocą
PonyGallery
52
03/2008
37151875.016.png
 
37151875.017.png 37151875.018.png 37151875.019.png 37151875.020.png 37151875.021.png 37151875.022.png 37151875.023.png
 
Joomla!
Mając już linki widoczne w menu możemy
usunąć link Galeria wyłączając publikację
tej pozycji ( Menu –> mainmenu ). Rezultat
widoczny jest na Rysunku 10. Zawartość
pliku linki.php przedstawia Listing 3
Skrypt można dalej rozbudowywać – do-
dając opcję wyświetlania linków do podka-
tegorii lub zmieniając zawartość menu w za-
leżności od wyboru odwiedzającego (gale-
ria – treści).
Komponent instalujemy wybierając z menu In-
stalatory –> Komponenty . Po wczytaniu pliku JA
Submit będzie widoczny w menu Komponenty .
Żeby dodać link umożliwiający dodawanie
ogłoszeń jako pozycję w menu wybieramy Me-
nu –> mainmenu , Dodaj , Komponent , podajemy
nazwę (np. Dodaj ogłoszenie ) i wskazujemy na
liście komponentów JA Submit (Rysunek 11.).
Widok formularza dodawania ogłoszeń na
stronie przedstawia Rysunek 12.
Ogłoszenia mogą być dodawane w udostęp-
nionych przez nas kategoriach (można je okre-
ślić w ustawieniach komponentu JA Submit
(menu Komponenty –> JA Submit –> Ustawie-
nia ) Dodane ogłoszenia widoczne są w części
administracyjnej jako artykuły w danej kate-
gorii i tam możemy je opublikować lub usu-
nąć. Po opublikowaniu ogłoszenie pojawi się
na stronie jako artykuł.
Dodajemy ogłoszenia
Ostatnim prezentowanym przez nas w tym
artykule dodatkiem jest komponent JA Sub-
mit umożliwiający dodawanie ogłoszeń na
stronie.
W Sieci
• Polskie Centrum Joomla! – http://www.joomla.pl
• Strona z której można pobrać RD Add PHP – http://www.run-digital.com (dodatek można
również pobrać ze strony joomla.pl )
• PonyGallery – strona projektu – http://www.taher-zadeh.com (komponent można również
pobrać ze strony joomla.pl )
• Strona JA Submit – http://www.joomlart.com
Listing 1. Skrypt wyświetlający okładki magazynów oraz linki do spisu treści (plik sekcje.php)
//połączenie z bazą danych nawiązane w osobnym pliku i zapisane w zmiennej $connect
require ( 'connect.php' ) ;
//tabela sekcje
$tablename = "jos_sections" ;
//wczytanie danych opublikowanych sekcji
$query ="select id, title, image from $tablename where published= '1' ";
$result = mysql_query ( $query , $connect ) ;
if ( ! $result ) error_message ( sql_error ()) ;
Modyfikujemy komponent
Pliki komponentu znajdują się w katalo-
gu components/com_ja_submit . Plik ja_sub-
//wyświetlenie na stronie okładek z linkami -- po trzy w jednym rzędzie:
?>
< div style= "padding-left: 10px; padding-top: 10px; display: block; height: 250px;
margin-top: 10px;" >
<?
$licz =0;
while ( $query_data = mysql_fetch_array ( $result ))
{
if (( $licz !=0 ) && (( $licz % 3 ) = =0 ))
{
?>
< div style= "padding-top: 25px; display: block; height: 250px; margin-top: 10px;
clear:both" >
Rysunek 9. Widok wybranej kategorii
<?
}
$id_s = $query_data [ "id" ] ;
$title_s = $query_data [ "title" ] ;
$image_s = $query_data [ "image" ] ;
?>
< div style= "display: block; loat: left; text-align: left; padding-left: 20px;" >
<?
//okładki
echo " < img src=\ "images/stories/$image_s\" border=\ "0\" alt=\ "$title\" > < br / >< br
/ > ";
//numery jako linki -- przekazanie informacji o identyikatorze sekcji
echo " < a href=\ "$mosConig_live_site?sekcja=$id_s\" >< strong > Numer: < /strong > $title_
s < /a > ";
Rysunek 10. Linki do kategorii zdjęć widoczne w
lewym menu
Informacje
o wersjach użytych w artykule:
?>
< /div >
<?
$licz ++;
}
echo " < /div > ";
?>
• Joomla 1.0.13 JIE iso
Dodatki:
• RD Add PHP 4.5.2
• Pony Gallery ML 2.4.1
• JA Submit 2.1 pl.
www.phpsolmag.org
53
 
37151875.024.png 37151875.025.png 37151875.026.png 37151875.027.png 37151875.028.png 37151875.029.png 37151875.030.png 37151875.031.png 37151875.032.png 37151875.033.png 37151875.034.png
Technika
Listing 2. Skrypt wyświetlający linki do artykułów z wybranego numeru magazynu (spis.php)
<?
//funkcja wypisuje kategorie z danej sekcji jako linki do listy
artykułów
function links( $sekcja , $connect )
{
//tabela kategorii
$tablename = "jos_categories" ;
$query ="select id, title from $tablename where published= '1'
AND section= '$sekcja'";
$result =mysql_query( $query , $connect );
if(! $result ) error_message(sql_error());
else
{
//jest id kategorii, wyświetlana jest lista artykułów lub
wybrany artykuł
if (( $id_kat ) && ( $option = = 'com_content' ) && (( $task = = 'blogcat
egory' ) || ( $task = = 'view' )))
{
require ( 'connect.php' ) ;
if ( $task = = 'view' )
{
//sprawdź sekcję wyświetlanego artykułu
$id_art = $_GET [ "id" ] ;
//tabela artykułów
$tablename = "jos_content" ;
$query ="select sectionid, catid from $tablename where
id= '$id_art' ";
$result = mysql_query ( $query , $connect ) ;
if ( ! $result ) error_message ( sql_error ()) ;
$dane = mysql_fetch_row ( $result ) ;
$id_sekcji = $dane [ 0 ] ;
$id_kategori = $dane [ 1 ] ;
}
else
{
//sprawdź sekcję danej kategorii
//tabela kategorii
$tablename = "jos_categories" ;
$query ="select section from $tablename where id= '$id_
kat' ";
$result = mysql_query ( $query , $connect ) ;
if ( ! $result ) error_message ( sql_error ()) ;
$dane = mysql_fetch_row ( $result ) ;
$id_sekcji = $dane [ 0 ] ;
}
//tabela sekcji
$tablename = "jos_sections" ;
$query ="select title from $tablename where id= '$id_sekcji' ";
$result = mysql_query ( $query , $connect ) ;
if ( ! $result ) error_message ( sql_error ()) ;
$dane = mysql_fetch_row ( $result ) ;
$tytul_s = $dane [ 0 ] ;
//brak sekcji i kategorii, pokaż spis najnowszego numeru
if (( $id_sekcji = =0 ) && ( $id_kategori = =0 ))
{
pokaz_ost () ;
}
else
{
//pokaz spis treści danego numeru
links ( $id_sekcji , $connect ) ;
}
}
//pierwsza strona, spis streści dla najnowszego numeru
else
{
pokaz_ost () ;
}
}
?>
while( $query_data =mysql_fetch_array( $result ))
{
$id_k = $query_data [" id "];
$title_k = $query_data [" title" ] ;
//link do listy artykułów z danej kategorii
echo " < a href=\ "$mosConig_live_site?option=com_content
&task=blogcategory&id=$id_k\" class=\
"mainlevel\" > $title_k < /a >< br / > ";
}
}
//funkcja sprawdza najnowszy numer magazynu
function pokaz_ost( )
{
require ( 'connect.php' ) ;
//tabela sekcji
$tablename = "jos_sections" ;
$query = "SELECT MAX(name) AS name FROM $tablename " ;
$result = mysql_query ( $query , $connect ) ;
if ( ! $result ) error_message ( sql_error ()) ;
$dane = mysql_fetch_row ( $result ) ;
$nazwa_sekcji = $dane [ 0 ] ;
$query ="SELECT id from $tablename where name= '$nazwa_
sekcji' ";
$result = mysql_query ( $query , $connect ) ;
if ( ! $result ) error_message ( sql_error ()) ;
$dane = mysql_fetch_row ( $result ) ;
$id_sekcji = $dane [ 0 ] ;
//pokaż spis treści
links ( $id_sekcji , $connect ) ;
}
//nr sekcji z linku na stronie głównej
$sekcja = $_GET [ "sekcja" ] ;
//dane z linku w menu bocznym
$id_kat = $_GET [ "id" ] ;
$option = $_GET [ "option" ] ;
$task = $_GET [ "task" ] ;
//pokaż spis treści wybranego numeru
if ( $sekcja )
{
//pokaż spis treści
links ( $sekcja , $connect ) ;
}
//brak sekcji
54
03/2008
37151875.035.png
 
37151875.036.png 37151875.037.png 37151875.038.png 37151875.039.png 37151875.040.png 37151875.041.png
 
Zgłoś jeśli naruszono regulamin