Defining the new SEO-friendly URL patterns for recipe pages
In this lesson, you define SEO URL patterns for each
Recipe page view that is associated with the Recipe
tutorial.These patterns define how to create
SEO friendly URLs from dynamic parameters and how to construct a dynamic
URL from the SEO friendly URL.
Procedure
- Navigate to Stores > WebContent > WEB-INF > xml > seo > stores > storedir
- Right-click the storedir folder and select New > File.
- Name the file SEOURLPatterns-ext.xml and click finish.
- Define the SEO URL patterns for the recipe tool components.
Copy and paste the following code into SEOURLPatterns-ext.xml:
<?xml version="1.0" encoding="UTF-8"?> <seourl:seoUrlConfiguration xmlns:seourl="http://www.ibm.com/xmlns/prod/commerce/foundation/SEO/URLPattern" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/SEO/URLPattern wc-seo-url-pattern.xsd"> <!-- Recipe Section URL like this: http://localhost/shop/en/storedir/Recipe replacement for RecipeSection --> <!-- http://localhost/shop/en/storedir/Recipe --> <seourl:seoUrlPatternDef name="RecipeSectionDisplay"> <seourl:seoUrlPattern viewName="RecipeSection">/LanguageToken/StoreToken:CatalogToken/RecipeSectionToken </seourl:seoUrlPattern> <seourl:urlToParamMapping> <seourl:mapping name="langId" value="?LanguageToken?"/> <seourl:mapping name="storeId" value="?StoreToken?"/> <seourl:mapping name="catalogId" value="?CatalogToken?"/> <seourl:mapping name="isRecipeSection" value="true"/> </seourl:urlToParamMapping> <seourl:paramToUrlMapping> <seourl:mapping name="LanguageToken" value="?langId?"/> <seourl:mapping name="StoreToken" value="?storeId?"/> <seourl:mapping name="CatalogToken" value="?catalogId?"/> <seourl:mapping name="RecipeSectionToken" value="RecipeSectionToken"/> </seourl:paramToUrlMapping> <seourl:usageDef> <seourl:usage device="browser"> <seourl:target>RecipeSection</seourl:target> </seourl:usage> </seourl:usageDef> </seourl:seoUrlPatternDef> <!-- Recipe Collection URL like this: http://localhost/shop/en/storedir/Recipe/Western-Foods replacement for RecipeSection --> <!-- http://localhost/shop/en/storedir/Recipe/Western-Foods --> <seourl:seoUrlPatternDef name="RecipeCollectionDisplay"> <seourl:seoUrlPattern viewName="RecipeCollection"> /LanguageToken/StoreToken:CatalogToken/RecipeSectionToken/RecipeCollectionToken </seourl:seoUrlPattern> <seourl:urlToParamMapping> <seourl:mapping name="langId" value="?LanguageToken?"/> <seourl:mapping name="storeId" value="?StoreToken?"/> <seourl:mapping name="catalogId" value="?CatalogToken?"/> <seourl:mapping name="collection" value="?RecipeCollectionToken?"/> </seourl:urlToParamMapping> <seourl:paramToUrlMapping> <seourl:mapping name="LanguageToken" value="?langId?"/> <seourl:mapping name="StoreToken" value="?storeId?"/> <seourl:mapping name="CatalogToken" value="?catalogId?"/> <seourl:mapping name="RecipeSectionToken" value="RecipeSectionToken"/> <seourl:mapping name="RecipeCollectionToken" value="?collection?"/> </seourl:paramToUrlMapping> <seourl:usageDef> <seourl:usage device="browser"> <seourl:target>RecipeCollection</seourl:target> </seourl:usage> </seourl:usageDef> </seourl:seoUrlPatternDef> <!-- Recipe URL like this: http://localhost/shop/en/storedir/Recipe/Delicious-Foods/Blueberry-Muffins replacement for RecipeSection --> <!-- http://localhost/shop/en/storedir/Recipe/Western-Foods --> <seourl:seoUrlPatternDef name="RecipeDisplay"> <seourl:seoUrlPattern viewName="RecipeDisplay"> /LanguageToken/StoreToken:CatalogToken/RecipeSectionToken/RecipeCollectionToken/RecipeToken </seourl:seoUrlPattern> <seourl:urlToParamMapping> <seourl:mapping name="langId" value="?LanguageToken?"/> <seourl:mapping name="storeId" value="?StoreToken?"/> <seourl:mapping name="catalogId" value="?CatalogToken?"/> <seourl:mapping name="project" value="?RecipeToken?"/> <seourl:mapping name="collection" value="?RecipeCollectionToken?"/> </seourl:urlToParamMapping> <seourl:paramToUrlMapping> <seourl:mapping name="LanguageToken" value="?langId?"/> <seourl:mapping name="StoreToken" value="?storeId?"/> <seourl:mapping name="CatalogToken" value="?catalogId?"/> <seourl:mapping name="RecipeSectionToken" value="RecipeSectionToken"/> <seourl:mapping name="RecipeToken" value="?project?"/> <seourl:mapping name="RecipeCollectionToken" value="?collection?"/> </seourl:paramToUrlMapping> <seourl:usageDef> <seourl:usage device="browser"> <seourl:target>Recipe</seourl:target> </seourl:usage> </seourl:usageDef> </seourl:seoUrlPatternDef> <!-- Recipe URL like this: http://localhost/shop/en/storedir/Recipe/Penne-Pasta-Salad replacement for RecipeSection --> <!-- http://localhost/shop/en/storedir/Recipe/Western-Foods --> <seourl:seoUrlPatternDef name="RecipeDisplayNoAssociation"> <seourl:seoUrlPattern viewName="RecipeDisplay"> /LanguageToken/StoreToken:CatalogToken/RecipeSectionToken/RecipeToken </seourl:seoUrlPattern> <seourl:urlToParamMapping> <seourl:mapping name="langId" value="?LanguageToken?"/> <seourl:mapping name="storeId" value="?StoreToken?"/> <seourl:mapping name="catalogId" value="?CatalogToken?"/> <seourl:mapping name="project" value="?RecipeToken?"/> </seourl:urlToParamMapping> <seourl:paramToUrlMapping> <seourl:mapping name="LanguageToken" value="?langId?"/> <seourl:mapping name="StoreToken" value="?storeId?"/> <seourl:mapping name="CatalogToken" value="?catalogId?"/> <seourl:mapping name="RecipeSectionToken" value="RecipeSectionToken"/> <seourl:mapping name="RecipeToken" value="?project?"/> </seourl:paramToUrlMapping> <seourl:usageDef> <seourl:usage device="browser"> <seourl:target>Recipe</seourl:target> </seourl:usage> </seourl:usageDef> </seourl:seoUrlPatternDef> </seourl:seoUrlConfiguration>