提供 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 >