Mapping Url en OpenCms8
De OpenCmsWiki
Configuración de una página de detalle
Una de las novedades de esta versión es el cambio en la estructura de nuestros sites. Ahora se ha creado el concepto de repositorio de contenido, que no es más que una carpeta (por defecto llamada .content) donde se almacenan los contenidos que luego se usarán en nuestro portal. Lo normal es que cada tipo de contenido se aloje en una carpeta distinta.
Por lo tanto, ahora, cuando nosotros queremos pintar una página no llamamos directamente a nuestro contenido, sino que llamamos a un tipo de recurso especial (containerpage) que es quien selecciona los contenidos a mostrar y la posición de los mismos.
En este caso el crear un friendly url es fácil ya que solo tenemos que llamar a nuestra carpeta o recurso containerpage con nuestras keywords, pero en el caso de los listados de contenido con página de detalle la cosa cambia. En este caso no tenemos que crear un containerpage por recurso creado ya que esto sería un proceso muy lento. Para estos casos se crean las páginas con detalle donde indicamos que tipo de contenido es el que se está listando. Para crear esta página de detalle nos vamos al recurso de configuración del site actual y en la pestaña "Detail Pages" indicamos el nombre del recurso y la sección en el que queremos crear la página de detalle:
Una vez creada la página de detalle y el listado (ya sea con el módulo de alkacon o con uno propio), los enlaces que se generan son:
http://ip:puerto/opencms/opencms/ruta/carpeta/listado/UUID-del-recurso/
Ejemplo real:
http://saga.no-ip.biz:9090/opencms802/opencms/nav/listado-de-articulos/23358850-d7b8-11e0-bb06-df35d037adba/
XSD: Configuración del mapeo
Esta ruta mostrará como detalle el contenido del recurso con el uuid correspondiente. El problema viene por la url generada ya que una de las buenas prácticas para posicionar correctamente nuestros sitios es utilizar en la url las palabras claves del contenido para mejorar el posicionamiento. Para poder corregir este problema, en opencms8 disponemos del mapping url con el que podremos hacer que en lugar del UUID aparezca el título del contenido que se va a mostrar. Para ello lo primero que debemos hacer es configurar en el XSD del recurso el mapeo que vamos a realizar, lo normal es mapear el Title o las Keywords. Este mapeo se indica en el bloque de mapping del XSD de la siguiente forma:
<mappings> ... <mapping element="Title" mapto="urlName"/> ... </mappings>
El resultado de aplicar este mapeo sería:
http://saga.no-ip.biz:9090/opencms802/opencms/nav/listado-de-articulos/Titulo-del-contenido/
Hay que tener en cuenta que el mapeo se realiza al editar (en offline) y al publicar (en online).
NOTA: Al crear el recurso no se realiza este mapeo, para poder ver como cambia la url tenemos que, una vez creado el recurso, darle a editar y volver a guardar para que se actualice la tabla correctamente.
Modelo de datos
En el modelo de datos de OpenCms 8 se ha creado 2 tablas para almacenar la información del mapeo: cms_offline_urlname_mappings y cms_online_urlname_mappings. En ambos casos la estructura de la tabla es la misma:
- NAME
- STRUCTURE_ID
- STATE
- DATE_CHANGED
- LOCALE
Al editar el mapeo de la url se guardará en la tabla de offline y al publicar se actualizará la tabla online.
