Zum Hauptinhalt springen
Werden Inhalte aus einem Drittsystem in den Shop geladen, beispielsweise über ein externes Include oder die JSON-Schnittstelle, und sind diese Inhalte nicht mehr vorhanden, liefert der Shop trotzdem den Statuscode 200 aus. Aus seiner Sicht zu Recht: Das Template, auf dem die fremden Inhalte eingebunden werden, existiert ja. Für Suchmaschinen ist das ein Problem. Sie bekommen eine funktionierende Seite gemeldet, auf der nichts mehr steht. Mit ContentControl kann ein Template diese Entscheidung nachträglich korrigieren und stattdessen einen 404 oder eine Weiterleitung ausliefern. Die Tags mit dem Präfix ContentControl- greifen dafür in den HTTP-Header ein. Wegweiser: SEO-URLs, Abschnitt Weiterleitungskonzept für Inhalte aus Drittsystemen
Gemeint ist der HTTP-Header, also das Protokoll zwischen Server und Browser. Das ist nicht der head-Bereich des HTML-Dokuments. Wer hier etwas ändert, ändert die Antwort des Servers und nicht den Seiteninhalt.

Die Voraussetzung

Diese Tags wirken nicht auf beliebigen Templates. Das Template muss in der Shopkonfiguration shop.config im Abschnitt <ContentControlLoadTemplates> eingetragen und über WS-LoadTpl() oder WS-SSLLoadTpl() aufgerufen werden.
Für Standard-Templates aus dem Abschnitt <Templates> lässt sich die Funktion nicht verwenden. Eine Freischaltung durch die WEBSALE AG braucht es dagegen nicht.
Ob die Funktion an der Stelle, an der Sie gerade stehen, überhaupt greift, prüfen Sie mit ST-ContentControl. Klammern Sie den gesamten Block damit ein, dann bleibt er auf einem falschen Template wirkungslos statt fehlerhaft.

Das vollständige Beispiel

Ein Inhalt aus dem Drittsystem ist verschwunden, und die Seite soll mit einem eigenen 404-Dokument antworten.

ContentControl-SetHeader_Status()

Setzt den HTTP-Statuscode der Antwort.
Der Shop entfernt alle Leerzeichen aus dem Parameter. Eine ausgeschriebene Statusmeldung kommt deshalb nicht unverändert an: Aus 404 Not Found wird 404NotFound. Geben Sie nur die Zahl an, solange das nicht geklärt ist.
Das Tag ist ein reines Einzel-Tag und unterstützt Tag-in-Tag. Der Statuscode kann also aus einem anderen Tag kommen.

ContentControl-SetHeader_Location()

Setzt die Zieladresse der Weiterleitung. Zusammen mit einem Statuscode aus der 300er-Reihe ergibt das eine vollständige Weiterleitung.
Eine Weiterleitung braucht keinen Inhalt. Unterdrücken Sie den Antwortinhalt deshalb mit ContentControl-SuppressResponseBody, sonst schickt der Shop zusätzlich das geparste Template mit.

Die Zieladresse aus einem anderen Tag holen

Soll die Zieladresse selbst erst berechnet werden, liefert DC-WSTagParameter-prepare das Ergebnis eines Tags als Parameter für ein weiteres Tag.
Referenz: DC-WSTagParameter-prepare

ContentControl-SetContentType()

Setzt den Inhaltstyp der Antwort. Ohne dieses Tag sendet der Shop text/html mit dem eingestellten Zeichensatz.
Es ist nützlich, wenn ein Template kein HTML ausliefern soll, sondern beispielsweise JSON oder XML.
Auch hier entfernt der Shop alle Leerzeichen aus dem Parameter. Ein Inhaltstyp mit Zusatzangabe kommt deshalb ohne Leerzeichen an. Prüfen Sie das Ergebnis, bevor Sie sich darauf verlassen.

ContentControl-SuppressResponseBody

Unterdrückt den Antwortinhalt. Der Shop liefert dann nur die Kopfzeilen aus.
Das Tag lässt sich auch als Bereichs-Tag verwenden und greift dann, wenn ContentControl auf dieser Seite überhaupt aktiv ist. Unterdrückt wird der Inhalt aber nur durch das Einzel-Tag. Die Klammerung allein bewirkt nichts.
Unterdrückung schlägt Ersetzung. Steht ~ContentControl-SuppressResponseBody~ auf der Seite, wird ein mit WS-ContentControl-UseAsExclusiveResponseBody gesetzter Inhalt nicht mehr ausgeliefert. Verwenden Sie das eine oder das andere.

Den Antwortinhalt ersetzen

Soll statt des geparsten Templates ein eigener Inhalt ausgeliefert werden, klammern Sie ihn in ein Markerpaar.
Das ist kein Tag im gewohnten Sinn und deshalb auch nicht in geschweiften Klammern geschrieben. Der Shop sucht in der fertig geparsten Seite nach diesem Markerpaar und schneidet alles heraus, was dazwischen steht. Genau dieser Ausschnitt wird zur Antwort, alles davor und dahinter entfällt.
Das Markerpaar muss genau so geschrieben werden, öffnend und schließend. Fehlt eines der beiden, findet der Shop den Ausschnitt nicht und liefert die ganze Seite aus.

Die Reihenfolge in der Antwort

Der Shop setzt die Kopfzeilen in fester Reihenfolge: zuerst den Inhaltstyp, dann die Cookies, dann den Status, dann die Location, dann gegebenenfalls den Dateinamen und zuletzt den Inhalt. Die Reihenfolge im Template spielt keine Rolle. Sie können den Status vor oder nach der Location setzen, das Ergebnis ist dasselbe. Wichtig ist nur, dass die Tags auf dem Template stehen, bevor es ausgeliefert wird.

Tags anderer Präfixe

Die Tags im Überblick

Zulässig sind alle Tags nur auf Templates, die im Abschnitt <ContentControlLoadTemplates> der Shopkonfiguration hinterlegt sind.

Verwandte Themen