Utilisation de Alternatives pour Document.cshtml dans Orchard CMS

Je travaille actuellement sur un site Web qui nécessite la possibilité d’écraser le fichier document.cshtml afin de pouvoir appliquer une classe CSS spécifique en fonction de l’emplacement actuel de l’utilisateur.

J’ai essayé d’utiliser des alternatives d’URL telles que:

  • Document.cshtml
  • Document-url-AreaA.cshtml
  • Document-url-AreaB.cshtml
  • Document.url-AreaC.cshtml

Cependant, il semble que tous utilisent le fichier Document.cshtml, au lieu d’en utiliser un basé sur l’URL. Je pouvais facilement comprendre que c’était le but recherché, mais je me demandais s’il serait possible d’implémenter la fonctionnalité ci-dessus.


Mettre à jour

Je pense que j’ai peut-être progressé dans ce domaine, par opposition à l’utilisation d’alternatives d’URL et à l’ajout d’un champ dans le modèle (pour le document) afin d’extraire simplement la “zone” actuelle du site et d’appliquer cette classe à la liste. corps.

(Dans document.cshtml)

@using Orchard.Mvc.Html; @using Orchard.UI.Resources; @{ RegisterLink(new LinkEntry {Type = "image/x-icon", ...}); ssortingng title = Convert.ToSsortingng(Model.Title); ssortingng siteName = Convert.ToSsortingng(WorkContext.CurrentSite.SiteName); //Pull the Area here ssortingng area = Model.DesignatedAreaField; }     @Html.Title(title, siteName) @Display(Model.Head)   //Body goes here @Display(Model.Body) @Display(Model.Tail)   

Je pense que cela pourrait être une solution plus facile que celle suggérée précédemment. Cependant, je me demande quelle serait la méthode la plus simple pour placer un champ auquel je pourrais accéder à partir du modèle de document.

Document.cshtml est un wrapper pour la forme Layout. Les wrappers ne prennent pas en charge les substituts. Le seul moyen de remplacer le modèle document.cshtml de manière sélective consiste à supprimer le wrapper existant de la collection wrappers sur les métadonnées de la forme de présentation et à append le vôtre.

Mais attendez… je ne vois aucune raison valable pour laquelle vous voudriez faire cela. Le document document.cshtml contient du code HTML standard qui devrait être identique sur l’ensemble du site. La solution décrite dans votre mise à jour est la voie à suivre.

Vous pouvez également déplacer la dans Layout.cshtml, puis utiliser des adresses URL alternatives de Layout.cshtml pour définir l’atsortingbut de classe de 's .

Vous voudrez peut-être jeter un coup d’œil à cet article: http://weblogs.asp.net/bleroy/archive/2010/12/14/switching-the-layout-in-orchard-cms.aspx . Il montre comment vous pouvez append dynamicment vos propres alternatives, mais la même approche pourrait fonctionner pour append des propriétés au modèle ou à la présentation en fonction de la géolocalisation.

Je pense que vous pouvez définir du code dans OnResultExecuting () pour append dynamicment une propriété à la classe Model. Comme il est de type dynamic, vous devriez juste pouvoir le définir, rien de spécial en plus.