Search the FirstSpirit Knowledge Base
Hallo Zusammen,
ich habe folgende zwei Fragen, die darauf abzielen bei Änderungen von Datenquellen-Inhalten zu erfassen welche Seiten diese einbinden (via FS-List, Contentprojektion, Contentselektion, etc.).
1. (Wie) kann man bei Änderung eines Datensatzes ermitteln auf welcher der N generierten Contentprojektionsseiten er dargestellt wird?
Das Ermitteln welche Seiten eine Contentprojektion der Tabellenvorlage einbinden ist relativ simpel, mir geht es rein darum herauszufinden auf welcher der dynamisch generierten Seiten genau der geänderte Datensatz angezeigt wird.
2. (Wie) kann man für einen Datensatz ermitteln auf welchen Seiten er via Contentselektion eingebunden wird?
Vielen Dank und Gruß
Martin
Verwendungen über FS-List und Dataset sollten über den Referenzgraph ermittelbar sein.
Contentprojektionen: Ich weiß aus dem Kopf nicht, ob man alle Tabellenvorlagen ermitteln kann, die auf einer bestimmten Tabelle basieren. Sofern man aber die Tabellenvorlagen kennt, kann man sich von da zu den Strukturseiten (PageRef) durchhangeln. Dann hat man alle Contentprojektionsseiten, in denen der Datensatz potentiell dargestellt wird (Filter werden nicht berücksichtigt).
Für Contentselektionen gibt es momentan keine Infrastruktur. Aber auch hier kann man die Liste der Vorlagen selbst pflegen und sich von da zu den Seiten in der Struktur durchhangeln.
In FirstSpirit5 wird es übrigens mehr Infrastruktur in diesem Bereich geben.
Vielen Dank Christoph,
aber leider hilft mir das nicht richtig weiter.
FS-List bzw. weitere Formularkomponenten mit "direkter" Referenz sind relativ trivial.
Bei den Contentprojektionen geht es mir jedoch darum, wenn z.B. aus einer Tabellenvorlage jeweils 2 Datensätze pro Seite und endlos viele Seiten projiziert werden, dann muss ich ermitteln auf welcher der projizierten Seiten genau mein Datensatz liegt.
Die reine Referenz auf die Seite in der Strukturverwaltung wäre "kein Problem", da hast Du Recht - aber speziell wenn Filter bzw. eigene Sortierkriterien verwendet wurden ist es nicht gerade trivial zu erkennen auf welcher der potenziell N Seiten mein Datensatz rauskommt.
Bei den Selektionen besteht das Problem auch darin zu erkennen ob mein Datensatz wirklich angezeigt wird, oder durch Filter, etc.ausgeblendet wird.
Ich weiss, ganz schön harter Tobak .
Viele Grüße
Martin
Im Prinzip macht $CMS_REF das schon, allerdings gibt die Funktion ja nur den 1. Link zurück. Für eine Auflistung aller passenden Stellen gibt es aber momentan keinen Weg, da müsstest du also einen Feature-Request stellen).
Der Vorschlag von Christoph geht in die richtige Richtung. Bei einer Vollgenerierung kann man sich für jeden generierten Datensatz (im Template, welches den Datensatz rendert) die aktuelle URL in einer Datenstruktur merken. Dann muss man 'nur noch' diese Datenstruktur in einer der Generierung nachgelagertem Skript auswerten.
Alternativ könnte man versuchen, die Funktion von CMS_REF nachzuimplementieren. Die Arbeitsweise kurz skizziert: Per Iteration über die per Referenzgraph ermittelten Projektionsseiten wird ermittelt, ob die Projektionseinschränkung (also die Datenbankabfrage mit Filter) den gewünschten Datensatz enthält. Dies wird über ein "AND Datensatz-ID = angefragte Datensatz-ID" ermittelt. Das liefert entweder ein leeres Ergebnis (Datensatz nicht enthalten) oder genau einen Datensatz.
--Peter