/// <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("' />"); } }
/// <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>"); }
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>"); }
/// <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>"); }