Introduced in Feature Pack 3

Defining the new SEO-friendly URL patterns for recipe pages

Introduced in Feature Pack 3 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

  1. Navigate to Stores > WebContent > WEB-INF > xml > seo > stores > storedir
  2. Right-click the storedir folder and select New > File.
  3. Name the file SEOURLPatterns-ext.xml and click finish.
  4. 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>