동적 sitemap.xml 파일 생성을 지원하기 위해 ASP.NET HttpHandler를 제공합니다.
Umbraco CMS 콘텐츠에서 사이트맵 구축을 지원하는 Sitemapify에 대한 Umbraco 전용 확장도 있습니다. 추가 문서는 Sitemapify.Umbraco를 참조하세요.
Install-Package Sitemapify
설치 프로세스에서는 sitemap.xml
에 대한 요청을 처리하기 위한 httphandler를 포함하도록 web.config 파일을 업데이트해야 하며 다음과 유사해야 합니다.
< 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
) 콘텐츠 제공자의 구현은 사이트맵 내에서 출력할 노드를 나타내는 SitemapUrl
개체 컬렉션을 Sitemapify에 제공합니다.
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를 설치한 후에는 사용 가능한 "Umbraco 콘텐츠 제공자"를 사용하여 sitemap.xml을 구성하는 사이트맵 URL을 생성하도록 Sitemapify를 구성하는 구성 요소를 생성할 수 있습니다.
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 >