ATG - SEO In ATG

Post on 26-Dec-2015

73 views 9 download

description

ATG - SEO In ATG

transcript

SEO in ATG

Agenda

SEO Repository: SEO Tags

Sitemaps SEF URLs

SEO REPOSITORY

DEMO

DEMO

Rendering SEO Tags on Pages

<dsp:droplet name="/atg/dynamo/droplet/RQLQueryRange"> <dsp:param name="repository" value="/atg/seo/SEORepository" /> <dsp:param name="itemDescriptor" value="SEOTags" /> <dsp:param name="howMany" value="1" /> <dsp:param name="mykey" value="featured" /> <dsp:param name="queryRQL" value="key = :mykey" /> <dsp:oparam name="output">

<title><dsp:valueof param="element.title"/></title> <dsp:getvalueof var="description" param="element.description"/> <dsp:getvalueof var="keywords" param="element.keywords"/> <meta name="description" content="${description}" /> <meta name="keywords" content="${keywords}"/>

</dsp:output></dsp:droplet>

Rendering SEO Tags on Pages

<dsp:droplet name="/atg/dynamo/droplet/RQLQueryRange"> <dsp:param name="repository" value="/atg/seo/SEORepository" /> <dsp:param name="itemDescriptor" value="SEOTags" /> <dsp:param name="howMany" value="1" /> <dsp:param name="pageURL" bean="/OriginatingRequest.servletPath" /> <dsp:param name="queryRQL" value="key = :pageURL" /> ...</dsp:droplet>

SITE MAP

Siteindex.xml

Steps of creating site maps

SitemapGeneratorService creates sitemaps stores in SitemapRepository

SitemapWriterService writes out the actual XML files

Ways to invoke sitegeneration

run automatically

run automatically after a CA deployment

invoking them manually

SitemapGeneratorService

SitemapGeneratorService

$class=atg.sitemap.SitemapGeneratorService$scope=global

schedule=calendar * * . . 1 .scheduler=/atg/dynamo/service/SchedulerclientLockManager=/atg/dynamo/service/ClientLockManagerlockName=SitemapGeneratorService

sitemapGenerators=\ /atg/sitemap/ProductSitemapGenerator,\ /atg/sitemap/CategorySitemapGenerator,\ /atg/sitemap/StaticSitemapGeneratorsitemapIndexGenerator=/atg/sitemap/SitemapIndexGenerator

sitemapRepository=/atg/sitemap/SitemapRepositorysitemapPropertiesManager=/atg/sitemap/SitemapPropertiesManagersitemapTools=/atg/sitemap/SitemapTools

maxUrlsPerSitemap=10000maxSitemapSize=5000000

SitemapGeneratorService

ProductSitemapGenerator

# /atg/sitemap/ProductSitemapGenerator.properties$class=atg.commerce.sitemap.CatalogSitemapGenerator

sitemapFilePrefix=productSitemapchangeFrequency=weekly# Type of repository item to retrieve itemDescriptorName=product

CategorySitemapGenerator

#/atg/sitemap/CategorySitemapGenerator.properties$class=atg.commerce.sitemap.CatalogSitemapGeneratorchangeFrequency=weeklysitemapFilePrefix=categorySitemap# Type of repository item to retrieve itemDescriptorName=category

StaticSitemapGenerator

# atg/sitemap/StaticSitemapGenerator.properties$class=atg.sitemap.StaticSitemapGeneratorsitemapFilePrefix=staticSitemap# List of static pagesstaticPages=index.jsp,\ browse/whatsNew.jsp,\ browse/asSeenIn.jsp,\ browse/featureGlossary.jsp

SitemapWriterService

# /atg/sitemap/SitemapWriterService.properties$class=atg.sitemap.SitemapWriterService$scope=global

# The directory where an application's war is locatedwarDir^=/atg/sitemap/SitemapGeneratorService.warDir

SEF URLS

SEF URLs

/mystore/product.jsp?prodId=prod1002&catId=cat234

/mystore/Q33+UltraMountain/Mountain+Bikes

URL Generating

Item

LinkTemplate

MapperDirect

TemplateSEF URL

Maps item to template

Droplet with element id as

parameterURL converter

CatalogItemLink

<dsp:droplet name="CatalogItemLink"> <dsp:param name="item" param="childCategory"/> <dsp:oparam name="output"> <%-- Create link for subcategory --%> <dsp:a page="${url}"> <dsp:valueof param="childCategory.displayName"/> </dsp:a> </dsp:oparam> </dsp:droplet>

CatalogItemLink

# /atg/repository/seo/CatalogItemLink.properties$class=atg.repository.seo.ItemLink

# Map of UrlTemplateMapper components by item descriptor name for this dropletitemDescriptorNameToMapperMap=\ product=/atg/repository/seo/ProductTemplateMapper,\ category=/atg/repository/seo/CategoryTemplateMapper

# Default parameter valuesdefaultRepository=/atg/commerce/catalog/ProductCatalogdefaultItemDescriptorName=product

CategoryTemplateMapper

#/atg/repository/seo/CategoryTemplateMapper.properties$class=atg.repository.seo.UrlTemplateMapperImpl

# List of UrlTemplate component namestemplates=\ /atg/repository/seo/CategoryIndirectTemplate

# Default template to use if no match in list abovedefaultTemplate=/atg/repository/seo/CategoryDirectTemplate

CategoryDirectTemplate

#/atg/repository/seo/CategoryDirectTemplate.properties$class=atg.repository.seo.DirectUrlTemplate

# Url template formaturlTemplateFormat={item.template.url,encode=false}?categoryId\={item.id}

URLTemplate

URL parsing

JumpServlet Template ATG URL

JumpServlet

<servlet> <servlet-name>MappedJumpServlet</servlet-name> <servlet-class>atg.repository.seo.MappedJumpServlet</servlet-class> <init-param> <param-name>jumpServlet</param-name> <param-value>ctx:dynamo:/atg/repository/seo/JumpServlet</param-value> </init-param></servlet><servlet-mapping> <servlet-name>MappedJumpServlet</servlet-name> <url-pattern>/jump/*</url-pattern></servlet-mapping>

Thanks!