Questions & Answers

SOLVED
lobanova
Elite Observer

Contentprojektion Seite oder nicht?

Jump to solution

Hallo FirstSpirit Community und e-spirit Experten,

auf welche Art und Weise kann ich in einer Seitenvorlage ermitteln, ob bei der aktuellen Seite um eine Contentprojektion Seite geht oder nicht?

Und wenn das eine Contentprojektion Seite ist, ob sie zur Anzeige eines einzelnen Datensatzes (Anzahl der Eintrรคge pro Seite = 1, Maximale Seitenanzahl = 0) oder der Auflistung von mehreren Datensรคtzen (Anzahl der Eintrรคge pro Seite = 0, Maximale Seitenanzahl = 1) pro Seite dient?

Vielen Dank.

Mit freundlichen GrรผรŸen,

Olga

0 Kudos
11 Replies
hoebbel
Crownpeak employee

Hallo Olga,

> Der Check #global.dataset.isNull wirft leider auch die IOOB Exception bei Contentprojektion Seite mit leeren Datenmenge

Das ist "gefรผhlt" erst einmal ein Bug. Man kann natรผrlich die Abfragen sauber machen (erst prรผfen, ob es eine Content-Projektionsseite ist [#global.multiPageParams.data.isNull] und dann die GrรถรŸe der Liste prรผfen [#global.dataset.size > 0]. )

Aber in meinen Augen muss auch eine direkte Prรผfung von #global.dataset ohne Fehler mรถglich sein.

>  kann die Prรผfung isEmpty in FirstSpirit die zusรคtzlichen Checks wie isSet und isNull sparen?

Die Unterschiede zwischen den Methoden sind nicht allzu groรŸ, aber vorhanden.

isSet prรผft eine Variable darauf, ob sie im Kontext vorhanden ist (also definiert wurde).

isNull prรผft, ob der entsprechende Zeiger auf NULL zeigt oder nicht. Aus isNull==true kann man also nicht ableiten, ob die Variable auf NULL zeigt oder nicht definiert wurde. [In der Praxis wird dies kaum einen Unterschied machen]

isEmpty prรผft darauf, ob eine Variable "per Definition" leer ist. Das bedeutet nicht zwingend, dass sie auf NULL zeigt, sondern kann auch eine semantische Bedeutung haben. Ein gutes Beispiel hierfรผr ist die Eingabekomponente CMS_INPUT_DOM. Die ist (wenn ein Knoten einmal sichtbar war und gespeichert wurde) normalerweise "nicht null", aber "empty".

> Meistens im Projekt verwenden wir nur diese Prรผfung, welche oft die Meldung "Undefined variable" auslรถst, falls Variable nicht gesetzt ist. Die Meldung ist aber kein Fehler, erscheint nur im Debug Output. Wie geht FirstSpirit damit um?

Ich hรคtte die Debug Meldung nur erwartet, wenn der Debug Mode explizit aktiviert wird ($CMS_SET(#global.debugMode,true)$)

Aber egal - FirstSpirit wertet Meldungen anhand des "Loglevels" aus. Eine Warnung ist also nur eine Meldung, die im Loglevel WARN erzeugt wird, ein Fehler benรถtigt das Loglevel ERROR. Eine Debug Meldung wird also (was beispielsweise Generierungsfehler angeht) ignoriert.

Hilft Dir das weiter?

Holger

0 Kudos

Hallo Holger.

Ja, danke, etwas mehr klar Smiley Happy

Und hier, wie vereinbart, das Code Beispiel zur Frage bzgl Contentprojektion Seite, wobei angenommen, dass eine Contentprojektion Seite mit der Einstellung "Anzahl der Eintrรคge pro Seite = 0"(oder >1) zur Auflistung der Daten dient (z.b. Produkten รœbersicht), und die Contentprojektion Seite mit der Einstellung "Anzahl der Eintrรคge pro Seite = 1" - zur Anzeige der Daten Details (Details zum Produkt):

in Java:

Content2Params params = pageRef.getContent2Params();

if (params != null) {

     // eine Contentprojektion Seite

     if (params.getRecordCountPerPage() == 1) {

          // Detailseite

     } else {

          // Auflistungseite

     }

} else {

     // keine Contentprojektion Seite

}

in FirstSpirit Vorlage:

$CMS_SET(params, #global.node.getContent2Params())$

$CMS_IF(!params.isNull)$

     $-- eine Contentprojektion Seite --$

     $CMS_IF(params.getRecordCountPerPage() == 1)$

          $-- Detailseite --$

     $CMS_ELSE$

          $-- Auflistungseite --$

     $CMS_END_IF$

$CMS_ELSE$

     $-- keine Contentprojektion Seite --$

$CMS_END_IF$

Mit freundlichen GrรผรŸen,

Olga

0 Kudos

Type a product name