Proporciona un HttpHandler ASP.NET para ayudar a generar un archivo sitemap.xml dinámico.
También hay una extensión específica de Umbraco para Sitemapify que admite la creación del mapa del sitio a partir del contenido de Umbraco CMS. Consulte Sitemapify.Umbraco para obtener más documentación.
Install-Package Sitemapify
El proceso de instalación debería haber actualizado su archivo web.config para incluir un httphandler para procesar solicitudes a sitemap.xml
, debería verse similar a:
< configuration > < system .webServer> < handlers > < add name = " Sitemapify " path = " sitemap.xml " verb = " GET " type = " Sitemapify.SitemapifyHttpHandler, Sitemapify " /> handlers > system .webServer> configuration >
El controlador del mapa del sitio se puede personalizar modificando la configuración base a través de la clase de configuración estática Sitemapify.Configure
.
Sitemapify . Configure ( c => c
. UsingContentProvider ( new YourContentProvider ( ) )
. UsingCacheProvider ( new YourCacheProvider ( ) )
. UsingDocumentBuilder ( new YourDocumentBuilder ( ) )
) ;
Sitemapify se divide en proveedores que son responsables de los elementos de la generación del mapa del sitio.
ISitemapifyContentProvider
) Una implementación de un proveedor de contenido proporciona a Sitemapify una colección de objetos SitemapUrl
que representan los nodos que se generarán dentro del mapa del sitio.
public interface ISitemapContentProvider
{
IEnumerable < SitemapUrl > GetSitemapUrls ( ) ;
bool Cacheable { get ; }
DateTime CacheUntil { get ; }
}
ISitemapifyCacheProvider
)Una implementación de un proveedor de caché permite la personalización del mecanismo de almacenamiento en caché utilizado para optimizar la entrega del mapa del sitio al navegador. Una vez que se genera el documento del mapa del sitio, se almacenará en caché a través de la implementación configurada de esta interfaz.
public interface ISitemapCacheProvider
{
void Add ( XDocument sitemapContent , DateTimeOffset ? expires ) ;
bool IsCached { get ; }
XDocument Get ( ) ;
void Remove ( ) ;
}
ISitemapDocumentBuilder
) Una implementación de ISitemapDocumentBuilder
proporciona una personalización completa del documento del mapa del sitio. La implementación predeterminada genera un documento de mapa del sitio totalmente compatible basado en el sitemap.xsd oficial.
public interface ISitemapDocumentBuilder
{
XDocument BuildSitemapXmlDocument ( IEnumerable < SitemapUrl > sitemapUrls ) ;
}
Esta versión de Sitemapify.Umbraco es compatible con Umbraco 8.1+. Para obtener compatibilidad con Umbraco v7.*, consulte la versión 0.5.2.
Primero instale la extensión Umbraco:
Install-Package Sitemapify.Umbraco
Una vez que haya instalado Sitemapify.Umbraco, puede crear un componente para configurar Sitemapify para utilizar el "Proveedor de contenido Umbraco" disponible para generar la URL del mapa del sitio que forma el sitemap.xml.
public class SitemapifyComponent : IComponent
{
public void Initialize ( )
{
Configure . With ( config => config . UsingContentProvider ( new SitemapifyUmbracoContentProvider ( ) ) ) ;
}
public void Terminate ( ) { }
}
También deberá crear un UserComposer para registrar el componente.
public class SitemapifyComposer : IUserComposer
{
public void Compose ( Composition composition )
{
composition . Components ( ) . Append < SitemapifyComponent > ( ) ;
}
}
De forma predeterminada, el proveedor de contenido de Umbraco buscará propiedades de nodos de contenido con nombres específicos para determinar si un nodo en particular debe incluirse en el archivo de mapa del sitio generado. Estos nombres de propiedades son:
umbracoNaviHide
: Verdadero/Falso para determinar si este nodo está incluido (valor predeterminado: falso)sitemapifyExcludeChildren
: Verdadero/Falso para determinar si se ignoran todos los nodos secundarios debajo de este nodo (predeterminado: falso)Si desea modificar estos alias de propiedad, puede anularlos a través de la configuración de la aplicación:
< appSettings > < add key = " Sitemapify.Umbraco:ExcludedFromSitemapPropertyAlias " value = " newPropertyAlias " /> < add key = " Sitemapify.Umbraco:ExcludedChildrenFromSitemapPropertyAlias " value = " anotherPropertyAlias " /> appSettings >