News und News-Feeds im Redaktionssystem erzeugen

Funktionen zur Erzeugung von News-Feeds

Zur Erzeugung von News-Feeds dienen im CMS die folgenden Funktionen:

  • In den Systemeinstellungen können Channels definiert werden. Channels dienen dazu, Nachrichten thematisch zu gruppieren, also Dateien in Bezug auf deren Inhalte zu kategorisieren – ähnlich wie ein benutzerdefiniertes Feld Warengruppe eine Datei bezüglich der in den Inhalten beschriebenen Produkte kategorisieren würde. Die Channel-Einstellungen sind mit dem Content Navigator über das Menü Extras > Systemeinstellungen zu erreichen.

  • Die Versionen von Dateien des Typs Ordner und Dokument haben das fest eingebaute Feld channels. Das Feld channels ist vom Typ Mehrfachauswahl, und man kann es daher mit beliebig vielen der konfigurierten Channels belegen. Auf diese Weise lassen sich Inhalte und eine Auswahl von Channels einander zuordnen.

  • Dateivorlagen haben das Feld canCreateNewsItem (als News auf dem Live-Server bereitstellen). Ist dieses Feld bei einer Vorlage aktiviert, so werden Dateien mit dieser Vorlage bei der Freigabe in eine interne Newsliste aufgenommen, sofern das channels-Feld der freigegebenen Version nicht leer ist (dieses Feld also mindestens einen Channel enthält).

  • Es können Listen von News erzeugt werden, die sich in beliebig festlegbaren Channels befinden. Hierfür stehen eine NPSOBJ-Anweisung und ein Tcl-Befehl zur Verfügung. Die NPSOBJ-Anweisung liefert analog zur toclist-Anweisung eine Kontextliste, so dass die Felder der Version ausgelesen werden können. Der Tcl-Befehl lautet news.

Verwendung der NPSOBJ-newslist-Anweisung

Zur Erzeugung von Newslisten in Layouts kann die NPSOBJ-newslist-Anweisung auf die folgenden drei Arten verwendet werden:

  • Die Liste aller News in allen Channels erzeugen:

    <npsobj newslist="all" length="20">
      Für jede News evaluierter Text
    </npsobj>
  • Die Liste der News erzeugen, die mindestens einem Channel zugeordnet sind, die als Wert in einem Feld des aktuellen Dokuments enthalten sind:

    <npsobj newslist="selected" name="Channel-Feld" length="20">
      Für jede News der indirekt angegebenen Channels evaluierter Text
    </npsobj>

    Das Feld muss einen der Typen Zeichenkette, Text, Auswahl oder Mehrfachauswahl haben. Bei den Typen Zeichenkette und Text müssen die Werte kommasepariert angegeben sein. Bei Feldern vom Typ Auswahl oder Mehrfachauswahl werden die Werte des Feldes so wie sie sind als Channels verwendet.

  • Die Liste der News erzeugen, die direkt angegebenen Channels zugeordnet sind:

      <npsobj newslist="selected" value="ch1, ch2, ..." length="20">
        Für jede News der direkt angegebenen Channels evaluierter Text
      </npsobj>

Auch wenn eine News mehr als einem der direkt oder indirekt angegebenen Channels zugeordnet ist, ist sie höchstens einmal in der generierten Newsliste enthalten.

Erzeugte Newslisten enthalten nur News, deren Erscheinungsdatum zum Zeitpunkt des Exports in der Vergangenheit liegt. Intern enthält die Newsliste natürlich alle Dateien, denen ein Channel zugewiesen wurde und deren Vorlage über das Feld canCreateNewsItem die Bereitstellung der Datei als News vorsieht. Das Erscheinungsdatum entspricht initial dem Anlegezeitpunkt der Newsdatei, der bei Bedarf über das Gültig-ab-Feld der Arbeitsversion beeinflusst werden kann.

Ein versehentlich freigegebener Newsartikel kann daher aus der generierten Newsliste entfernt werden, indem ihr Erscheinungsdatum in die Zukunft verlegt wird. In der internen Newsliste bleibt sie jedoch erhalten, sofern die News-Datei nicht gelöscht oder ihr Channels-Feld nicht geleert wird. Eine Datei wird auch aus der internen Newsliste entfernt, wenn die Channels, denen die News zugeordnet ist, aus der Systemkonfiguration gelöscht werden. Der Wert des channels-Feldes der Versionen wird dadurch jedoch nicht beeinflusst, kann danach also Namen nicht existenter Channels enthalten. Newsartikel, die nicht existierenden Channels zugewiesen sind, werden nicht wieder in die Newsliste eingetragen, wenn ein fehlender Channel wieder angelegt wird.

Wenn die Template Engine eingesetzt wird, werden alle Dateien, die eine NPSOBJ-newslist-Anweisung enthalten, bei jeder Änderung an Dateien und an der Channel-Konfiguration neu exportiert, damit die erzeugten Newslisten stets aktuell sind. (Die Dateien erhalten eine usesAll-Abhängigkeit.

Beispiele

Die Liste der 10 neuesten News erzeugen

  • Den Channel sitenews anlegen.

  • Die Dateivorlage newsitem anlegen und darin canCreateNewsItems (Auf dem Live-Server als News bereitstellen) aktivieren.

  • An beliebiger Stelle in der Ordnerhierarchie eine Datei news1 mit der Vorlage newsitem anlegen.

  • In das Layout der Startseite etwa Folgendes einfügen:

    <ul>
      <npsobj newslist="all" lenght="10">
        <li>
          <npsobj insertvalue="anchor" destination="self">
            <npsobj insertvalue="var" name="title" />
          </npsobj>
      </npsobj>
    </ul>

Einen RSS-Feed für Politik-News einrichten

  • Den Channel politics anlegen;

  • Die Dateivorlage newsitem anlegen und darin canCreateNewsItems (Auf dem Live-Server als News bereitstellen) aktivieren.

  • Das Feld description und die Dateivorlage feed anlegen und zu dieser description hinzufügen. canCreateNewsItems nicht aktivieren.

  • Den Ordner rssfeeds anlegen.

  • Darin ein Basislayout anlegen, das einen RSS-Feed ausgibt (s.u.).

  • In dem gleichen Ordner die Datei politicsfeed mit der Vorlage feed anlegen und in die description "Neues aus der Firmenpolitik" eingeben. Als Channels politics auswählen.

  • Dem Basislayout den folgenden Haupttext geben:

    <?xml version="1.0" encoding="utf-8"?>
      <!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.92//EN" 
    "http://my.netscape.com/publish/formats/rss-0.92.dtd">
    <rss version="0.92">
    <channel>
      <description>
        <npsobj insertvalue="var" name="description" />
      </description>
      <language>de</language>
      <title><npsobj insertvalue="var" name="title" /></title>
      <link>http://www.mysite.com/</link>
      <copyright>(c) JustRelate Group GmbH</copyright>
      <generator>CMS Fiona 6.0</generator>
      <ttl>60</ttl>
      <npsobj newslist="selected" name="channels" length="20">
        <item>
          <title><npsobj insertvalue="var" name="title"/></title>
          <link>http://www.mysite.de<npsobj
            insertvalue="var" name="visiblePath" />
          </link>
          <description>
            <npsobj insertvalue="var" name="description"/>
          </description>
        </item>
      </npsobj>
    </channel>
    </rss>

Für eine RSS-Datei in einer anderen Version (beispielsweise 2.0) kann die Layoutdatei entsprechend angepasst werden.

Um einen weiteren Feed mit Sportnachrichten mit der obigen Layoutdatei zu generieren:

  • Den Channel sports einrichten.
  • Im Ordner rssfeeds die Datei sportsfeed mit der Vorlage feed anlegen und in dessen Feld description "Neues aus dem Sport" eingeben. Als Channels sports auswählen.
  • Jetzt Dateien mit dem Format newsitem anlegen und als Channel sports auswählen. Sie erscheinen im Sports-Newsfeed.

Einen Newsletter versenden

  • Den Ordner newsletters anlegen.
  • Ein Basislayout schreiben, die den Inhalt des Newsletters erzeugt, indem sie beispielsweise Felder aus entsprechenden Dateien ausliest.
  • Das Dateiformat newsletter anlegen.
  • Im Ordner newsletters die Datei politics mit dem Format newsletters anlegen.
  • In den Hauptinhalt von politics die Email-Adressen mit einer Adresse pro Zeile eintragen.
  • Einen Assistenten schreiben, der das Feld exportBlob von politics an jede Email-Adresse im Haupttext von politics verschickt.