Frage

Ich habe diesen Newsletter Seite, dass die tatsächlichen Newsletter verschachtelt darunter für jeden Monat des Jahres hat.

Ich möchte die übergeordnete Seite Umleitung auf die neuesten veröffentlichten Seite haben können. Was wäre der beste Weg, das zu tun?

Ich habe nicht wirklich eine Ahnung davon, wo mit diesem beginnen ... machen soll ich eine Unter Layout Steuer Benutzer und programmatisch umleiten? Oder gibt es eine elegantere Möglichkeit es ... Vielen Dank im Voraus zu tun!

War es hilfreich?

Lösung

Ich weiß nicht, ob es eine „Sitecores“ ist -Wege, dies zu tun, aber ich würde eine der folgenden versuchen:

  1. Statt eine Umleitung, die würde ich nur zeigen, den ersten Kind-Knoten einer bestimmte Vorlage auf der übergeordneten Seite.

  2. Wie Sie vorgeschlagen, machen Sie eine sublayout, dass der Benutzer den Newsletter umleitet.

Hier ist ein Code, der für Sie arbeiten soll. Es wird der letzte veröffentlichte Newsletter Sie es in jeder Lösung oben nutzen könnten.

Item[] childs = currentItem.Axes.GetDescendants();

var itm = childs.AsQueryable().Where(c => c.TemplateName.ToLower().
Contains("newsletter")).OrderByDescending(c => c.Publishing.PublishDate).Take(1);

Andere Tipps

Stellen Sie das Layout der Hauptseite (das heißt diejenige, die Sie umleiten mögen aus) ein Ashx generischen Handler sein. Das würde bedeuten, dass es nicht UI-Code in irgendeiner Weise beteiligt ist.

Sie können es mit viel weniger Code, solange die folgenden Annahmen zutreffen: 1. Alle untergeordneten Elemente sind Newsletter 2. Die neueste an der Spitze ist (zum Beispiel Produkte nach Erscheinungsdatum sortiert sind)

namespace YourSite
{
    public class NewsletterHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            Item item = Sitecore.Context.Item.Children[0];
            string url = Sitecore.Links.LinkManager.GetItemUrl(item);
            context.Response.Redirect(url);
        }

        public bool IsReusable { get { return false; } }
    }
}

Wenn die obigen Annahmen sind falsch, die aktuelle Suche nach veröffentlichten kann nicht so einfach sein wie das Datum veröffentlichen bekommen wie von Zooking beschrieben. Es kann sein, aber wenn Sie ein Update einen älteren Newsletter machen und erneut zu veröffentlichen, kann dieser Code nicht (glaube ich?). Wenn es ist in Ordnung, kein Problem, Zooking korrekt ist, sonst können Sie die tatsächlichen geben wollen jedem Newsletter ein bestimmtes Datum Feld .. in diesem Fall den Code hier in Ihrem Handler verwenden.

namespace YourSite
{
    public class NewsletterHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            Item[] children = Sitecore.Context.Item.Axes.GetDescendants();
            Item item = children.AsQueryable()
                .Where(c => c.TemplateName.ToLower()
                .Contains("newsletter"))
                .OrderByDescending(c => DateTime.Parse(c["PublishDate"])).FirstOrDefault();
            string url = Sitecore.Links.LinkManager.GetItemUrl(item);
            context.Response.Redirect(url);
        }

        public bool IsReusable { get { return false; } }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top