如何在站点无限CMS中创建站点地图

本文关键字:站点 创建 地图 CMS 无限 | 更新日期: 2023-09-27 18:32:13

请给我示例或链接如何在Sitefinity中创建站点地图。

如何在站点无限CMS中创建站点地图

以下是我在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