public ICollection <SitemapItemRecord> GetSitemapItemRecords(Store store, SitemapItemOptions options, string urlTemplate, string baseUrl, IEntity entity = null)
        {
            var auditableEntity = entity as AuditableEntity;

            var result = new SitemapItemRecord
            {
                ModifiedDate    = auditableEntity != null ? auditableEntity.ModifiedDate.Value : DateTime.UtcNow,
                Priority        = options.Priority,
                UpdateFrequency = options.UpdateFrequency,
                Url             = UrlBuilder.BuildStoreUrl(store, store.DefaultLanguage, urlTemplate, baseUrl, entity)
            };

            if (entity is ISeoSupport seoSupport)
            {
                foreach (var seoInfo in seoSupport.SeoInfos.Where(x => x.IsActive))
                {
                    if (store.Languages.Contains(seoInfo.LanguageCode) && !store.DefaultLanguage.EqualsInvariant(seoInfo.LanguageCode))
                    {
                        var alternate = new SitemapItemAlternateLinkRecord
                        {
                            Language = seoInfo.LanguageCode,
                            Type     = "alternate",
                            Url      = UrlBuilder.BuildStoreUrl(store, seoInfo.LanguageCode, urlTemplate, baseUrl, entity)
                        };
                        result.Alternates.Add(alternate);
                    }
                }
            }
            return(new[] { result }.ToList());
        }
예제 #2
0
        public virtual SitemapItemXmlRecord ToXmlModel(SitemapItemRecord coreModel)
        {
            if (coreModel == null)
            {
                throw new ArgumentNullException(nameof(coreModel));
            }

            //ModifiedDate = coreModel.ModifiedDate.ToString("yyyy-MM-dd");
            Priority        = coreModel.Priority;
            UpdateFrequency = coreModel.UpdateFrequency;
            Url             = coreModel.Url;
            Alternates      = coreModel.Alternates.Count > 0 ? coreModel.Alternates.Select(a => (new SitemapItemAlternateLinkXmlRecord()).ToXmlModel(a)).ToList() : null;

            return(this);
        }