Archiwum: December, 2008

Małe uaktualnienie

Udało mi się wreszcie przysiąść i poprawić linki na podstronach, więc wszystkie powinny działać, dzięki czemu łatwiej wam będzie dotrzeć do ciekawych artykułów o Mathematice czy LaTeX-u. Niestety nie możemy na razie napisać nic nowego gdyż jesteśmy bardzo zaabsorbowani realizację pewnego projektu, o którym na pewno pewnego dnia opowiemy. 

Zaktualizowałem również listę opisów z pierwszej pracowni fizycznej (b) na podstronie “zasoby”. Zbliża się sezon na poszukiwanie tych opisów więc mam nadzieję że komuś się przydadzą. Ponieważ ten post nie może być taki krótki postanowiłem wkleić aktualną listę opisów poniżej. Istnieje szansa, że dzięki temu Google lepiej zaindeksuje pliki PDF.

Rachunek Błędu Pomiarowego:

Pracownia Wstępna:

Pracownia Elektroniczna:

I Pracownia Fizyczna:

| Komentarze

Joomla – Piszemy pierwszy moduł

Kiedy skrypt napotyka żądanie wyrenderowania jakiegoś modułu, wtedy za pomocą klasy JModuleHelper pobierana jest zawartość pliku modules/mod_nazwamodulu/mod_nazwamodulu.php – to tak w uproszczeniu, bo jeszcze w zależności od templatki moduł może być ubierany w jakieś divy albo tabelkę. A więc do programisty teoretycznie należy napisanie pliku mod_nazwamodulu.php. Praktycznie – też tak jest. Należy jednak pamiętać o pewnych “trendach” jakich powinno się trzymać pisząc moduły. Przez kilka następnych artykułów będziemy uczyć się właśnie tych trendów. Będziemy też powoli przyswajać budowę samej Joomli. Nie będziemy natomiast uczyć się PHP. To mam nadzieję już w jakimś stopniu jest opanowane

Po pierwsze – Plan

Musimy się najpierw zastanowić co chcemy zrobić i jakoś to rozplanować. Nasz moduł nie będzie zbyt skomplikowany. Jego działanie polegać będzie na wypisaniu na ekran “Hello world”. Całość więc zakodujemy po prostu w pliku mod_hello.php – ponieważ tak będzie nazywał się nasz komponent – mod_hello.

mod_hello

zobaczmy na poniższy kod

<?php
/**
 * Moduł mod_helloworld - stworzony na potrzeby www.morony.pl
 * autor Maciej Mucha, maciej@morony.pl
 */

defined('_JEXEC') or die('Direct Access to this
		 location is not allowed.');

echo 'Hello World!';

Jest to zwykły plik php. Wyjaśnienia wymaga linia sprawdzająca istnienie stałej ‘_JEXEC’. Jest to stała zdefiniowana w pliku index.php. Joomla cała opiera się właśnie na tym pliku. tzn wszystkie adresy naszej strony to index.php?… Nie ma więc potrzeby otwierania bezpośrednio jakiegokolwiek innego pliku (może to być nawet niebezpieczne). Sprawdzamy więc czy plik został wczytany za pomocą pliku index.php. Jeśli nie – wtedy blokujemy dostęp. tą klauzulę możemy znaleźć prakrycznie w każdym pliku php wchodzącym w skład joomli.

Kiedy jesteśmy już pewni że strona została wczytana prawidłowo przechodzimy do właściwego kodu. W tym przypadku kod nie wymaga chyba tłumaczenia 🙂

Skrypt się skończył.. A gdzie tag zamykający skrypt php? Nie jest on wymagany. A ponieważ plik który napisalismy ma być ładowany do innego pliku, wszelkie spacje czy inne białe znaki były by bardzo niepożądane, A takie zostały by wczytane gdyby wystąpiły po “?>”. Jest to praktyka przyjęta w Joomla 1.5, i będziemy ją stosować za każdym razem.

Pięknie – skrypt napisany. Ale co z tego? jak go teraz wgrać aby był dostępny z poziomu panelu administracyjnego? W Joomli służą do tego pliki instalacyjne XML.

Plik instalacyjny

nasz plik instalacyjny będzie wyglądał tak:

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
	<name>Hello World</name>
	<author>Maciej Mucha - www.morony.pl</author>
	<creationDate>December 2008</creationDate>
	<copyright>Maciej Mucha - www.morony.pl</copyright>
	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
              </license>
	<authorEmail>maciej@morony.pl</authorEmail>
	<authorUrl>http://www.morony.pl</authorUrl>
	<version>1.5.0</version>
	<description>Moduł służący do wyświetlenia 
               informacji "Hellow World"</description>
	<files>
		<filename module="mod_hello">mod_hello.php</filename>
		<filename module="mod_hello">index.html</filename>
	</files>
</install>

O co tu chodzi? To proste, najpierw podajemy kilka informacji o sobie i o skrypcie które będą widoczne w panelu admina, oraz listę plików, które instalator przekopiuje na dysk.

Co jest ważne:

 

  • <install type=”module” version=”1.5.0″> – informacja o tym że instalujemy moduł, kompatybilny z joomlą 1.5.x i wyższe
  • <name>Hello World</name> – nazwa modułu wyswietlana w panelu administracyjnym
  • <filename module=”mod_hello”>mod_hello.php</filename> – parametr module=”mod_hello” zostanie przyjęty jako nasza nazwa modułu oraz katalog w kórym będzie dostępny moduł. Nie mylić z przyjazną nazwą wyświetlaną.
  • <?xml version=”1.0″ encoding=”utf-8″?> – ważne jest aby plik został zakodowany w kodowaniu które zadeklarowaliśmy. W przeciwnym wypadku instalator wurzuci błąd.
  • <filename module=”mod_hello”>index.html</filename> – w dobrym tonie jest, aby w każdym katalogu joomli znajdował się plik index.html o treści”<html><body bgcolor=”#ffffff”></body></html>

Instalujemy!

Aby móc przystąpić do instalacji musimy jeszcze spakować pliki (razem z plikiem instalacyjnym, który zapisujemy jao mod_hello.xml). Najlepiej do pliku mod_hello.zip. Następnie instalujemy komponent. 

1. Wybieramy instalator

 

2. Wybieramy plik i klikamy instaluj

 

3. Cieszymy się z zainstalowanego modułu.

 

Uruchamiamy moduł

1. Wybieramy moduły z menu

 

2. Tworzymy nowy moduł

 

3. Z listy wybieramy nasz moduł

 

4. Ustawiamy parametry wyświetlania modułu

 

5. Jeśli wszystko zrobiliśmy dobrze, powinniśmy zobaczyć coś takiego – działający moduł

Poprawki

To że moduł nam się zainstalował, nie znaczy jeszcze że będzie działał. Może się okazać, ze popełniliśmy jakiegoś babola i nasz moduł wywala błąd php. Nie musimy wtedy powtarzać całej procedury od początku. Wystarczy, że podmienimy odpowiedni moduł na serwerze i już (no i oczywiście potem w paczce z modułem, kiedy już będzie działał. 

Podsumowanie

Jak widać napisanie prostego modułu dla Joomli nie jest czymś szczególnie trudnym (choć nasz moduł nie robił za wiele). W następnych artykułach dowiemy się już jak napisać coś pożytecznego.

Pozdrawiam,

Much

| Komentarze (6)

Joomla – Przydatne kawałki kodu

Kiedy Piszę jakiś komponent albo moduł dla joomli są pewne partie kodu, które się często powtarzają. Postanowiłem je zebrać w jedno miejsce.

 

Blokowanie bezpośredniego dostępu do plików:

defined('_JEXEC') or die('Restricted access');

W pliku index.php zdefiniowana została stała _JEXEC – sprawdzamy czy ona istnieje, a więc czy uzytkownik załadował plik index.php

 

Blokowanie dostępu do treści niezalogowanym użytkownikom

$user =& JFactory::getUser();
if($user->guest){
	// kod dla niezalogowanego
} else {
	// kod dla zalogowanego
}

Do zmiennej $user zostaje załadowany objekt (klasy JUser) przechowujący dane a temat zalogowanego uzytkownika. Pole guest przechowuje informacje o tym czy uzytkownik jest zalogowany (boolean)

 

Informacje o zalogowanym użytkowniku

$user =& JFactory::getUser();
	$name = $user->name; // Imię
	$username = $user->username; // Nick
	$email = $user->email; // e-mail
	$id = $user->id; // unikalne ID
	$lastVisit=$user->lastvisitDate; // Data ostatniej wizyty
	$registerDate=$user->registerDate; // Data rejestracji
	$guest=$user->guest; // Czy gość (boolean)

 

Tworzenie zmiennej do wykorzystania w templatce przy wykorzystaniu modelu MVC

$zmienna='cokolwiek';
$this->AssignRef('zmienna' $zmienna);

 

Wykorzystanie zmiennej w templatce przy wykorzystaniu modelu MVC

<b><?php echo $this->zmienna; ?></b>

 

Pobranie wartości z pliku językowego

JText :: _('PLEASE LOG IN');

W odpowiednim pliku językowym zostanie znaleziona poniższa linia oraz pobrana będzie jej wartość. Jest to plik ini

PLEASE LOG IN=Proszę, zaloguj się.
Kolejne pomocne partie kodu będę dopisywł systematycznie.
Pozdrawiam,
Much

| Komentarze (1)