コード例 #1
0
        public void Process(SitemapItemLinkArgs args)
        {
            Assert.ArgumentNotNull(args, nameof(args));

            using (new SiteContextSwitcher(args.CustomItem.SiteContext))
                using (new LanguageSwitcher(args.CustomItem.Item.Language))
                {
                    var urlOptions = LinkManager.GetDefaultUrlOptions();

                    urlOptions.AlwaysIncludeServerUrl = true;

                    args.Link = LinkManager.GetItemUrl(args.CustomItem.Item, urlOptions);
                }
        }
コード例 #2
0
        private static List <Link> BuildAlternates(IEnumerable <SitemapItem> alternates, SitemapSiteArgs sitemapSiteArgs)
        {
            var links = new List <Link>();

            foreach (var alternate in alternates)
            {
                var sitemapItemLinkArgs = new SitemapItemLinkArgs(alternate);

                CorePipeline.Run("sitemap.GetItemLink", sitemapItemLinkArgs);

                if (string.IsNullOrWhiteSpace(sitemapItemLinkArgs.Link))
                {
                    Logger.Warn(
                        $"Unable to determine link for item: {alternate.Item.Paths.Path} and site: {sitemapSiteArgs.SiteContext.Name}");
                    continue;
                }

                var customLang = sitemapSiteArgs.SitemapLanguages.FirstOrDefault(i =>
                                                                                 string.Equals(i.Language.Name, alternate.Item.Language.Name,
                                                                                               StringComparison.InvariantCultureIgnoreCase));

                if (customLang == null)
                {
                    Logger.Warn(
                        $"Unable to find CustomLanguage for item: {alternate.Item.Paths.Path}, language: {alternate.Item.Language.Name}, site: {sitemapSiteArgs.SiteContext.Name}");
                    continue;
                }

                links.Add(new Link()
                {
                    Href     = sitemapItemLinkArgs.Link,
                    Hreflang = customLang.HrefLang,
                    Rel      = "alternate",
                    Item     = alternate.Item
                });
            }

            return(links);
        }