BlogEngine.Net : Multipli de zone de widget par thèmes Razor

    Il y a peu de temps, j'ai été contacté par une entreprise pour qu'une annonce apparaisse uniquement dans la barre latérale de la page d'accueil. J'ai donc dû créer un widget personnalisé à placer uniquement sur la page d'accueil.

    J'ai donc commencé à fouiller dans les méandres du forum sur BlogEngine.Net pour essayer de trouver quelque chose qui me permette de créer plusieurs Widget Zones : des widgets différents et différents entre la page d'accueil et les publications individuelles.


    Un article intéressant est celui de Les quartiers de Ben ce qui explique très bien les Widgets Multiple Widgetzone pour les thèmes dans BlogEngine.Net : Multiple Widgetzone en BE.


    Le problème est que mon thème est un thème du rasoir, pour lequel l'affaire était extrêmement compliquée, puisqu'il s'agit de fichiers avec l'extension chstml et non aspx ou ascx (le Razor a été créé par Microsoft dans le but d'obtenir une mise en page compacte et expressive). J'ai essayé de demander de l'aide au forum BE.Net, en essayant de définir un seul widget avec la publicité requise sur la page d'accueil pour le masquer sur les pages et les publications à la place.

    Pratiquement chaque widget a un ID, en définissant l'ID du widget sur visible = true dans la page d'accueil et sur visible = false dans les autres sections, j'aurais pu résoudre le problème mais pour le thème du rasoir, il n'y a pas de widgetContainer, j'ai donc dû créer un widget multizone personnalisé pour le à la maison et pour les pages et les articles.

    BlogEngine.Net : Multipli de zone de widget par thèmes Razor

    En gros voici comment j'ai procédé :

    @if (Request.Url.ToString().ToLowerInvariant().Contains("/default.aspx")) { if (Request.RawUrl.ToLowerInvariant().Contains("/category/") || Request.RawUrl. ToLowerInvariant().Contains("/author/") || Request.RawUrl.ToLowerInvariant().Contains("?tag=") || Request.QueryString["year"] != null || Request.QueryString[" date"] != null || Request.QueryString["calendar"] != null) { @Html.Raw(Html.RenderWidgetZone("page-sidebar")) } else { @Html.Raw(Html.RenderWidgetZone("be_WIDGET_ZONE")) } } else { @Html.Raw(Html.RenderWidgetZone("page-sidebar")) }


    J'ai créé dans le fichier principal de mon thème, dans mon cas Site.Cshtml, une condition dans laquelle je dis au système que si la page sur laquelle je suis est différente de la Home Page, "page-sidebar" est la zone de widget à utiliser comme barre latérale, sinon vous pouvez utiliser en toute sécurité "be_WIDGET_ZONE".


    M'aider avec le CSS tout ce que j'ai fait a été d'utiliser l'identifiant « sidebar-page » pour définir les couleurs, les formes et les polices des nouveaux widgets.


    En plus de la possibilité de créer deux barres latérales différentes avec des widgets différents pour les pages, articles, page d'accueil, etc.. il est également possible de créer des zones de widgets à l'intérieur de la barre latérale. Par exemple, si nous voulons différentes zones de widgets dans la barre latérale, nous pouvons créer un midWidget et un bottomWidget, en nous aidant toujours avec CSS :

    @Html.Raw(Html.RenderWidgetZone("be_WIDGET_ZONE")) @if (Request.Url.ToString().ToLowerInvariant().Contains("default.aspx") || Request.Url.ToString().ToLowerInvariant().Contains("blog.aspx")) { @Html.Raw(Html.RenderWidgetZone("be_WIDGET_MID")) } @Html.Raw(Html.RenderWidgetZone("be_WIDGET_BOTTOM"))

    ajouter un commentaire de BlogEngine.Net : Multipli de zone de widget par thèmes Razor
    Commentaire envoyé avec succès ! Nous l'examinerons dans les prochaines heures.