/// <summary>
        /// Génère le rendu du contrôle via le writer HTML spécifié.
        /// </summary>
        /// <param name="writer">Objet <see cref="T:System.Web.UI.HtmlTextWriter" /> qui reçoit le contenu du contrôle.</param>
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            ECommercePage pg = Page as ECommercePage;

            if (pg == null)
            {
                return;
            }

            string canon = pg.CanonicalUrl;


            if (!string.IsNullOrEmpty(canon))
            {
                var  cfg    = EConfigurationManager.GetConfig(ECommerceServer.CurrentSite);
                bool useAmp = cfg.ECommerce.UseAmpFramework;

#if DEBUG
                useAmp = true;
#endif
                string uPr = ECommerceServer.CurrentSite.UrlPrincipale;
                if (string.IsNullOrEmpty(uPr))
                {
                    return;
                }
                if (!uPr.EndsWith("/"))
                {
                    uPr += "/";
                }


                if (useAmp)
                {
                    string amp = canon;
                    if (canon.EndsWith("/"))
                    {
                        amp = amp + "default.amp";
                    }
                    else
                    {
                        amp = Path.ChangeExtension(amp, ".amp");
                    }
                    writer.Write("<link rel='amphtml' href='");
                    amp = amp.Replace("~/", uPr);
                    writer.Write(amp);
                    writer.Write("' />");
                }

                canon = canon.Replace("~/", uPr);
                writer.Write("<link rel='canonical' href='");
                writer.Write(canon);
                writer.Write("' />");
            }
        }
示例#2
0
        /// <summary>
        /// Effectue l'affichage du controle
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            if (_article == null)
            {
                return;
            }

            writer.Write("<script type='application/ld+json'>{ \"@context\": \"http://schema.org\", \"@type\": \"BreadcrumbList\",");
            writer.Write("\"itemListElement\": ");

            ECommercePage pg = Page as ECommercePage;
            List <ContexteBreadCrumbItem> cur   = ProductFilArianeCategories.GetContenuBreadCrumb(pg, _article);
            List <BreadCrumbItemJson>     items = new List <BreadCrumbItemJson>();

            var it = new BreadCrumbItemJson()
            {
                type     = "ListItem",
                position = items.Count + 1,
                item     = new Item()
                {
                    id   = ECommerceServer.CurrentSite.UrlPrincipale,
                    name = "Accueil"
                }
            };

            items.Add(it);

            foreach (var c in cur)
            {
                it = new BreadCrumbItemJson()
                {
                    type     = "ListItem",
                    position = items.Count + 1,
                    item     = new Item()
                    {
                        id   = ResolveUrl(c.Url),
                        name = c.Label
                    }
                };

                if (it.item.id.StartsWith("/"))
                {
                    it.item.id = ECommerceServer.CurrentSite.UrlPrincipale + it.item.id.Substring(1);
                }

                items.Add(it);
            }

            string s = CPointSoftware.Equihira.Business.Common.JsonHelper.Serialize(items);

            writer.Write(s);
            writer.Write("}</script>");
        }
示例#3
0
        internal static List <ContexteBreadCrumbItem> GetContenuBreadCrumb(ECommercePage pg, ArticlesDataSourceResult article)
        {
            List <ContexteBreadCrumbItem> cur = new List <ContexteBreadCrumbItem>();

            var rArt = article.Article.ecommerce_articles_web.FirstOrDefault();

            if (rArt == null)
            {
                return(cur);
            }

            if (!rArt.Isarw_seg_pk_principaleNull())
            {
                var segDS = ECommerceServer.DataCache.ToutesLesSegmentations;
                var seg   = segDS.catalog_segmentations.FindByseg_pk(rArt.arw_seg_pk_principale);
                while (true)
                {
                    if (seg == null)
                    {
                        break;
                    }
                    var url = ECommerceServer.Contexte.GetSearchPagePath(seg.seg_pk, Guid.Empty, -1, null, null, true);
                    cur.Insert(0, new ContexteBreadCrumbItem()
                    {
                        Url = url, Label = seg.seg_libelle
                    });
                    if (!seg.Isseg_parent_seg_pkNull())
                    {
                        seg = segDS.catalog_segmentations.FindByseg_pk(seg.seg_parent_seg_pk);
                        if (seg == null)
                        {
                            break;
                        }
                        if (ECommerceServer.CurrentSite.SegmentRacineId == seg.seg_pk)
                        {
                            break;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
            cur.Add(new ContexteBreadCrumbItem()
            {
                Url = pg.Request.RawUrl, Label = rArt.arw_libelle
            });
            return(cur);
        }
        /// <summary>
        /// Effectue l'affichage du contrôle
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            nbRendered = 0;

            writer.Write("<ul");
            if (!string.IsNullOrEmpty(CssClass))
            {
                writer.Write(" class='");
                writer.Write(CssClass);
                writer.Write("'");
            }
            if (Style != null && Style.Count > 0)
            {
                writer.Write(" style='");
                writer.Write(Style);
                writer.Write("'");
            }
            writer.Write(">");

            ECommercePage pg = Page as ECommercePage;

            ContexteBreadCrumbItem[] cur = new ContexteBreadCrumbItem[0];
            if (pg != null)
            {
                cur = pg.GetBreadCrumb();
            }
            if (cur.Length == 0 || (cur.Length == 1 && string.IsNullOrEmpty(cur[0].Label)))
            {
                if (UsePageTitleIfEmpty && pg != null && !string.IsNullOrEmpty(pg.PageName))
                {
                    if (!string.IsNullOrEmpty(Header))
                    {
                        RenderHeader(writer);
                    }
                    if (pg != null && pg.TypePage != ECommercePageType.HomePage)
                    {
                        RenderHomeLink(writer, true);
                    }
                    RenderNonClickable(writer, pg.PageName, null);
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(Header))
                {
                    RenderHeader(writer);
                }
                if (pg != null && pg.TypePage != ECommercePageType.HomePage)
                {
                    RenderHomeLink(writer, true);
                }

                for (int i = 0; i < (cur.Length - 1); i++)
                {
                    RenderBreadCrumb(writer, cur[i]);
                }

                if (cur.Length > 0)
                {
                    RenderNonClickable(writer, cur[cur.Length - 1].Label, cur[cur.Length - 1].Url);
                }
            }
            writer.Write("</ul>");
        }
        /// <summary>
        /// Effectue le rendu du controle
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            ECommercePage    pg  = Page as ECommercePage;
            ContexteProvider prv = ECommerceServer.Contexte;

            writer.Write("<script type='application/ld+json'>{ \"@context\": \"http://schema.org\", \"@type\": \"BreadcrumbList\",");
            writer.Write("\"itemListElement\": ");

            List <ContexteBreadCrumbItem> cur   = new List <ContexteBreadCrumbItem>(pg.GetBreadCrumb());
            List <BreadCrumbItemJson>     items = new List <BreadCrumbItemJson>();

            if (cur.Count == 1 && string.IsNullOrEmpty(cur[0].Label))
            {
                if (!string.IsNullOrEmpty(pg.PageName))
                {
                    var j = cur[0];
                    j.Url   = Page.Request.RawUrl;
                    j.Label = pg.PageName;
                }
            }
            else if (cur.Count == 0)
            {
                if (!string.IsNullOrEmpty(pg.PageName))
                {
                    var j = new ContexteBreadCrumbItem()
                    {
                        Url   = Page.Request.RawUrl,
                        Label = pg.PageName
                    };
                    cur.Add(j);
                }
            }
            var it = new BreadCrumbItemJson()
            {
                type     = "ListItem",
                position = items.Count + 1,
                item     = new Item()
                {
                    id   = ECommerceServer.CurrentSite.UrlPrincipale,
                    name = "Accueil",
                }
            };

            items.Add(it);

            foreach (var c in cur)
            {
                it = new BreadCrumbItemJson()
                {
                    type     = "ListItem",
                    position = items.Count + 1,
                    item     = new Item()
                    {
                        id   = ResolveUrl(c.Url),
                        name = c.Label
                    }
                };

                if (it.item.id.StartsWith("/"))
                {
                    it.item.id = ECommerceServer.CurrentSite.UrlPrincipale + it.item.id.Substring(1);
                }

                items.Add(it);
            }

            string s = CPointSoftware.Equihira.Business.Common.JsonHelper.Serialize(items);

            writer.Write(s);
            writer.Write("}</script>");
        }
示例#6
0
        /// <summary>
        /// Effectue le rendu du contrôle
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            if (_article == null)
            {
                return;
            }

            //ECommerceServer.Contexte.BreadCrumbItems

            ECommercePage pg = Page as ECommercePage;
            List <ContexteBreadCrumbItem> cur = GetContenuBreadCrumb(pg, _article);

            nbRendered = 0;

            writer.Write("<ul");
            if (!string.IsNullOrEmpty(CssClass))
            {
                writer.Write(" class='");
                writer.Write(CssClass);
                writer.Write("'");
            }
            if (Style != null && Style.Count > 0)
            {
                writer.Write(" style='");
                writer.Write(Style);
                writer.Write("'");
            }
            writer.Write(">");



            if (cur.Count == 0)
            {
                if (UsePageTitleIfEmpty && pg != null && !string.IsNullOrEmpty(pg.PageName))
                {
                    if (!string.IsNullOrEmpty(Header))
                    {
                        RenderHeader(writer);
                    }
                    if (pg != null && pg.TypePage != ECommercePageType.HomePage)
                    {
                        RenderHomeLink(writer, true);
                    }
                    RenderNonClickable(writer, pg.PageName, null);
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(Header))
                {
                    RenderHeader(writer);
                }
                if (pg != null && pg.TypePage != ECommercePageType.HomePage)
                {
                    RenderHomeLink(writer, true);
                }

                for (int i = 0; i < (cur.Count - 1); i++)
                {
                    RenderBreadCrumb(writer, cur[i]);
                }

                if (cur.Count > 0)
                {
                    RenderNonClickable(writer, cur[cur.Count - 1].Label, cur[cur.Count - 1].Url);
                }
            }
            writer.Write("</ul>");
        }