CNoetzel
Elite Observer

Tote Links zur Generierungszeit ermitteln

Jump to solution

Hallo werte FirstSpirit-Community,

ich stehe derzeit vor dem folgenden Problem. Seiten sollten für einen bestimmten Zeitraum online gestellt (generiert) werden und nach diesem Zeitraum wieder verschwinden (nicht mehr generiert werden).

Hierfür habe ich in der Seitenvorlage entsprechende Eingabeelemente erstellt (pt_validFrom=Startdatum sowie pt_validTo=Enddatum) und prüfe im HTML-Ausgabe Kanal der Seite ob zum Zeitpunkt der Generierung (#global.now) die Seite generiert werden sollte oder nicht. Wenn das Startdatum noch nicht erreicht, oder aber das Enddatum bereits überschritten wurde, wird die Generierung der Seite mit  $CMS_SET(#global.stopGenerate, true)$ abgebrochen.

$CMS_IF((!pt_validFrom.isEmpty && (pt_validFrom > #global.now)) || (!pt_validTo.isEmpty && (#global.now > pt_validTo)))$

    $CMS_SET(#global.stopGenerate, true)$

$CMS_END_IF$

So weit, so gut! Die Seiten die nicht generiert werden sollen, landen erwartungsgemäß nicht in der Ordner-Struktur des Staging.

Nun ist es aber so, dass es noch - sei es über die Navigation oder über eine Verweisvorlage hinzugefügte - Links geben kann, die aufgrund fehlender generierter HTML-Seiten ins nichts (Error: 404) führen. Der CMS-Parameter "suppressEmptyFolders" der Navigations-Funktion scheint nur bei Menüebenen zu greifen, in denen keine Seitenreferenz hinterlegt ist, nicht aber bei dem generierten output wo die Zielordner leer sind Smiley Sad.

Daher meine Frage: Habe ich die Möglichkeit zur Generierungszeit zu überprüfen, ob die Zieldatei auf die ein Link verweist, existiert? Ich habe ja Zugriff auf das #nav Systemobjekt. Dann könnte ich die entsprechende Verweisvorlage für interne Links anpassen und auch in der Navigations-Funktion entsprechende Vorkehrungen treffen.

Oder ist mein Vorgehen völlig absurd und ich sollte die Problemstellungen auf eine andere Art und Weise lösen?

Für Rückmeldungen und Codebeispiele bin ich sehr dankbar.

Grüße

Carsten

Labels (1)
0 Kudos
1 Solution

Accepted Solutions
CNoetzel
Elite Observer

Re: Tote Links zur Generierungszeit ermitteln

Jump to solution

Vielen Dank, dieser Hinweis hat mich auf die richtige Fährte gebacht!

#nav.node.getPage.getFormData.get(#global.project.masterLanguage, "pt_validFrom")

Damit lässt sich auf die Formular-Daten zugreifen und ich komme an die Information zur Gültigkeit einer Seite heran. Smiley Happy

View solution in original post

0 Kudos
4 Replies
Peter_Jodeleit
Crownpeak employee
Crownpeak employee

Re: Tote Links zur Generierungszeit ermitteln

Jump to solution

Daher meine Frage: Habe ich die Möglichkeit zur Generierungszeit zu überprüfen, ob die Zieldatei auf die ein Link verweist, existiert?

Dann wäre man ja in der Generierung abhängig von der Reihenfolge, in der die Elemente generiert werden. Sinnvoller wäre es, die Prüfung auf den Gültigkeitszeitraum auch in der Navigations-Funktion durchzuführen.

Peter
0 Kudos
CNoetzel
Elite Observer

Re: Tote Links zur Generierungszeit ermitteln

Jump to solution

Dann wäre man ja in der Generierung abhängig von der Reihenfolge, in der die Elemente generiert werden.

Ah, sowas habe ich befürchtet.

Habe ich denn die Möglichkeit über das #nav Objekt bzw. über eine TargetReference (welche mir die FS_REFERENCE-Eingabekomponente liefert) auf die Werte von "pt_validFrom" bzw. "pt_validTo" zuzugreifen?

Ich würde dann in der Navigationsfunktion, sowas verwenden.

<CMS_ARRAY_ELEMENT>

     $CMS_IF(PRÜFUNG_MIT_ZUGRIFF_AUF_pt_validFrom_UND_pt_validTo)$

          <!-- keinen Link erzeugen, da Seite nicht gültig -->

     $CMS_ELSE$

          <![CDATA[<a class="unselected" href="$CMS_REF(#nav.ref)$">$CMS_VALUE(#nav.label.convert2)$</a><br />]]>

     $CMS_END_IF$

</CMS_ARRAY_ELEMENT>

Bei mir hakt es im Moment noch am Zugriff auf die in der Seitenvorlage definierten Werte für "pt_validFrom" und "pt_validTo" innerhalb der Navigationsfunktion.

0 Kudos
Peter_Jodeleit
Crownpeak employee
Crownpeak employee

Re: Tote Links zur Generierungszeit ermitteln

Jump to solution

#nav.node liefert den Knoten in der Struktur-Verwaltung (Typ PageRef). Ab da sollte die API-Doc weiterhelfen..

Peter
CNoetzel
Elite Observer

Re: Tote Links zur Generierungszeit ermitteln

Jump to solution

Vielen Dank, dieser Hinweis hat mich auf die richtige Fährte gebacht!

#nav.node.getPage.getFormData.get(#global.project.masterLanguage, "pt_validFrom")

Damit lässt sich auf die Formular-Daten zugreifen und ich komme an die Information zur Gültigkeit einer Seite heran. Smiley Happy

0 Kudos