提供 ASP.NET HttpHandler 来协助生成动态 sitemap.xml 文件
Sitemapify 还有一个 Umbraco 特定扩展,支持从 Umbraco CMS 内容构建站点地图。请参阅 Sitemapify.Umbraco 了解更多文档
Install-Package Sitemapify
安装过程应该更新您的 web.config 文件以包含一个 httphandler 来处理对sitemap.xml
的请求,它应该类似于:
< configuration > < system .webServer> < handlers > < add name = " Sitemapify " path = " sitemap.xml " verb = " GET " type = " Sitemapify.SitemapifyHttpHandler, Sitemapify " /> handlers > system .webServer> configuration >
可以通过Sitemapify.Configure
静态配置类更改基本配置来自定义站点地图处理程序。
Sitemapify . Configure ( c => c
. UsingContentProvider ( new YourContentProvider ( ) )
. UsingCacheProvider ( new YourCacheProvider ( ) )
. UsingDocumentBuilder ( new YourDocumentBuilder ( ) )
) ;
Sitemapify 分为负责站点地图生成元素的提供者。
ISitemapifyContentProvider
)内容提供程序的实现为 Sitemapify 提供SitemapUrl
对象的集合,这些对象表示要在站点地图内输出的节点。
public interface ISitemapContentProvider
{
IEnumerable < SitemapUrl > GetSitemapUrls ( ) ;
bool Cacheable { get ; }
DateTime CacheUntil { get ; }
}
ISitemapifyCacheProvider
)缓存提供程序的实现允许自定义用于优化站点地图到浏览器的传递的缓存机制。生成站点地图文档后,它将通过该接口的配置实现进行缓存。
public interface ISitemapCacheProvider
{
void Add ( XDocument sitemapContent , DateTimeOffset ? expires ) ;
bool IsCached { get ; }
XDocument Get ( ) ;
void Remove ( ) ;
}
ISitemapDocumentBuilder
) ISitemapDocumentBuilder
提供的实现允许完全自定义站点地图文档本身。默认实现基于官方 sitemap.xsd 生成完全兼容的站点地图文档。
public interface ISitemapDocumentBuilder
{
XDocument BuildSitemapXmlDocument ( IEnumerable < SitemapUrl > sitemapUrls ) ;
}
此版本的 Sitemapify.Umbraco 支持 Umbraco 8.1+。有关 Umbraco v7.* 支持,请参阅版本 0.5.2。
首先安装 Umbraco 扩展:
Install-Package Sitemapify.Umbraco
安装 Sitemapify.Umbraco 后,您可以创建一个组件来配置 Sitemapify,以使用可用的“Umbraco 内容提供程序”来生成形成 sitemap.xml 的站点地图 url。
public class SitemapifyComponent : IComponent
{
public void Initialize ( )
{
Configure . With ( config => config . UsingContentProvider ( new SitemapifyUmbracoContentProvider ( ) ) ) ;
}
public void Terminate ( ) { }
}
您还需要创建一个 UserComposer 来注册组件。
public class SitemapifyComposer : IUserComposer
{
public void Compose ( Composition composition )
{
composition . Components ( ) . Append < SitemapifyComponent > ( ) ;
}
}
默认情况下,Umbraco 内容提供程序将查找具有特定名称的内容节点属性,以确定特定节点是否应包含在生成的站点地图文件中,这些属性名称是:
umbracoNaviHide
- True/False 确定是否包含此节点(默认值:false)sitemapifyExcludeChildren
- True/False 确定是否忽略该节点下面的所有子节点(默认值:false)如果您想更改这些属性别名,您可以通过应用程序设置覆盖它们:
< appSettings > < add key = " Sitemapify.Umbraco:ExcludedFromSitemapPropertyAlias " value = " newPropertyAlias " /> < add key = " Sitemapify.Umbraco:ExcludedChildrenFromSitemapPropertyAlias " value = " anotherPropertyAlias " /> appSettings >