Změny ve zpracování šablon (4.7.4)
S cílem zrychlit, zpřehlednit a zjednodušit zápis šablon jsme ve verzi 4.7.4 provedli následující změny v mechanismu zpracování šablon.
1. Uvozovkování ve vnořeném tagu
Ve vnořeném tagu je možné hodnoty parametru či části výrazu uvozovkami označit jako celek. Uvnitř uvozovkované hodnoty je možné uvést i stejnou uvozovku escapováním znakem \.
Uvozovky již dále není možné vnořovat.
Příklad: <shop:Test Expression="shop:GetCookie(name='moje-cookie') = 'test 1'" runat=server >
Příklad 2:
<shop:SetVarValue name="moje-promenna" value="test'1" runat=server />
<div>
<shop:Test Expression="shop:GetVarValue(name='moje-promenna') = 'test\'1'" runat=server>
<SuccessTemplate>
moje-promenna = test'1
</SuccessTemplate>
<AlternativeTemplate>
moje-promenna:<shop:GetVarValue name="moje-promenna" runat=server /> se nerovná test'1
</AlternativeTemplate>
</shop:Test>
</div>
Dříve způsobilo použití pomlčky v jedné z hodnot (např. v názvu) chybné vyhodnocení výrazu.
2. Vynechání názvu hlavního parametru ve vnořeném tagu
U některých tagů (použitých v hodnotě parametru jiného tagu) je možné vynechat název parametru, pokud se zadává hodnota jen jednoho (hlavního) parametru. V takovém případě se hodnota nastaví hlavnímu parametru tagu.
Tagy: shop:GetVarValue, shop:Config, shop:GetText, shop:GetFormValue, shop:GetValue
A tagy, kde lze použít jediný parametr Property: shop:GetProduct, shop:GetLevel, ...
Např.:
<shop:Test Parameter1="shop:GetVarValue(Promenna1)" >
Za hlavní parametr se považuje první existující z řady: Property, Name, Key, TextID, Value, PropertyName
Pozor:
Stojí-li však tag samostatně, název parametru musí být stále uveden.
Správně: <shop:GetVarValue name=Promenna1 runat=server />
Špatně: <shop:GetVarValue Promenna1 runat=server />
Je-li použito více parametrů, u všech musí být uveden jejich název.
3. Kratší alternativa tagu Shop:GetConfigValue
– shop:Config s jedním parametrem Config ="Config.Property"
Např. místo tagu
<shop:GetConfigValue config=Catalogue Property=Picture runat=server />
Lze použít kratší verzi:
<shop:Config config=Catalogue.Picture runat=server />
Uvnitř tagu shop:Test
Místo původní verze
<shop:Test Parameter1= "shop:GetConfigValue(config=Catalogue,Property=Picture)" Parameter2 = "picture" runat=server>
Lze zapsat:
<shop:Test Parameter1= "shop:Config(Catalogue.Picture)" Parameter2 = "picture" runat=server>
Původní syntaxe zůstává i nadále funkční.
4. Vyhodnocování výrazů v tagu shop:SetVarValue
Parametr Value se vyhodnocuje jako text. Doplnili jsme i parametr Expression (nebo zkráceně Eval), v něm uvedený výraz se před přiřazením do proměnné vždy vyhodnocuje jako číselný nebo logický výraz.
Použije se jen pokud není zároveň nastaven parametr Value.
5. Tag shop:If
Je obdobou tagu shop:Test pro použití uvnitř výrazů. Pro vyhodnocení lze (stejně jako u tagu shop:Test) využít parametry Expression nebo Parameter1, Parameter2 a Operator.
Místo parametrů SuccessResult a AlternativeResult lze použít kratší Then a Else.
Příklad: Podmíněné přiřazení hodnoty do proměnné
<shop:SetVarValue name=Promenna1
Expression="shop:If(Expression='shop:Config(Catalogue.ShowMarks)
&& shop:GetProduct(Property=IsNew)',
Then='Je to novinka', Else='Není to novinka')" runat=server />
6. Tag shop:Evaluate
Vrací výsledek vyhodnocení výrazu zadaného v parametru Expression.
Je užitečný např. při zjišťování správnosti zápisu nebo vyhodnocování výrazů.
7. Proměnné ve výrazech
Místo tagu shop:GetVarValue(Name=NazevPromenne) je možné ve výraze použít jen název proměnné uvozený znakem $.
Příklad:
<shop:SetVarValue name="promenna_1" value="5" runat=server />
<div>
Vrací -6: <shop:Evaluate Expression="-($promenna_1 + 1)" runat=server />
Název proměnné smí obsahovat pouze alfanumerické znaky a podtržítko.
8. Opraveno vyhodnocování záporných výrazů
Znak "-" před shop tagem apod.