Search the FirstSpirit Knowledge Base
Hi,
ich würde gerne Inhalte mehrmalls aus einem Schema auslesen und diese auf nur !!! einer Seite mit verschiedenen Navigationen ausgeben.
1. Es wird z.B. ein Schema mit Produkten erstellt.
2. Es wird eine neue Datenquelle angelegt
3. Es wird eine Vorlage erstellt, die alle Produkte mit einer bestimmten Kategorie und der dazugehörige Naviagtion ausließt.
Die auszulesenden Daten lassen sich im Daten Tab beim Anlegen des Sturkturknoten noch weiter eingrenzen. z.B. Kategorie ID.
Bis dahin alles wunderbar. Ein Beispiel findet ihr hier
http://mithrasenergy.com/content/de/products/productcategories.html
Ich würde gerne auf einer Seite zuerst die Produkte A auslesen (mit Navigation), dadrunter z.B. bischen Text ausgeben und dann die Produkte B auslesen. Geht das überhaupt??? Man kan die Absatzvorlagen beliebig kombinieren, es ist aber nicht möglich mehrfach eine Schema Absatzvorlage zu verwenden. Wie auch denn, wenn im Strukturknoten später für die ganze Seite der Filter für die Daten gesetzt wird.
Wie gehe ich am besten vor, oder habe ich etwas übersehen?
Hallo Herr Zasada,
Seitengruppen und Ausgabe auf einer einzelnen Seite widerspricht sich aber
Seitengruppen stellen "nur" eine Navigation zwischen einzelnen Seiten, die sich im selben Ordner befinden, zur Verfügung.
Was Sie wohl haben wollen ist eine Absatzvorlage, über die der Redakteur eine Liste von Projekten anhand der entsprechenden Kategorie auswählen kann.
Eine Lösungsmöglichkeit wäre eine Combobox, die automatisch alle gültigen Kategorien darstellt:
über CMS_INCLUDE_OPTIONS
User: FIRSTDoku
Pass: FSdown_V2
Die Produkte dann einfach über eine contentSelect Funktion ausgeben, die den Rückgabewert der Combobox als Einschränkung auf die Kategorie benutzt.
Viele Grüsse aus Dortmund,
Holger Höbbel
Hallo Herr Zasada,
Sie können Datenbankinhalte entweder über eine Tabellenvorlage oder über eine ContentSelect Funktion ausgeben.
Die wichtigsten Unterschiede zwischen diesen beiden Ausgabearten:
Tabellenvorlage
ContentSelect Funktion
Sie können das Problem also einfach lösen, indem Sie die Produkte über entsprechende ContentSelect Funktionen ausgeben, sofern ich Sie richtig verstanden habe und Sie tatsächlich nur eine Seite ausgeben wollen.
Ansonsten besteht natürlich die Möglichkeit, mehrere Seiten mit Contentprojektionen (Ausgabe mittels Tabellenvorlagen) in einer Seitengruppe zusammenzufassen. Die Seitengruppe umfasst dann alle erzeuten Seiten - die Trennung entsprechender Navigationen ist aber dann etwas "kniffelig".
Viele Grüsse aus Dortmund,
Holger Höbbel
Hallo Herr Höbbel,
ja, dass haben Sie schon richtig verstanden. Ihr Vorschlag mit den Seitengruppen hört sich gut an.
Gibt es zu den Seitengruppen und wie man diese einsetzt eine Doku?
Evtl. werde ich eine Navigation an der Stelle garnicht benötigen. Ich würde gerne auf einer Seite die neuesten Produkte zu X Kategorien ausgeben, wobei ich den Filter eben gerne pro Kategorie setzen würde (eine Navigation wird es somit an dieser Stelle wohl doch nicht geben).
Vielen Dank
Hallo Herr Zasada,
Seitengruppen und Ausgabe auf einer einzelnen Seite widerspricht sich aber
Seitengruppen stellen "nur" eine Navigation zwischen einzelnen Seiten, die sich im selben Ordner befinden, zur Verfügung.
Was Sie wohl haben wollen ist eine Absatzvorlage, über die der Redakteur eine Liste von Projekten anhand der entsprechenden Kategorie auswählen kann.
Eine Lösungsmöglichkeit wäre eine Combobox, die automatisch alle gültigen Kategorien darstellt:
über CMS_INCLUDE_OPTIONS
User: FIRSTDoku
Pass: FSdown_V2
Die Produkte dann einfach über eine contentSelect Funktion ausgeben, die den Rückgabewert der Combobox als Einschränkung auf die Kategorie benutzt.
Viele Grüsse aus Dortmund,
Holger Höbbel
Vielen Dank,
Ich habe noch ein Frage.
Das Objekt CMS_INCLUDE_OPTIONS liefert als Rückgabewert einen String zurück.
Wenn ich den Paramter "st_productCategories" in meiner Query setze, wird der Wert anscheinend nicht richtig gesetzt.
Wenn ich ein Number Feld definiere und dieses in der FUNCTION setze, funktioniert alles einwandfrei.
Muss ich den Wert "st_productCategories" noch in einen Number Wert umwandeln und wenn ja, wie mache ich das ?
<CMS_FUNCTION name="contentSelect" resultname="allproducts">
<CMS_PARAM name="schema" value="admProducts" />
<CMS_VALUE_PARAM name="category" value="st_productCategories" />
<QUERY entityType="products">
<FILTERPARAM parameter="category" datatype="java.lang.Integer" value="194"/>
<EQ attribute="product_categoriesList.fs_id" parameter="category"/>
<ORDERCRITERIA attribute="date" descending="0" />
</QUERY>
</CMS_FUNCTION>
</CMS_HEADER>
Gruß und vielen Dank
David
Hallo David,
hier müsste ein toNumber ausreichend sein, also
<CMS_VALUE_PARAM name="category" value="st_productCategories.toNumber" />
Vorausgesetzt, Du bekommst tatsächlich den String mit der ID zurück.
Tipp: Mit $CMS_VALUE(st_productCategories + " / " + st_productCategories.class)$ bekommst Du den Rückgabewert und seien Klasse ausgegeben.
Weiterer Tipp: Es ist gut möglich, dass st_productCategories.toNumber ein long und kein interger zurückgibt. Dann einfach im Query den Parametertyp [datatype="java.lang.Long"] entsprechend anpassen
Viele Grüsse aus Dortmund,
Holger
Die Methode toNumber liefert für den Typ CMS_INPUT_COMBOBOX keinen Wert zurück.
-------------------------------------------------------------------------------------------------------------
<CMS_INPUT_COMBOBOX name="st_productCategories" useLanguages="no">
<CMS_INCLUDE_CONTENT type="entries" table="admProducts.product_categories">
<LABEL lang="*">#row.name</LABEL>
</CMS_INCLUDE_CONTENT>
<LANGINFOS>
<LANGINFO lang="DE" label="Kategorien"/>
<LANGINFO lang="*" label="Categories"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
-------------------------------------------------------------------------------------------------------------
Das hier sollte klappen (wenn die ID des Datensatzes der kategory benötigt wird)
<CMS_FUNCTION name="contentSelect" resultname="allproducts">
<CMS_PARAM name="schema" value="admProducts" />
<CMS_VALUE_PARAM name="category" value="st_productCategories.value.getId()" />
<QUERY entityType="products">
<FILTERPARAM parameter="category" datatype="java.lang.Integer" value="194"/>
<EQ attribute="product_categoriesList.fs_id" parameter="category"/>
<ORDERCRITERIA attribute="date" descending="0" />
</QUERY>
</CMS_FUNCTION>
</CMS_HEADER>
Anmerkung: Es sollte anstelle von CMS_INCLUDE_CONTENT besser CMS_INCLUDE_OPTIONS verwendet werden.
Siehe auch Anmerkung ganz unten auf der Seite:
User: FIRSTDoku
Pass: FSdown_V2
Super vielen Dank.
Jetzt gehts
Hallo Herr Höbbel,
mir ist noch ein kleiner Fehler aufgefallen, dass das Sortieren der Datensätze nicht richtig funktioniert. Mit der Angabe <ORDERCRITERIA attribute="date" descending="0" /> werden alle Datensätze richtig aufsteigend nach dem Datum sortiert. Wenn ich die Sortierreihenfolge auf <ORDERCRITERIA attribute="date" descending="1" /> setze, werden die Daten willkürlich durcheinander sortiert, müssten aber absteigend sortiert werden. Ist dieses Problem schon bekannt oder mache ich etwas falsch?
Gibt es einen Workaround um meinen Result umzusortieren, z.B. revert des Results?
Schöne Grüße
David Zasada