Konfigurace pravidel generování URL
Konfigurace pravidel generování URL
Význam url je popsán zde.
Konfigurace pravidel generování URL je vždy součástí konfigurace entity, která mají svou stránku, tedy produkty, kategorie, skupiny nebo značky.
Konfiguraci lze specifikovat pro konkrétní katalog pomocí elementu catalogSpecific.
Zkopírovat odkaz na sekciPříklad základní konfigurace pravidel pro produkty
1 <product><!-- ... nebo <category>, <group>, <brand> -->2 <urlConfig>3 <rules>4 <rule>5 <patterns>6 <pattern>language + '/' + normalize(edeeShopEntity.name)</pattern>7 </patterns>8 </rule>9 </rules>10 </urlConfig>11</product>
Zkopírovat odkaz na sekciPříklad konfigurace
1 <urlConfig>2 <rules>3 <rule>4 <allowedChars>5 <allowedChar>6 <char>/</char>7 <maxNumber>1</maxNumber>8 </allowedChar>9 </allowedChars>10 <condition>'VARIANT'.equals(edeeShopEntity.productType.name)</condition>11 <patterns>12 <pattern/>13 </patterns>14 </rule>15 </rules>16</urlConfig>
Zkopírovat odkaz na sekciPopis
Zkopírovat odkaz na sekciurlConfig/rules/rule
Pravidla pro generování URL pro entity e-shopu, které mají na FE svůj vlastní detail, tedy produkty, kategorie, značky, skupiny.
Pravidla se aplikují v pořadí, ve kterém jsou definována. Url se vygeneruje pro první pravidlo, pro které je splněna podmínka a zároveň se podaří vygenerovat url.
Pokud nejsem definována žádná pravidla, tak se použije výchozí pravidlo, které obsahuje tyto 3 vzory:
- normalize(edeeShopEntity.name),
- normalize(edeeShopEntity.catalogNumber),
- edeeShopEntity.code.
Tedy nejprve se URL generuje z názvu. Pokud se to nepodaří, tak se url generuje z katalogového čísla. Poslední pokus je generování URL z kódu. Standardně se však url vygeneruje vždy z názvu.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| allowedChars/allowedChar | Seznam povolených znaků, které lze použít pro generování url v rámci tohoto pravidla. Pokud není specifikováno, tak se použije výchozí sada, který obsahuje '/'. | - | - | |
| condition | Podmínka pro pravidlo. Podmínka představuje SpEL výraz, kde je možné použít tyto proměnné:
Pokud není podmínka vyplněna (default), tak se pravidlo aplikuje vždy. | String | - | - |
| patterns/pattern | Vzory, přesněji SPel výrazy, které se mají použít pro vygenerování URL. Při generování URL se zohledňuje pořadí v jakém jsou výrazy definovány. Generátor se postupně pokusí vygenerovat url pro jednotlivé výrazy. Nejprve to zkusí pro první výraz, pak druhý atd. Pokud se url nepodaří vygenerovat pro žádný výraz, tak je vyhozena chyba. V rámci výrazu se lze odkazovat na následující proměnné:
Dále lze v rámci výrazu použít metodu normalize(string), která normalizuje string hodnotu, tak aby hodnota obsahovalo pouze použitelné znaky pro url. Příklad výrazu může být následující:
| String | - | - |
Zkopírovat odkaz na sekciallowedChars/allowedChar
Seznam povolených znaků, které lze použít pro generování url v rámci tohoto pravidla.
Pokud není specifikováno, tak se použije výchozí sada, který obsahuje '/'.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| char | Povolený znak. | char | ✔ | � |
| maxNumber | Maximální počet výskytů znaku v URL. Pokud není specifikováno, může se znak v URL vyskytovat libovolněkrát. | Integer | - | - |
Zkopírovat odkaz na sekciUrlBuilderContextPropertyAccessor
V rámci pattern lze použít i další proměnné, které mají svou implementaci UrlBuilderContextPropertyAccessor.
V základu existují tyto dvě implementace:
- masterUrl - Vrací url master produktu. Z toho vyplývá, že lze použít pouze pro varianty. Použití této proměnné ovlivní rychlost generování URL, protože se tato url musí samostatně načíst. Pokud url masteru neexistuje, generování selže.
- parentTree - Proměnná zpřístupňuje CategoryParentDescriptor, který obsahuje seznam kategorií, ve kterých je produkt obsažen.
Projektově lze doplnit vlastní implementace.