Start arrow Programowanie arrow patTemplate arrow Odczyt z różnych źródeł
Odczyt z różnych źródeł Drukuj Wyślij znajomemu
Jeśli chcesz przechowywać swój szablon graficzny w dowolnym miejscu, możesz stworzyć nowy czytnik (Reader). Po prostu utwórz nową podklasę patTemplate_Reader w katalogu czytników - Reader.

Możesz zaimplementować co najmniej jedną z metod: readTemplates().

patTemplate przywoła tę metodę, w momencie gdy użytkownik wykona wywołanie patTemplate::readtemplatesFromInput() oraz poda unikalny indentyfikator szablonu do odczytania. Może nim być nazwa pliku, URL, czy też wartość klucza podstawowego w bazie danych.

Po przeczytaniu szablonu, będziesz musiał zwrócić tablicę, zawierającą strukturę szablonu. W większości przypadków będziesz mógł wykorzystać do tego celu patTemplate_Reader::parseString(), wykorzystującą wyrażenia regularne do podzielenia źródła szablonu na kilka bloków i interpretacji wszystkich znaczników.

 
01        < ? PHP
02        / **
03        * Czytnik patTemplate - pobiera dane z pliku
04        *
05        * @package       patTemplate
06        * @subpackage    Readers
07        * @author        Stephan Schmidt <schst @ php.net>
08        */
09        class patTemplate_Reader_File extends patTemplate_Reader
10        {
11           /**
12            * nazwa czytnika
13            * @access    private
14            * @var        string
15            */
16            var $_name ='File';
17        
18           /**
19            * odczyt szablonów z dowolnego zrodla
20            *
21            * @final
22            * @access    public
23            * @param    string    file to parse
24            * @return    array    templates
25            */
26            function readTemplates( $input )
27            {
28                $this->_currentInput = $input;
29                $fullPath  = $this->_resolveFullPath( $input );
30                $content   = file_get_contents( $fullPath );
31        
32                $templates = $this->parseString( $content );
33                
34                return $templates;
35            }
36        
37           /**
38            * ustalenie sciezki do szablonu
39            *
40            * @access    private
41            * @param    string        filename
42            * @return    string        full path
43            */    
44            function _resolveFullPath( $filename )
45            {
46                $baseDir  = $this->_options['root'];
47                $fullPath = $baseDir . '/' . $filename;
48                return $fullPath;
49            }
50        }?>

Jeśli chcesz wspierać funkcjonalność parse="off" dla szablonów zewnętrznych, będziesz musiał utworzyć drugą metodę nazwaną loadTemplate(). Metoda ta umożliwia otrzymanie unikalnego identyfikatora i powinna zwrócić dane przypisane do niego jako łańcuch znakowy. W powyższym przykładzie powinieneś usunąć odwołanie do parseString().

Możliwości:

  • Odczyt z bazy danych,
  • Odczyt z serwera szablonów,
  • Odczyt ze współdzielonej pamięci,

Inne silniki szablonów

Czytniki mogą być również wykorzystane do odczytu szablonów stworzonych dla innych silników szablonów niż patTemplate. Stworzyliśmy już czytnik (Reader), który umożlwia odczytanie szablonów, które zostały utworzone dla HTML_Template_IT oraz umieszczania ich jako szablonów patTemplate.

Jeśli chcesz utworzyć czytnik dla innych silników szablonów, będziesz musiał zrobić to tak, aby zachować strukturę patTemplate. Umieścimy więcej informacji na ten temat w kolejnym punkcie.

Caching

patTemplate wspiera caching zwracanych struktur szablonów. Ale ponieważ caching jest wciąż na etapie testów beta oraz zewnętrzne API może się zmienić, dokumentacja na ten temat pojawi się gdy tylko powstanie wersja stabilna.


Uwagi, źródła

Jeżeli masz sugestie odnośnie treści lub chcesz zgłosić poprawki do tego rozdziału, skomentuj go albo umieść wiadomość na forum: Dokumentacja - Propozycje, zmiany, poprawki

Dziękujemy!

Stefan Wajda, Zespół Dokumentacji PCJ

Tłum. Adam Sobkowicz. Na podstawie: help.joomla.org
Licencja: GNU FDL

Zmieniony ( 29.07.2006. )
 
« poprzedni artykuł   następny artykuł »