You are on page 1of 8

Technika

Joomla!
Przydatne dodatki
Dla Joomla! istnieje wiele uytecznych dodatkw w tym artykule pojawi si trzy z nich ktre zwikszaj ju i tak due moliwoci tego systemu a za pomoc niewielkiej iloci kodu php moemy jeszcze lepiej dopasowa je do swoich potrzeb.
Dowiesz si...
Jak dopasowa system do wasnych potrzeb za pomoc dostpnych komponentw; Jak umieci wasny skrypt PHP za pomoc Add PHP; Jak dodawa ogoszenia za pomoc komponentu JA.

Powiniene wiedzie...
Umiejtno zainstalowania systemu Joomla! oraz dodatkowych komponentw; Umiejtno tworzenia sekcji, kategorii i artykuw w Joomla!; Podstawowa wiedza z zakresu PHP.

Poziom trudnoci

pierwszej czci artykuu pokaemy na praktycznym przykadzie jak skorzysta z moliwoci umieszczenia w treci artykuu wasnego kodu php, za pomoc dodatku Add PHP. Run Digital Add PHP RD Add PHP to dodatek (bot) umoliwiajcy wstawienie do artykuu kodu PHP, ktry zostanie wykonany. Dodatek instalujemy wybierajc z menu Instalatory > Boty. Po wczytaniu plik bdzie widoczny na licie Zainstalowane boty. Przed uyciem musimy go jeszcze opublikowa wybierajc z menu Boty > Boty witryna i Publikacja. Uycie tego dodatku jest bardzo proste wystarczy w treci wybranego artykuu wstawi nazw pliku z kodem w postaci:
{rdaddphp file=sciezka/plik.php}

trzebujemy. Mona w ten sposb rwnie wstawi do artykuu zawarto pliku tekstowego (w ten sam sposb, podajc nazw pliku txt zamiast php) jest to przydatna moliwo jeli do wielu artykuw wstawiamy wsplny fragment tekstu; mona go wtedy umieci w zewntrznym pliku i zaczy w podany sposb, pniejsze zmiany dla tego wsplnego fragmentu bd dokonywane tylko w jednym pliku. Przykad zastosowania strona czasopisma Magazyn Twj Ogrd to darmowa gazetka, ktra chce rwnie udostpnia swoje treci na stronie internetowej. Odwiedzajcy maj mie moliwo przegldania aktualnego numeru i wszystkich poprzednich numerw wraz z ca ich zawartoci. Moemy wic przygotowa prosty skrypt php ktry pobierze z bazy danych informacje o dotychczas wydanych numerach i wywietli ich okadki oraz numery jako linki po klikniciu w wybrany numer pokae si jego spis treci jako kolejne pozycje w menu one z kolei prowadzi bd do artykuw w danym numerze. Skrypt ten wstawimy do powitalnego artykuu na stronie gwnej. Domylnie moemy te wywietli w menu spis treci aktualnego numeru (Rysunek 1.) Przygotowanie treci w serwisie: Wykorzystamy sekcje i kategorie do pogrupowania treci. Sekcja okreli dany

numer magazynu a kategorie w sekcji bd widoczne w menu jako jego spis treci, nazwa sekcji to numer czasopisma liczc od pierwszego wydania (np. 64). Wedug nazwy sekcji bd pobierane dane z bazy wic nie moe si ona powtarza. Ta liczba rwnie okreli ktry numer jest najnowszy (najwiksza liczba). tytu to podpis ktry wywietli si pod czasopismem (np. 1(64)/2008), do sekcji przypisa mona te obrazek okadk magazynu ktra wywietli si na stronie gwnej gdzie bdzie mona wybra dany numer. eby obrazki pojawiy si na licie rozwijanej obok pola Grafika naley je umieci na serwerze w katalogu images/stories (Rysunek 2.) Do sekcji przypisujemy kategorie. Tytu kategorii to pozycja w spisie treci danego wydania i wywietlana bdzie jako link w menu. Po klikniciu w ten link poka si artykuy z danej pozycji. Dodajemy artykuy wybierajc dla kadego odpowiedni sekcj (numer magazynu) i kategori (temat). Przygotowanie skryptu: Zadaniem naszego skryptu bdzie wywietlenie okadek wydanych magazynw i oraz ich numerw jako linkw ktre wywietl spis treci danego numeru (Listing 1.) Musimy teraz utworzy artyku lub materia statyczny ktry wywietli na stronie gwnej rezultat dziaania naszego skryptu. Moemy umieci w nim dowolne treci (Rysunek. 3) a w miejscu gdzie maj wywietli si okadki wstawiamy:
{rdaddphp file=skrypty/sekcje.php}

w miejscu gdzie ma by widoczny rezultat dziaania kodu. Podany plik moe zawiera dowolny skrypt php ktry zostanie wykonany w chwili wywietlenia artykuu Moe to by nasz wasny licznik, formularz, galeria czy zapytanie do bazy danych cokolwiek po50

03/2008

Joomla!

Po utworzeniu materiau umieszczamy go jako pierwsz pozycj w menu (Menu > mainmenu) eby wywietli si jako strona startowa oraz eby umoliwi odwiedzajcym powrt do strony z wyborem magazynu (Rysunek 4.). Zostao nam jeszcze do przygotowania wywietlanie spisu treci danego numeru po klikniciu w link pod wybranym numerem nastpuje przekazanie informacji o numerze sekcji (czyli o numerze danego magazynu ktrego spis treci ma si pokaza). Moemy zrobi to na kilka sposobw poniewa w przypadku tego serwisu w menu z lewej strony zawsze wywietlamy jaki spis treci moemy po prostu wstawi skrypt w naszym pliku strony index.php z katalogu aktualnego szablonu (templates > katalog z szablonem). Odnajdujemy w nim wpis:
<?php mosLoadModules ('left'); ?>

Rysunek 2. Nowa sekcja grudniowy numer magazynu

Ktry wywietla moduy przypisane do obszaru left (jak np. nasze menu gwne). Pod nim wstawiamy skrypt wywietlajcy linki do artykuw z danego numeru:
<? include ('skrypty/spis.php'); ?>

Z bazy danych pobierane s informacje o kategoriach w podanej sekcji i zostaj wywietlone jako linki do artykuw z kategorii (task=blogcategory). Jeli sekcja nie zostaa podana wywietla si spis treci z ostatniego numeru (kategorie z sekcji o najwyszym numerze w nazwie). Skrypt widoczny na Listingu 2. Artykuy wywietlane s w sposb domylny (Rysunek 5.) Jeli chcemy okreli swj sposb wywietlania treci (ilo kolumn, kolejno artykuw itd.) moemy w menu gwnym (Menu > mainmenu) utworzy przykadowy link do artykuw w sekcji dla ktrego okre-

Rysunek 3. Przykad artykuu z wstawionym kodem php

Rysunek 1. Pierwsza strona magazynu Twj Ogrd z lewej spis treci aktualnego numeru, obok okadki i linki do poprzednich numerw

Rysunek 4. cze do materiau ktry wywietli si na stronie gwnej w menu gwnym

www.phpsolmag.org

51

Technika
limy wszystkie te ustawienia link ten nie bdzie opublikowany (Rysunek 6.) ale moemy wykorzysta go jako wzr w naszym skrypcie (plik spis.php), w miejscu gdzie wstawiamy linki do artykuw, podajc jego identyfikator (ID pozycji menu):
echo"<a href=\"$mosConfig_live_site?option=com _content&task=blogcategory&id=$id_k&Itemid=3\ \"mainlevel\">$title_k</a><br />"; " class=

Ulepszamy galeri
W tej czci artykuu zaprezentujemy komponent PonyGallery ktry umoliwi nam szybkie stworzenie galerii zdj na naszej stronie. Pokaemy rwnie jak stworzy moliwo wypisania kategorii naszych zdj w postaci linkw tekstowych.

PonyGallery
Komponent instalujemy wybierajc z menu Instalatory > Komponenty. Po wczytaniu pliku PonyGallery bdzie widoczny w menu Komponenty. Moemy teraz tworzy kategorie zdj, wczytywa pliki, zmienia ich tytuy, opisy, przydzia do kategorii itd. Miniaturk dla kategorii mona wybra z listy po wczytaniu zdj do danej kategorii.

Artykuy bd teraz wywietlane w sposb jaki okrelilimy w naszym wzorze (Rysunek 7.) Skrypt mona atwo dostosowa do wasnych potrzeb, okrelajc jakie treci maj by widoczne na stronie oraz sposb ich wywietlania.

eby doda link do galerii zdj jako pozycj w menu wybieramy Menu > mainmenu, Dodaj, Komponent, podajemy nazw (np. Galeria) i wskazujemy na licie komponentw PonyGallery. Po wczytaniu zdj moemy zobaczy nasz galeri na stronie (Rysunek 8.). Sposb wywietlania zdj na stronie oraz informacje jakie s przy tym widoczne moemy okreli w czci administracyjnej za pomoc Configuration Managera PonyGallery. Na stronie wywietlaj si nazwy kategorii wraz z przypisanymi im obrazkami. Po klikniciu w dan kategori moemy zobaczy umieszczone w niej zdjcia (Rysunek 9.).

Dodajemy linki w menu


Do wyboru galerii moemy wrci klikajc przycisk wstecz jeli jednak mamy duy wybr zdj w wielu kategoriach moe przyda si nam ich spis w postaci linkw zawsze widocznych na stronie. Rezultat ten moemy osign w podobny sposb co w poprzednim przykadzie tworzymy odpowiedni 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 (templates > katalog z szablonem) odnajdujemy wpis:
<?php mosLoadModules ('left'); ?>

Ktry wywietla moduy przypisane do obszaru left (jak np. nasze menu gwne). Pod nim wstawiamy skrypt wywietlajcy linki do kategorii naszych zdj:
<? include ('skrypty/linki.php'); ?>

Rysunek 5. Domylny sposb wywietlania artykuw

Rysunek 7. Artykuy wywietlane w sposb okrelony za pomoc jednej pozycji w menu gwnym

Rysunek 6. Przykadowa pozycja w menu z zapisanymi ustawieniami dotyczcymi wywietlania artykuw

Rysunek 8. Kategorie zdj stworzone a pomoc PonyGallery

52

03/2008

Joomla!

Majc ju linki widoczne w menu moemy usun link Galeria wyczajc publikacj tej pozycji (Menu > mainmenu). Rezultat widoczny jest na Rysunku 10. Zawarto pliku linki.php przedstawia Listing 3 Skrypt mona dalej rozbudowywa dodajc opcj wywietlania linkw do podkategorii lub zmieniajc zawarto menu w za-

lenoci od wyboru odwiedzajcego (galeria treci).

Dodajemy ogoszenia
Ostatnim prezentowanym przez nas w tym artykule dodatkiem jest komponent JA Submit umoliwiajcy dodawanie ogosze na stronie.

W Sieci
Polskie Centrum Joomla! http://www.joomla.pl Strona z ktrej mona pobra RD Add PHP http://www.run-digital.com (dodatek mona rwnie pobra ze strony joomla.pl) PonyGallery strona projektu http://www.taher-zadeh.com (komponent mona rwnie pobra ze strony joomla.pl) Strona JA Submit http://www.joomlart.com

Listing 1. Skrypt wywietlajcy okadki magazynw oraz linki do spisu treci (plik sekcje.php)
//poczenie z baz danych nawizane w osobnym pliku i zapisane w zmiennej $connect require('connect.php'); //tabela sekcje

Komponent instalujemy wybierajc z menu Instalatory > Komponenty. Po wczytaniu pliku JA Submit bdzie widoczny w menu Komponenty. eby doda link umoliwiajcy dodawanie ogosze jako pozycj w menu wybieramy Menu > mainmenu, Dodaj, Komponent, podajemy nazw (np. Dodaj ogoszenie) i wskazujemy na licie komponentw JA Submit (Rysunek 11.). Widok formularza dodawania ogosze na stronie przedstawia Rysunek 12. Ogoszenia mog by dodawane w udostpnionych przez nas kategoriach (mona je okreli w ustawieniach komponentu JA Submit (menu Komponenty > JA Submit > Ustawienia) Dodane ogoszenia widoczne s w czci administracyjnej jako artykuy w danej kategorii i tam moemy je opublikowa lub usun. Po opublikowaniu ogoszenie pojawi si na stronie jako artyku.

Modyfikujemy komponent
Pliki komponentu znajduj si w katalogu components/com_ja_submit. Plik ja_sub-

$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()); //wywietlenie na stronie okadek z linkami -- po trzy w jednym rzdzie: ?> <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)) { ?>

Rysunek 9. Widok wybranej kategorii

<div style="padding-top: 25px; display: block; height: 250px; margin-top: 10px; <? } clear:both">

$id_s=$query_data["id"];

$title_s=$query_data["title"]; $image_s=$query_data["image"]; ?> <? <div style="display: block; float: left; text-align: left; padding-left: 20px;"> //okadki echo"<img src=\"images/stories/$image_s\" border=\"0\" alt=\"$title\"> <br /><br //numery jako linki -- przekazanie informacji o identyfikatorze sekcji echo"<a href=\"$mosConfig_live_site?sekcja=$id_s\"><strong>Numer:</strong> $title_ ?> <? } s</a>"; />";

Rysunek 10. Linki do kategorii zdj widoczne w lewym menu

Informacje o wersjach uytych w artykule:


Joomla 1.0.13 JIE iso

</div> $licz++;

Dodatki:
RD Add PHP 4.5.2 Pony Gallery ML 2.4.1 JA Submit 2.1 pl.

echo"</div>"; ?>

www.phpsolmag.org

53

Technika

Listing 2. Skrypt wywietlajcy linki do artykuw z wybranego numeru magazynu (spis.php)


else { //jest id kategorii, wywietlana jest lista artykuw lub wybrany artyku if(($id_kat)&&($option= ='com_content')&&(($task= ='blogcat { egory')||($task= ='view')))

<?

//funkcja wypisuje kategorie z danej sekcji jako linki do listy artykuw function links($sekcja, $connect) { //tabela kategorii $query="select id, title from $tablename where published='1' $result=mysql_query($query, $connect); AND section='$sekcja'"; $tablename="jos_categories";

require('connect.php'); if($task= ='view') {

if(!$result) error_message(sql_error()); while($query_data=mysql_fetch_array($result)) { $id_k=$query_data["id"];

//sprawd sekcj wywietlanego artykuu //tabela artykuw $id_art=$_GET["id"]; $tablename="jos_content";

$title_k=$query_data["title"]; //link do listy artykuw z danej kategorii echo"<a href=\"$mosConfig_live_site?option=com_content "mainlevel\">$title_k</a><br />"; &task=blogcategory&id=$id_k\" class=\ } {

$query="select sectionid, catid from $tablename where $result=mysql_query($query, $connect); $dane=mysql_fetch_row($result); $id_sekcji=$dane[0]; $id_kategori=$dane[1]; id='$id_art'";

if(!$result) error_message(sql_error());

//funkcja sprawdza najnowszy numer magazynu function pokaz_ost() { require('connect.php'); $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];

else //sprawd sekcj danej kategorii //tabela kategorii $tablename="jos_categories"; kat'"; $query="select section from $tablename where id='$id_ $result=mysql_query($query, $connect); $dane=mysql_fetch_row($result); } $id_sekcji=$dane[0];

//tabela sekcji

if(!$result) error_message(sql_error());

//tabela sekcji $tablename="jos_sections"; $query="select title from $tablename where id='$id_sekcji'"; $result=mysql_query($query, $connect); $dane=mysql_fetch_row($result); $tytul_s=$dane[0]; if(!$result) error_message(sql_error());

$query="SELECT id from $tablename where name='$nazwa_ $result=mysql_query($query, $connect); $dane=mysql_fetch_row($result); $id_sekcji=$dane[0]; //poka spis treci } links($id_sekcji, $connect); sekcji'";

if(!$result) error_message(sql_error());

//brak sekcji i kategorii, poka spis najnowszego numeru if(($id_sekcji= =0)&&($id_kategori= =0)) { } { pokaz_ost();

//nr sekcji z linku na stronie gwnej $sekcja=$_GET["sekcja"]; $id_kat=$_GET["id"]; $task=$_GET["task"]; if($sekcja) { //poka spis treci links($sekcja, $connect); //dane z linku w menu bocznym $option=$_GET["option"]; //poka spis treci wybranego numeru

else //pokaz spis treci danego numeru links($id_sekcji, $connect);

} }

//pierwsza strona, spis streci dla najnowszego numeru else { } } ?> pokaz_ost();

//brak sekcji

54

03/2008

Joomla!

Listing 3. Skrypt wywietlajcy w menu linki tekstowe do kategorii zdj (linki.php)


<?

//poczenie z baz danych nawizane w osobnym pliku i zapisane w zmiennej $connect include ("connect.php"); //tabela z kategoriami zdj $tablename='jos_ponygallery_catg'; $query="SELECT * FROM $tablename WHERE published = '1' AND parent = 0"; $odp=mysql_query ($query, $connect); { while($query_data=mysql_fetch_array($odp)) //identyfikator kategorii //nazwa kategorii //link } $cid=$query_data["cid"]; $name=$query_data["name"]; echo"<a href=\"index.php?option=com_ponygallery&func=viewcategory&catid=$cid\">$name</a><br><br>";

?>

Listing 4. Przykadowy fragment wywietla pole Imi i nazwisko


<? /* <tr><td><label for="created_by_alias"><?php echo _H_FULLNAME; ?>*</label>:</td> $my->name; ?>" style="width:200px;" /></td></tr> */ ?>

<td><input class="inputbox" type="text" name="created_by_alias" id="created_by_alias" size="50" maxlength="50" value="<?php echo

Listing 5. Kod wywietlajcy w formularzu dodawania ogosze nowe pola umoliwiajce wstawienie daty rozpoczcia i zakoczenia ogoszenia. (plik ja_ submit.html.php)
<? <tr>

<td colspan="2" align="left" style="vertical-align: top;"> <div style="height: 50px; padding-top: 20px;"> Data rozpoczcia ogoszenia:

<input class="inputbox" type="text" name="publish_up" id="publish_up" size="17" maxlength="19" value="<?php echo $row->publish_up; <input type="reset" class="button" value="kalendarz" onclick="return showCalendar('publish_up', 'y-mm-dd');" /> </div> </td> </tr> <tr> <td colspan="2" align="left" style="vertical-align: top;"> <div style="height: 50px;"> Data zakoczenia ogoszenia: ?>" />

<input class="inputbox" type="text" name="publish_down" id="publish_down" size="17" maxlength="19" value="<?php echo $row->publish_ <input type="reset" class="button" value="kalendarz" onclick="return showCalendar('publish_down', 'y-mm-dd');" /> </div> </td> </tr> ?> down; ?>" />

Listing 6. W pliku index.php z katalogu aktualnego szablonu (templates > katalog z szablonem) w czci head wstawiamy linki
<link rel="stylesheet" type="text/css" href="<?php echo $mosConfig_live_site;?>/includes/js/calendar/calendar-mos.css" /> <script language="javascript" type="text/javascript" src="<?php echo $mosConfig_live_site;?>/includes/js/calendar/calendar_mini.js"></ <script language="javascript" type="text/javascript" src="<?php echo $mosConfig_live_site;?>/includes/js/calendar/lang/calendarpl.js"></script> script>

www.phpsolmag.org

55

Technika

Rysunek 11. Dodanie linku do komponentu JA Submit w menu gwnym

Rysunek 13. Wygld formularza dodawania ogosze po wprowadzeniu zmian

mit.html.php wywietla formularz widoczny na stronie moemy tutaj ukry pola ktrych nie chcemy wywietla (np. imi i nazwisko czy moliwo dodawania grafiki). Umieszczajc go w komentarzu powodujemy e nie bdzie on widoczny na stronie. Musimy jeszcze uwzgldni t zmian w funkcji submitbutton ktra sprawdza czy wszystkie wymagane pola s wypenione. Bierzemy w komentarz odpowiedni jej fragment:
/*

else if ( form.created_by_alias.value = = alert ( "<?php echo _H_ENTER_NAME; ?>" );}*/ "" ) {

Instrukcj dodawania ogosze, ktra jest widoczna nad formularzem moemy zmodyfikowa zmieniajc tekst w pliku polish.php (w katalogu components/com_ja_submit/language). Na koniec pokaemy jak doda dwa nowe pola do formularza tak eby dodajcy ogoszenia sami mogli zadecydowa o dacie rozpoczcia i zakoczenia ogoszenia (administrator ma dostp do tych pl w edycji artykuu). W pliku ja_submit.html.php w miejscu gdzie maj by widoczne nowe pola wklejamy kod skopiowany z czci administracyjnej (Listing 5). Ostatnia cz to wywietlenie kalendarza po klikniciu w przycisk. Skrypty kalendarza znajduj si w katalogu includes/js/calendar musimy wic wstawi do nich link w czci head naszej strony. Wstawione daty bd widoczne w czci administracyjnej w edycji artykuu jako pola Rozpocznij i Zakocz. Zmodyfikowany formularz przedstawia Rysunek 13.

MAGDALENA MARYASKA
Rysunek 12. Formularz dodawania ogosze na stronie

Autorka pracuje na Politechnice Krakowskiej jako webmaster. Kontakt: mmaryanska@interia.pl

56

03/2008

Joomla!

www.phpsolmag.org

57

You might also like