Pisanie modułów część 1: Joomla!

Dzisiaj trochę o popularnych skryptach CMSach, blog’ach, a dokładniej jak zrobić własny moduł, plugin, infusiony itp. do tychże skryptów :)
Na pierwszy ogień idzie Joomla:

Okej więc zaczynamy!
Stworzymy Moduł który będzie pobierał tytuły artykułów i je wyświetlał za pomocą marquee w postaci linków.
w ten sposób
Najpierw tworzymy plik mod_short_news.php
o treści:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
/*
Autor: Krzyk
www: http://e-krzyk.pl
*/
defined('_JEXEC') or die('Direct Access to this
location is not allowed.');
// Linia ta blokuje bezpośredni dostęp do pliku
require_once (dirname(__FILE__).DS.'helper.php');
// załączamy plik z klasą która odpowiedzialna jest za pobieranie danych
$names = modshort_newsHelper::getNews();
// pobieramy dane :)
echo '<marquee  onMouseover="this.scrollAmount=0" onMouseout="this.scrollAmount=6">
<font color="red"><b>Aktualności: </b></font>';
foreach($names as $name)
// potrzebujemy pętli żeby wszystko wyświetlić :)
{
echo "<a href='index.php?option=com_content&view=article&id={$name->id}&Itemid=59'><b>";
print_r ($name->title);
echo "</b></a> - ";
}
echo '</marquee>';

następnym plikiem będzie helper.php odpowiedzialny za pobieranie danych

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
/*
Autor: Krzyk
www: http://e-krzyk.pl
*/
defined('_JEXEC') or die('Restricted access');
class modshort_newsHelper
{
function getNews() {
// tworzymy funkcję
$db=& Jfactory::getDBO();
// połączenie z bazą danych
$result = array();
$query = 'SELECT `id`, `title`' .
// To co mamy pobrać czyli id i tytuł
' FROM #__content' .
// pobranie artykułów
' WHERE sectionid = 1 AND state = 1' .
// ale tylko tych które są w 1 sekcji i zostały opublikowane
' ORDER BY id DESC LIMIT 6';
// porządkujemy je i ograniczamy do 6 wyników.
$db->setQuery($query);
$news = $db->loadObjectList();
// pobieramy
if ($db->getErrorNum()) {
JError::raiseWarning( 500, $db->stderr() );
}
return $news;
// i zwracamy wyniki :)
}
}

teraz potrzebny jest plik .xml którego nazwiemy mod_short_news.xml
kod:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<name>Aktualności</name>
<author>Krzyk - http://e-krzyk.pl</author>
<creationDate>April 2010</creationDate>
<copyright>Krzyk - http://e-krzyk.pl</copyright>
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
</license>
<authorEmail>krzykophil@gmail.com</authorEmail>
<authorUrl>http://e-krzyk.pl</authorUrl>
<version>1.5.0</version>
<description>Moduł służący do wyświetlenia
aktualności</description>
<files>
<filename module="mod_short_news">mod_short_news.php</filename>
<filename module="mod_short_news">helper.php</filename>
<filename module="mod_short_news">index.html</filename>
</files>
</install>

Teraz wyjaśnię te najważniejsze tagi:
name – nazwa naszego modułu w menu
description – opis modułu
files – pliki jakie wymagane są do działania modułu
pojawia się tu plik o którym wcześniej nie pisałem, a dokładniej index.html
jest to zwykły plik html który uniemożliwia przeglądanie folderu modułu

1
<html><body bgcolor=?#ffffff?></body></html>

Teraz przydałoby się zainstalować nasz nowy moduł :)
Mamy już kod, teraz wypadałoby to zainstalować w Joomla!. Instalator modułów wymaga pliku .zip zawierającego plik .php i .xml. Zzipuj pliki, a potem w administratorze Joomla wybierz Instaluj(Install/Uninstall) z menu Rozszerzenia(Extensions). I znajdziesz tam opcję do uploadowania plików. Wybierz nasz plik .zip i go wyślij. Gratuluję. Właśnie zainstalowałeś moduł. :)
Teraz idziemy do Rozszerzenia(Extensions) -> Moduły(Module Manager), co by opublikować nasz moduł! :)

Odpowiedzi: 2 do tego wpisu.

  1. Autor: online dnia 07.04.10 o godz. 20:09

    Dzieki za ciekawy blog

  2. Autor: Krzyk dnia 07.04.10 o godz. 20:09

    Ciekawy? hmm choć to mój blog to uważam go za niezbyt ciekawy :P aktualnie brakuje mi pomysłu o czym by tu napisać :P

Skomentuj ten wpis