如何在站点无限CMS中创建站点地图
本文关键字:站点 创建 地图 CMS 无限 | 更新日期: 2023-09-27 18:32:13
请给我示例或链接如何在Sitefinity中创建站点地图。
以下是我在Sitefinity 6.1中生成站点地图内容(页面,内置和动态)的方式。
请注意,"在为内容项配置默认页面之前,必须配置规范 URL 服务。
-
页面
ISite currentSite = ((MultisiteContext) SystemManager.CurrentContext).CurrentSite; using (var manager = PageManager.GetManager()) { var nodes = manager.GetPageNodes().Where(p => p.RootNodeId == currentSite.SiteMapRootNodeId && p.NodeType == Telerik.Sitefinity.Pages.Model.NodeType.Standard && p.ShowInNavigation); foreach (var node in nodes) { if (!node.Page.IsBackend && node.Page.Status == ContentLifecycleStatus.Live && node.Page.Visible) { string host = getPageHost(serverPort, serverName, node.Page.RequireSsl); var url = string.Concat(host, VirtualPathUtility.ToAbsolute(node.GetFullUrl())); // Then append to sitemap } } }
-
内置内容类型 - 新闻示例
using (var manager = NewsManager.GetManager()) { var newsItems = manager.GetNewsItems().Where(p => p.Status == ContentLifecycleStatus.Live && p.Visible).ToList(); // append items foreach (var item in newItems) { var location = SystemManager.GetContentLocationService().GetItemDefaultLocation(item); if (location != null) { var fullUrl = location.ItemAbsoluteUrl; // Then append to sitemap (if page is live/visible/frontend) } } }
-
动态内容类型
ISite currentSite = ((MultisiteContext) SystemManager.CurrentContext).CurrentSite; var providers = currentSite.GetProviders("YourModuleName").Select(p => p.ProviderName).ToList(); foreach (string provider in providers) { var dynamicType = TypeResolutionService.ResolveType("Fully.Qualified.Name.Of.Your.Dynamic.Type"); if (dynamicType != null) { using (var manager = DynamicModuleManager.GetManager(providerName)) { var dynamicTypeItems = manager.GetDataItems(dynamicType).Where(p => p.Status == ContentLifecycleStatus.Live && p.Visible).ToList(); foreach (var item in dynamicTypeItems) { var location = SystemManager.GetContentLocationService().GetItemDefaultLocation(item); if (location != null) { var fullUrl = location.ItemAbsoluteUrl; // Then append to sitemap (if page is live/visible/frontend) } } } } }
您可以在此处使用站点地图生成器(免费): http://enterprisefinity.com/products/sitefinity-sitemap-generator/
但是您还应该熟悉在Sitefinity中创建通用站点地图生成器的一些挑战。 每条内容都没有设置的页面,这取决于您网站中小部件的配置。 因此,很难构建一个解决方案来理解(例如)来自foo部门的新闻去这里,来自酒吧部门的新闻去那里 - Sitefinity只知道它都是新闻内容。
看看这里,更好地了解站点地图生成器背后的代码:http://www.sitefinity.com/blogs/joshmorales/posts/11-12-22/new_sitefinity_4_4_sdk_sample_sitemap_module.aspx