dragon head QuasiGame dragon head

Polish flag UK flag

O projekcie / Python / SimpleTAL / Przewodnik

Wprowadzenie

Jest to prosty przewodnik dla języków TAL oraz TALES. Formalne specyfikacje możesz znaleźć na stronach projektu Zope: TAL, TALES oraz METAL.

Komendy TAL

TAL składa się z siedmiu komend (podane według priorytetu wykonywania): define, condition, repeat, content, replace, attributes oraz omit-tag. Komendy te zapisuje się jako attrybuty tagów w HTML lub XML, np.: <div tal:content="text">Tu będzie wstawiony tekst.</div>.

tal:define

Składnia: tal:define="[local | global] name value [; define-expression...]
Opis: ustawia wartość zminnej "name" na "value". Domyślnie zmienna będzie widoczna w "lokalnym" zasięgu, co oznacza dany tag oraz wszyskie w nim zagnieżdzone. Jeśli użyjemy słowa "global" zmienna będzie widoczna od tego miejsca, do końca dokumentu.
Przykład: <div tal:define="global title book/title; local chapterTitle book/chapter/title"></div>

tal:condition

Składnia: tal:condition="expression"
Opis: Jeśli "expression" jest równoważne z "True", to dany tag oraz wszystkie tagi w nim zagnieżdżone będą wypisane, w przeciwnym przypadku zostaną pominięte.
Przykład: <h1 tal:condition="user/firstLogin">Witaj na stronie!</h1>

tal:repeat

Składnia: tal:repead="name expression"
Opis: Jeśli "expression" jest sekwencją powtarza dany tag oraz wszystkie taki zagnieżdżone dla każdego elementu sekwencji. Do zmiennej "name" będą kolejno przypisywane wartości danych elementów sekwencji. Jest to również nazwa zmiennej pętli - zmienna ta jest dostępna przez wywołanie "repeat/name" i można z niej pobrać następujące wartości:
  • index - numer iteracji, począwszy od 0
  • number - numer iteracji, począwszy od 1
  • even - True jeśli jest to parzysta iteracja
  • odd - True jeśli jest to nie parzysta iteracja
  • start - True jeśli jest to pierwszy element sekwencji
  • end - True jeśli jest to ostatni element sekwencji
  • length - długość sekwencji, dla iteratorów zwraca maxint, ponieważ rzeczywista długość nie jest wówczas znana
  • letter - mała litera alfabetu dla danej iteracji, począwszy od "a"
  • Letter - wielka litera alfabetu dla danej iteracji, począwszy od "A"
  • roman - rzymski numer iteracji, począwszy od "i"
  • Roman - rzymski numer iteracji, pisany wielkimi literami, począwszy od "I"
Przykład:

    <table>
        <tr tal:repeat="fruit basket">
            <td tal:content="repeat/fruit/number"></td>
            <td tal:content="fruit/name"></td>
        </tr>
    </table>

tal:content

Składnia: tal:content="[text | structure] expression" Opis: Zamienia zawartość taga na wartość zwracaną przez "expression". Domyślnie oraz przy użyciu słowa kluczowego "text" niektóre znaki zostają zamienione (np. < oraz > zostają zamienione na &lt; i &gt;). Jeśli słowo "structure" jest obecne wówczas tekst pozostaje bez zmian.
Przykład: <h1 tal:content="user/firstName"></h1>

tal:replace

Składnia: tal:replace="[text | structure] expression"
Opis: Działa podobnie do tal:content, z wyjątkiem tego, że dany tag (a nie tylko tagi zagnieżdzone) zostaje usunięty.
Przykład: <h1>Witaj <b tal:replace="user/firstName"></b></h1>

tal:attributes

Składnia: tal:attributes="name expression[;attributes-expression]"
Opis: w danym tagu zmienia wartość atrybuty "name" na wartość zwracaną przez "expression". Jeśli ta wartość jest pusta, wówczas atrybut jest pomijany. Jeśli "expression" zwraca "default" wówczas wartość atrybutu pozostaje niezmieniona. Jeśli "expression" wymaga średnika powinien on zostać zapisany jako ;;.
Przykład: <a tal:attributes="href user/homepage;title user/fullname">Strona domowa</a>

tal:omit-tag

Składnia: tal:omit-tag="expression"
Opis: Jeśli "expression" zwraca True, usuwa dany tag, pozostawiając zawarty w nim tekst i zagnieżdżone tagi.
Przykład: <p><b tal:omit-tag="not:user/firstVisit">Witaj</b> na stronie!</h1>

TALES

Wyrażenia używane w TAL są nazwane wyrażeniami TALES. Najprostsze wyrażenie TALES to ścieżka odwołująca się to wartości, np. user/login odwołuje się do elementu login w zmiennej user.

path

Składnia: [path:]string[|TALES Expression]
Opis: Ścieżka, opcjonalnie poprzedziona modyfikatorem 'path:', odwołuje się do pola obiektu. Znak '/' jest używany jako separator pomiędzy nazwą obiektu, a nazwą pola. Pola, również mogą być obiektami i jako takie posiadać kolejne pola. Znaki '|', '(' oraz ')' są używane do znalezienia alternatywnych wartości, jeśli pierwszy pierwsza ścieżka nie istnieje lub zwraca wastość 'Nothing'.
Przykład: <p tal:content="book/chapter/title | string:Untitled"></p>
Jest kilka, wbudowanych ścieżek, które mogą być użyte:
  • nothing działa jak 'none' w Pythonie
  • default pozostawia oryginalną wartość elementu (taga lub atrybutu)
  • options słownik wartości przekazanych do szablonu (poprzez metodę Context.__init__)
  • repeat dostęp do bierzącej zmiennej pętli (zobacz tal:repeat)
  • attrs słownik oryginalnych wartości atrybutów danego taga
  • CONTEXTS słownik zawierający wszystkie powyższe zmienne

exists

Składnia: exists:path
Opis: Zwraca true, jeśli ścieżka istnieje, zwraca false w przeciwnym wypadku. Jest to użyteczne do usuwania pustych tagów.
Przykład: <p tal:omit-tag="not:exists:book/chapter/title" tal:content="book/chapter/title"></p>

nocall

Składnia: nocall:path Opis: Zwraca odwołanie do ścieżki, ale bez jej ewaluacji. Przydatne gdy istnieje potrzeba zdefiniowana nowej nazwy dla danej funkcji, a nie jej wartości.
Przykład: <p tal:define="title nocall:titleFunction" tal:content="title"></p>

not

Składnia: not:tales-path
Opis: Zwraca odwrotność wyrażenia tales-path. Jeśli wyrażenie jest prawdziwe to zostanie zwrócone false.
Przykład: <p tal:condition="not: user/firstLogin">Welcome to the site!</p>

string

Składnia: string:text
Opis: Zwraca wartość łańcucha znaków z podstawionymi wartościami użytych zmiennych, używanych w formie ${pathName} oraz $pathName
Przykład: <b tal:content="string:Welcome ${user/name}!"></b>

python

Składnia: python:python-code
Opis: Przetwarza pythonowy kod i zwraca wartość. Kod Pythona musi być poprawnie skonwertowany, np. "python: 1 < 2" powinno zostać przepisane na "python: 1 &lt; 2". Kod Pythona ma dostęp do wszystkich funkcji, włączając cztery dodatkowe funkcje, które odnoszą się do odpowiednich poleceń TALES: path (string), string (string), exists (string) oraz nocall (string)
Przykład: <div tal:condition="python: path (basket/items) > 1">Checkout!</div>

METAL Macro Language

METAL to język makr, powszechnie używany z TAL oraz TALES. METAL pozwala na wielokrotne użycie określonej części szablonu.

metal:define-macro

Składnia: metal:define-macro="name"
Opis: Definiuje nowe makro, które może być potem dostępne pod nazwą "name".
Przykład: <div metal:define-macro="footer">Copyright <span tal:content="page/lastModified">2004</span></div> metal:use-macro
Składnia: metal:use-macro="expression"
Opis: Przetwarza "expression" i używa go jako makro.
Przykład: <div metal:use-macro="footer"></div>

metal:define-slot

Składnia: metal:define-slot="name"
Opis: Definiuje slot, pozwalający na późniejsze wstawienie wartości.
Przykład: <div metal:define-macro="footer"> <b>Standard disclaimer for the site.</b> <i metal:define-slot="Contact">Contact admin@site.com</i> </div>

metal:fill-slot

Składnia: metal:fill-slot="name"
Opis: Zamienia zawartość elementu z danym slotem.
Przykład: <div metal:use-macro="footer"> <i metal:fill-slot="Contact">Contact someone else</i> </div>
© 2009 Piotr Lewalski