2012-04-25 6 views

ответ

2

Вы можете использовать Sitemap Generator здесь (бесплатно): 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

+0

благодаря Craig O. Я начинаю учиться sitefinty. – cathrine

+0

Есть на самом деле много примеров в SDK (связанный в сообщении от Craig), чтобы помочь вам научиться развиваться с помощью sitefinity. если вы нажмете какие-либо помехи, не забудьте опубликовать их на форумах sitefinity или открыть билет поддержки. надеюсь, это полезно! – SelAromDotNet

4

Вот как я генерации содержимого карты сайта (страницы, встроенные и динамические) в Sitefinity 6.1.

Пожалуйста, обратите внимание, что "Before you configure default pages for content items, you must configure canonical URLs service."

  • Страницы

    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)      
           } 
          } 
         } 
        } 
    } 
    
Смежные вопросы