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

xml
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

xml
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.

VlastnostPopisHodnotaPovinná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 '/'.

allowedChars/allowedChar

-

-

condition

Podmínka pro pravidlo. Podmínka představuje SpEL výraz, kde je možné použít tyto proměnné:

  • language - jazyk pro danou URL.
  • edeeShopEntity - libovolná vlastnost konkrétní implementace , což může být produkt, kategorie, značka, skupina.

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é:

  • language - jazyk pro danou URL.
  • edeeShopEntity - libovolná vlastnost konkrétní implementace , což může být produkt, kategorie, značka, skupina.

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í:

  • normalize(edeeShopEntity.name) ... vygeneruje url z názvu entity, tedy např "top-produkt".
  • language/normalize(edeeShopEntity.catalogNumber) ... vygeneruje url z názvu entity, tedy např. "cs/prod01"

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 '/'.

VlastnostPopisHodnotaPovinná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.