Habilitación de la información de título y meta descripción de SEO para la migración

Al migrar una tienda existente para utilizar la característica de optimización del motor de búsqueda, los datos de título y meta descripción para las páginas de la tienda deben rellenarse.

Antes de empezar

Asegúrese de que la tienda utiliza la búsqueda con la opción de navegación basada en búsqueda habilitada en la herramienta Gestión de tiendas en .

Procedimiento

  1. Cargue las plantillas de descripciones de título y metadescripción (TMD) para las páginas de la tienda.
    1. Para cada tienda de , ejecute las siguientes sentencias SQL. Estas sentencias añaden nuevos tipos de página a la tabla para que pueda identificar qué plantillas de título y meta descripción se pueden utilizar para páginas específicas:
      insert into seopagedef (seopagedef_id, pagename, storeent_id, lastupdate, createdtime) 
      values (100, 'HOME_PAGE', 12201, '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedef (seopagedef_id, pagename, storeent_id, lastupdate, createdtime) 
      values (101, 'HELP_PAGE', 12201, '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedef (seopagedef_id, pagename, storeent_id, lastupdate, createdtime) 
      values (102, 'PRIVACY_PAGE', 12201, '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedef (seopagedef_id, pagename, storeent_id, lastupdate, createdtime) 
      values (103, 'SITEMAP_PAGE', 12201, '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedef (seopagedef_id, pagename, storeent_id, lastupdate, createdtime) 
      values (104, 'CATEGORY_PAGE', 12201, '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedef (seopagedef_id, pagename, storeent_id, lastupdate, createdtime) 
      values (105, 'PRODUCT_PAGE', 12201, '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedefovr (seopagedefovr_id, seopagedef_id, objecttype, object_id, apply_to_child) 
      values (200, 104, 'CatalogGroup', '0', 1);
      
      insert into seopagedefovr (seopagedefovr_id, seopagedef_id, objecttype, object_id, apply_to_child) 
      values (201, 105, 'CatalogEntry', '0', 1);
      Donde:
      • seopagedef_id es cualquier número que todavía no esté en la tabla y hace referencia a la tabla para la plantilla real
      • pagenamees el tipo de página de tienda. Por ejemplo, HELP_PAGE, PRIVACY_PAGE, Página de mapa del sitio, Página de categorías y PRODUCT_PAGE.
      • lastupdate y createdtime es cualquier indicación de fecha y hora
    2. Para cada idioma que la tienda utiliza, emita las siguientes sentencias de SQL para insertar las plantillas de título y meta descripción en la tabla . Las plantillas almacenan cómo se van a crear el título y la meta descripción para los diversos tipos de página (por ejemplo, las páginas de Producto, Categoría y Contáctenos) en la tienda.
      insert into seopagedefdesc (seopagedef_id, language_id, title, meta_desc, meta_keyword, image_alt_desc, lastupdate, createdtime) 
      values (100, -1, 'Welcome to <seo: StoreName/>', 'Shop <seo: StoreName/> online.<seo: StoreDescription/>', '<seo: StoreName/> <seo: StoreDescription/>', 
      	'Image for <seo: StoreName/> homepage', '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedefdesc (seopagedef_id, language_id, title, meta_desc, meta_keyword, image_alt_desc, lastupdate, createdtime) 
      values (101, -1, 'Help and Contact Us at <seo: StoreName/>', 'Help Contact Us <seo: StoreName/>', 'Help Contact Us <seo: StoreName/>', 
      	'Image for <seo: StoreName/> Help and Contact Us', '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedefdesc (seopagedef_id, language_id, title, meta_desc, meta_keyword, image_alt_desc, lastupdate, createdtime) 
      values (102, -1, 'Website Privacy Policy for <seo: StoreName/>', 'Website Privacy Policy for <seo: StoreName/>', 'Website Privacy Policy <seo: StoreName/>', 
      	'Image for <seo: StoreName/> Site Map', '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedefdesc (seopagedef_id, language_id, title, meta_desc, meta_keyword, image_alt_desc, lastupdate, createdtime) 
      values (103, -1, 'Site Map for <seo: StoreName/>', 'Site Map for <seo: StoreName/>', 'ite Map <seo: StoreName/>', 'Image for <seo: StoreName/> Site Map', 
      	'2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedefdesc (seopagedef_id, language_id, title, meta_desc, meta_keyword, image_alt_desc, lastupdate, createdtime) 
      values (104, -1, '<seo: CategoryName/> | <seo: StoreName/>', '<seo: CategoryShortDescription/>', '<seo: CategoryKeyword/>', 
      	'Image for <seo: CategoryName/> from <seo: StoreName/>', '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      
      insert into seopagedefdesc (seopagedef_id, language_id, title, meta_desc, meta_keyword, image_alt_desc, lastupdate, createdtime) 
      values (105, -1, '<seo: ProductName/> | <seo: StoreName/>', '<seo: ProductShortDescription/>', '<seo: ProductKeyword/> <seo: ProductManufacturerName/>', 
      	'Image for <seo: ProductName/> from <seo: StoreName/>', '2010-01-01 00:00:00.00', '2010-01-01 00:00:00.00');
      Donde:
      seopagedef_id
      Hace referencia a la definición de página que está definida en la tabla
      id_idioma
      El idioma de la tienda para la que el SQL crea plantillas.
      título, meta_desc, meta_keyword, image_alt_desc
      Plantillas de título y meta descripción predeterminadas. Estas plantillas pueden cambiarse libremente.
      Nota: Los parámetros de sustitución de las plantillas como <seo: StoreName/> representan el nombre de la tienda que se debe sustituir cuando se recupera la plantilla. Para obtener más información, consulte Parámetros de sustitución de la Optimización del motor de búsqueda (SEO).
  2. Modifique las páginas JSP de página estática (como Inicio, Ayuda y Privacidad) para utilizar los datos de título y meta descripción.
    1. Llamada de servicio:
      
      <wcf:getData type="com.ibm.commerce.infrastructure.facade.datatypes.OnlineStoreType"
      		var="onlineStoreSEO" 
      		expressionBuilder="findSEOPageDefintionByPageNameAndStoreID">
      		<wcf:contextData name="storeId" data="${WCParam.storeId}"/>
      		<wcf:param name="storeId" value="${WCParam.storeId}"/>
      		<wcf:param name="dataLanguageIds" value="${WCParam.langId}"/>
      		<wcf:param name="pageName" value="HOME_PAGE"/>
      		<wcf:param name="accessProfile" value="IBM_Store_SEOPageDefinition_Details"/>
      </wcf:getData>
      Nota: El pageName hace referencia a la columna PAGENAME de la tabla . Especifique el PAGENAME que es necesario para la JSP específica.
    2. Visualización de datos:
      
      <title><c:out value="${onlineStoreSEO.SEOPageDefinitions[0].title}"/></title>
      <meta name="description" content="<c:out value="${onlineStoreSEO.SEOPageDefinitions[0].metaDescription}"/>"/>
      <meta name="keyword" content="<c:out value="${onlineStoreSEO.SEOPageDefinitions[0].metaKeyword}"/>"/>
  3. Modifique la JSP de categoría para utilizar los datos de título y metadescripción:
    1. Llamada de servicio:
      <wcf:getData type="com.ibm.commerce.catalog.facade.datatypes.CatalogNavigationViewType" var="catGroupDetailsView" 
      	expressionBuilder="getCatalogNavigationCatalogGroupView">
      		<wcf:param name="UniqueID" value="${catUniqueId}"/>
      		<wcf:contextData name="storeId" data="${WCParam.storeId}" />
      		<wcf:contextData name="catalogId" data="${WCParam.catalogId}" />
      		<wcf:param name="searchProfile" value="IBM_findCatalogGroupDetails"/>
      	</wcf:getData>
    2. Visualización de datos:
      <title><c:out value="${catGroupDetailsView.catalogGroupView[0].title}"/></title>
      	<meta name="description" content="<c:out value="${catGroupDetailsView.catalogGroupView[0].metaDescription}"/>"/>
      	<c:set var="fullImageAltDescription" value="${catGroupDetailsView.catalogGroupView[0].fullImageAltDescription}" scope="request" />
  4. Modifique el JSP del producto para utilizar los datos de título y metadescripción:
    1. Llamada de servicio:
      <wcf:getData type="com.ibm.commerce.catalog.facade.datatypes.CatalogNavigationViewType" var="catalogNavigationView" 
      	expressionBuilder="getCatalogNavigationCatalogEntryView">
      		<wcf:param name="UniqueID" value="${productId}"/>
      		<wcf:param name="searchProfile" value="IBM_findCatalogEntrySummary"/> 
      		<wcf:contextData name="storeId" data="${WCParam.storeId}" />
      		<wcf:contextData name="catalogId" data="${WCParam.catalogId}" />
      	</wcf:getData>
    2. Visualización de datos:
      <title><c:out value="${catalogNavigationView.catalogEntryView[0].title}"/></title>
      	<meta name="description" content="<c:out value="${catalogNavigationView.catalogEntryView[0].metaDescription}"/>"/>
      	<c:set var="fullImageAltDescription" value="${catalogNavigationView.catalogEntryView[0].fullImageAltDescription}" scope="request" />
  5. Modifique el archivo get-data-config.xml para incluir los creadores de expresiones necesarios.
    1. Vaya al directorio /Stores/WebContent/WEB-INF/config/com.ibm.commerce.catalog-fep.
    2. Abra el archivo get-data-config.xml.
    3. Antes de la etiqueta de finalización <wcf:get-data-config>, pegue el código siguiente:
      <expression-builder>
      	<name>getCatalogNavigationCatalogGroupView</name>
      	<data-type-name>CatalogNavigationView</data-type-name>
      	<class>com.ibm.commerce.foundation.internal.client.taglib.util.UniqueIDs
      		ExpressionBuilder</class>
      	<method>formatExpression</method>
      	<param>
      		<name>template</name>
      		<value>/CatalogNavigationView[CatalogGroupView[(UniqueID=)]]</value>
      	</param>
      	<param>
      		<name>accessProfile</name>
      		<value>IBM_Store_Summary</value>
      	</param>
      	<param>
      		<name>searchProfile</name>
      		<value>IBM_findCatalogGroupSummary</value>
      	</param>
      </expression-builder>
      
      <expression-builder>
      	<name>getCatalogNavigationCatalogEntryView</name>
      	<data-type-name>CatalogNavigationView</data-type-name>
      	<class>com.ibm.commerce.foundation.internal.client.taglib.util.UniqueIDs
      		ExpressionBuilder</class>
      	<method>formatExpression</method>
      	<param>
      		<name>template</name>
      		<value>/CatalogNavigationView[CatalogEntryView[(UniqueID=)]]</value>
      	</param>
      	<param>
      		<name>accessProfile</name>
      		<value>IBM_Store_CatalogEntrySearch</value>
      	</param>
      	<param>
      		<name>searchProfile</name>
      		<value>IBM_findCatalogEntrySummary</value>
      	</param>
      </expression-builder>