Samstag, 8. März 2014

Direkte Newsverlinkung (tt_news) in der Hauptnavigation

Verbessern Sie die Usability Ihrer Seite indem Sie beliebige News in Ihrer Hauptnavigation als Link zur Verfügung stellen.

Stellen Sie sich vor, Sie haben eine Top-Navigation. Darin enthalten ist ein Verweis auf Ihre Newsseite, deren Inhalte Sie mit der Extension tt_news erstellt haben. Damit Ihre Besucher nun nicht erst auf Ihre allgemeine Newssammlung gelenkt werden (List- oder Latest-Ansicht) können Sie auch beliebige (oder die neuesten) Beiträge z.B. als DropDown unter Ihrem Newslink aufklappen lassen.
Ich möchte gerne die Version mit den beliebigen News näher erläutern. Ich bin der Meinung, dass es vor allem Sinn macht, bestimmte Newsbeiträge zu promoten und für Google leichter zugänglich zu machen. Zusätzlich lenken Sie die Besucher direkt auf die Beiträge, die Sie für besonders interessant oder wichtig halten. Sie erhalten somit ein wenig mehr Kontrolle über das Nutzerverhalten.

Was Sie brauchen

Ich nehme an, tt_news läuft bereits auf Ihrer Seite und Sie haben schon ein paar tolle News verfasst. Dann brauchen sie lediglich eine neue Kategorie. Die Bezeichnung der Kategorie steht Ihnen natürlich frei. Sie sollten jedoch darauf achten, dass Sie mit der Bezeichnung auch das ausdrücken, wofür die Kategorie steht, nämlich "in der Hauptnavigation öffnen".
Ich nenne meine neue Kategorie also einfach "in Hauptmenu". Dazu notiere ich mir die ID der Kategorie. Der Rest ist TypoScript.

Zusätzlich sollten Sie noch die ID der Einzelnews-Ansicht, sowie die ID des Speicherorts Ihrer News kennen (den Sysfolder).

TypoScript zu Erstellung des News-Submenus

Ich gehe davon aus, dass Sie bereits eine Navigation mittels HMENU/TMENU erstellt haben und "einfach" nur dem News-Link die einzelnen News zuweisen möchten.
Alle Anweisungen nehme ich innerhalb der "NO"-Notation vor.

(Sie finden eine ausführliche Erläuterung des Codes in den Kommentaren)
// ------------------------------------------------
...


NO {
  ... 


  // Ich möchte die Ausgabe meiner News hinter den Hauptlink stellen
  // Wenn Sie Seiten innerhalb Ihrer Newsebene haben, 
  // werden diese dann hinter die Newslinks gestellt
  after {
    // Mein Vergleichsparameter: Die Seiten-ID der Newsseite
    if.value = 3
    // Ich prüfe, ob innerhalb meines TMENUS eine Seite mit der ID "3" auftaucht. 
    // Wenn nicht, passiert auch nichts
    if.equals.field = uid
    // Append ist vom Typ cObject. Dadurch kann ich diesem nun ein beliebiges Objekt zuweisen.
    // CONTENT ermöglicht mir SQL-Anweisungen in TypoScript auszuführen
    append = CONTENT
    append {              
      // Wähle die Tabelle "tt_news"
      table = tt_news
      // SELECT-Anweisung
      select {
        // andWhere ist vom Typ "stdWrap". 
        // Ich könnte also diverse Funktionen hier hinterlegen, 
        // entscheide micht aber für einen normalen String. 
        // Hier steht nun als SQL: WHERE category REGEXP ...
        // [[:<:]]String[[:>:]] = Wortgenzen
        // d.h. ich suche explizit nach einen String der dem Suchbegriff 
        // innerhalb des Ausdrucks entspricht (meine Kategorie ID = 1)
        // Ich nutze diese Art des Ausdrucks, da es sein kann, 
        // dass einer News mehr Kategorien zugeordnet wurden
        andWhere = category REGEXP "[[:<:]]1[[:>:]]"
        // Die ID des Speicherorts Ihrer News
        pidInList = 21
      }
      wrap = <ul>|</ul>
      // Das Objekt wird gerendert mit einem normalen TEXT-Objekt
      renderObj = TEXT
      renderObj {
        // Hole mir den Wert aus dem Datenbankfeld: title
        field = title
        wrap = <li>|</li>
        // Sollte der Wert (also der title) mehr als 20 Zeichen haben, 
        //möchte ich am Wortende "..." anfügen und den title auf 20 Zeichen abschneiden 
        crop = 20|...|1
        typolink {
          // damit Suchmaschinen etwas sinnvolles hinter dem verkürzten Linktext finden,
          // gebe ich den vollständigen Titel im title-Attribut des Links aus
          title.field = title
          // Die Seiten-ID der Einzelnewsansicht
          parameter = 20
          // Damit das Plugin auf der Zielseite die korrekten News aus der Datenbank holt, 
          // muss ich dem Link noch zusätzliche Parameter mitgeben
          // Hier die News-ID
          // dataWrap sucht nach Angaben zw. {xxx} und gibt diese entsprechend aus. 
          // Hier: Datenbankfeld UID der News
          additionalParams.dataWrap = &tx_ttnews[tt_news]={field:uid}
          // Um die korrekte News zu anzeigen zu können, 
          // ist es notwendig hier einen zusätzlichen Cache-Hash anzuhängen.
          useCacheHash = 1
        }
      }           
    }
  }
}


...
// ------------------------------------------------

Das Ergebnis:




Alternativ können Sie natürlich die Ausgabe der News anpassen. So könnten Sie z.B. immer die neuesten 6 News-Artikel dort erscheinen lassen u.v.m. Eine Ausweitung auf andere Bereiche, wie tt_address-Verknüpfungen können ebenfalls nach diesem Schema erstellt werden.

Viel Spaß beim Ausprobieren.

Keine Kommentare:

Kommentar veröffentlichen