+CMS COntent Management Homepage

/ Indeks dokumentacji / Wdrożenie / Szabon strony / Plik XML / Sekcja template / Nalepki

Nalepki

Wraz z wersją 1.2.0 systemu wprowadzono możliwość transformacji szablonu przed wykorzystaniem go do tworzenia strony. Pozwala to na minimalizację ilości szablonów w systemie. Wyobraźmy sobie sytuację w której mamy szablon, gdzie nagłówek musi zmieniać kolor w zależności od działu. W poprzednich wersjach systemu trzeba było przygotować tyle szablonów ile jest działów mimo, że w szablonie zmieniała się jedynie jedna linia.

Teraz problem ten został rozwiązany. Plik XML który definiuje jakie operacje mają być wykonane przed dodaniem nowej strony posiada znacznik <template> w którym dodajemy tzw. nalepki

Modyfikacja szablonu wykonywana jest jedynie w momencie dodawania nowej strony. Strony znajdujące się w systemie nie są automatycznie aktualizowanej jeżeli ulegną zmianie definicje w pliku XML.

Zasada działania

Modyfikacja szablonów przebiega w następujący sposób. Przed wykorzystaniem szablonu jest on nadpisywany wartościami nalepki. Nalepki mogą przybierać wartości zależne od kategorii, wersji językowej czy zalogowanego użytkownika. Następnie tak zmodyfikowany szablon jest parsowany przez parser systemu. Oznacza to, że można dynamicznie dodawać do szablonu nowe części i podmieniać elementy przeznaczone do edycji.

Uwaga. Zmiana pliku XML na istniejącej już stronie nie zawsze powoduje automatyczne ponowne partowanie szablonu. W przypadku, gdy zmienimy kategorię istniejącej już strony lub wartość naklejki w pliku XML strona automatycznie nie zostanie zmodyfikowana do postaci odpowiadającej nowej konfiguracji. Stanie się tak jedynie wtedy kiedy strona zostanie wygenerowana od nowa. Generowanie od nowa strony występuje jedynie w dwóch przypadkach, kiedy zostanie zmieniony szablon XHTML strony lub użytkownik wymusi odświeżenie zawartości strony klikając w ikonę "odśwież".

Plik XML:

<?xml version="1.0" encoding="utf-8" ?>

<cms>
 
<template src="Szablon.xhtml">
    <label name="catStyle"> style="color: black"</label>
    <category category-name="Aktualności">
        <label name="catStyle">
style="color: red"</label>
    </category>
    <category category-id="2">
        <label name="catStyle">
style="color: blue"</label>
    </category>
    <category parent-category-id="1">
        <label name="catStyle">
style="color: green"</label>
    </category>

 </template></cms>

Opis.

Znacznik

Opis

<template>

Wprowadza modyfikację szablonu przed utworzeniem strony.

<category>

Jest to Tag grupujący. Mówi o tym jakie wartości naklejek (labels) mają być użyte w przypadku, gdy użytkownik wybierze wskazaną kategorię strony. Kategorie definiowane są przez atrybuty: category-id, category-name lub parent-category-id.

Atrybut

Dozwolone wartości

Opis

category-id

Wartość numeryczna

Id kategorii. Jeżeli identyfikator kategorii będzie równy wartości atrybutu (patrz: przykład poniżej jest to 2), to naklejka o nazwie catStyle przyjmie wartość style="color: blue".

category-name

Tekst

Identyczna funkcja jak w przypadku category-id tylko w tym przypadku do identyfikacji wykorzystywana jest nazwa. Można użyć atrybutu category-id bądź category-name. Stosowane są one zamiennie.

parent-category-id

Wartość numeryczna

Definiuje zestaw naklejek dla całej grupy kategorii. Identyczna funkcja jak cateogry-id z tą różnicą że pod uwagę brany jest identyfikator kategorii nadrzędnej.

<label>

Definicja naklejki i jej treści. Wartości label będą zastępowały w szablonie znaczniki {LABEL:nazwa}. Nazwane zostały naklejkami gdyż będą jakby naklejone na stare wartości w szablonie.

Atrybut

Dozwolone wartości

Opis

nazwa

tekst

Nazwa naklejki. Odpowiednik tej nazwy musi znaleźć się w szablonie w postaci {LABEL:nazwa}.

src ścieżka dostępu Ścieżka dostępu do pliku z danymi. Zastępuje wartości znajdujące się między tagami <label></label>.
lang język W przypadku strony w jakim języku ma być użyty ten label.

<user>

Znacznik grupujący naklejki w zależności od tego kiedy mają być użyte (jaki użytkownik ma do nich prawo)
name nazwa Nazwa użytkownika.

Bardzo dobrym rozwiązaniem jest korzystanie z atrybutu 'src'. Można wtedy dołączyć od XML'a treść szablonu, przez co w przypadku modyfikacji nie trzeba będzie edytować wielu plików tylko jeden.

Przykład:

<category parent-category-id="1">
  <label name="catStyle" src="plik.html"></label>
</category>

Korzystając z funkcji modyfikacji szablonów można przed utworzeniem strony wymusić zmianę szablonu wg zdefiniowanych w XML warunków.

Przykład

Szablon strony wygląda następująco:

<div{LABEL:catStyle}>Mój pierwszy szablon</div>
<cms:Plaintext id="treść strony" />

Zapis {LABEL:catStyle} zostanie zastąpiony wartością naklejki o nazwie catStyle. Wartości dla naklejek zdefiniowane są w pliku XML. Jak łatwo zauważyć w powyższym przykładzie zdefiniowaliśmy 4 wartości naklejki catStyle i są one zależne od tego do jakiej kategorii zostanie zakwalifikowana strona.

 

Kategoria

Wartość

Brak kategorii

style="color: black"

Kategoria o nazwie: Aktualności

style="color: red"

Kategoria o id: 2

style="color: blue"

Kategoria nadrzędna o id: 1

style="color: green"

Oznacza to że jeżeli użytkownik stworzy stronę i wybierze kategorię Aktualności to nagłówek w szablonie będzie koloru czerwonego, gdyż {LABE:catStyle} zostanie zastąpiony wartością style="color: red". Jeżeli nie wybierze kategorii to nagłówek będzie czarny (style="color: black"). Jeżeli wybierze kategorię o numerze id równym 2 to nagłówek będzie niebieski (style="color: blue").

W ten sposób ograniczyliśmy możliwość tworzenia 4 szablonów w różnych wersjach kolorystycznych. Gdy w przyszłości przyjdzie nam zmieniać szablon nie będziemy musieli modyfikować 4 plików tylko jeden.

Plik XML (z przykładu powyżej) umieszczamy w katalogu /content/templates (dokładnie tak samo jak robiliśmy to w poprzednich wersjach z szablonami) i na jego podstawie tworzymy stronę.

Nalepki a zalogowany użytkownik

Istnieje możliwość modyfikować wartości nalepek (labels) w zależności od tego jaki użytkownik jest zalogowany. Przykład takiego XML'a znajduje się poniżej:

<?xml version="1.0" encoding="utf-8" ?>

<cms>

 <template src="Szablon.xhtml">
  <user name="adam">
    <label name="użytkownik">Adam Kowalski </label>
    <label name="zdjęcie">/content/repository/image/Adam.jpg</label>
  </user> 
 </template>

</cms>

Nalepki i wersje językowe

Istnieje także możliwość modyfikacji szablonu na podstawie języka strony. Tagi label zostały rozszerzone o atrybut lang.

Przykład:

<?xml version="1.0" encoding="utf-8" ?>

<cms>
   <template src="Szablon.xhtml">
       <label name="lang">Pusty</label>
       <label name="lang" lang="de-de">German</label>
       <label name="lang" lang="en-uk">English</label>
       <label name="lang" lang="pl-pl">Polish</label>
       <label name="lang" lang="fr-fr">French</label>
   </template>
</cms>
 

Jeżeli brak atrybutu lang to tag ten używany jest niezależnie od języka strony.

UWAGA! Włącznie możliwości określenia języka strony przy jej tworzeniu wykonuje sie w sekcji <FORM>. Przykład pełnego XML'a (wszystkie sekcje):

<?xml version="1.0" encoding="utf-8" ?>

<cms>
 <action>
  <default item="page" property="template_dir" value="/cms/content/templates/xml.html"/>
 </action>

   <form>
     <sections multiple="yes" required="no">
        <category id="0" get-children="yes"/>
     </sections>
     <library switch="no"/>
     <lang switch="on">
        <option value="pl-pl">Polski</option>
        <option value="en-uk">English</option>
        <option value="de-de">Deutch</option>

        <option value="fr-fr">French</option>
     </lang>

   </form>

  <template src="Szablon.xhtml">
       <label name="lang">Pusty</label>
       <label name="lang" lang="de-de">German</label>
       <label name="lang" lang="en-uk">English</label>
       <label name="lang" lang="pl-pl">Polish</label>
       <label name="lang" lang="fr-fr">French</label>
  </template>
</cms>

Szablon stron powinien posiadać stałą (nalepkę) w formie:{LABEL:lang}, która zostanie zastąpiona w zależności od języka jaki wybierze użytkownik wartością: German, English, Polish lub French.

Zobacz więcej...
Prezentacja

Metryka dokumentu

Tytuł: Indeks dokumantacji
Opis: Spis stron dokumentacji
Źródło: +CMS Content Management
Prawa autorskie: +CMS Content Management Platform
Autor: root Zmodyfikowany przez: root
Data utworzenia: 2008-09-10 13:03:13 Data modyfikacji: 2008-09-10 13:18:14
Data publikacji: 2008-09-10 13:18:14
(c) +CMS Content Management Platform