PagesetterVerlinken

Guite edited this page Nov 12, 2014 · 2 revisions

== Pagesetter Verlinken == Um die verschiedenen Ansichten von Pagesetter aufzurufen, muss man wissen, wie sie verlinkt werden. Hier ist eine Liste der verschiedenen URLs, die man in Pagesetter benutzen kann: {| border=1 class="wikitable" |'''Liste''' |.../index.php?module=pagesetter |Der Basis-Link um Pagesetter als Startseite zu benutzen. Dieser Link zeigt die Listen-Ansicht des Standard-Publikations-Typ. |- | '''Liste''' | .../index.php?module=pagesetter&tid=T&topic=P&lang=L | Das gleiche wie oben, aber mit einigen Zusatzangaben. Man kann angeben, für welchen Publikations-Typ man die Liste sehen möchte, indem man mit tid die ID des Typs mit übergibt. Nach dem gleichen Schema kann man die Topic ID und auch die Sprache angeben (ansonsten wird die aktuelle Sprache des Users benutzt um die Liste zu filtern). All diese Parameter sind optional und können ganz nach Belieben vermischt werden. |- | '''Ansicht''' | .../index.php?module=pagesetter&func=viewpub&tid=T&pid=P | Dies ist der Link um eine bestimmte Publikation eines bestimmten Typs anzuzeigen. Auf jeden Fall müssen die Parameter tid (ID des Publikations-Typs) und pid (ID der Publikation) angegeben werden. |- | '''Drucken''' | .../index.php?module=pagesetter&func=printpub&tid=T&pid=P | Dies ist der Link um eine Publikation in der Druckansicht zu zeigen. Diese zeigt die Publikation ohne die PostNuke Blöcke an, ausserdem gibt es ein eigenes Template für diese Ansicht. Auch hier sind die Parameter tid und pid notwendig. |- | '''Editieren''' | .../index.php?module=pagesetter&func=pubedit&tid=T | Dieser Link zeigt auf die Erstellung einer neuen Publikation von dem Publikations-Typ tid. Das kann beispielsweise für einen Link zum Eintragen von neuen Publikationen benutzt werden, also die selbe Funktionalität, wie das Modul Submit_News bei den normalen PostNuke-News hat. |- | '''Editieren''' | .../index.php?module=pagesetter&func=pubedit&tid=T&goback=1 | Der gleiche Link um eine Publikation zu editieren. Danach wird der User zu der Seite zurückgeleitet, von der aus er diesen Link gefolgt ist. |- | '''Listen Editieren''' | .../index.php?module=pagesetter&func=pubList&tid=T | Dies ist der Link für die Liste der Publikationen (für die Editoren) und wird benutzt um die Publikationen zu verwalten. Wie üblich steht der Paramter tid für die ID des Publikations-Typs. |}

Hier eine kurze Beschreibung der verschiedenen Parameter einer URL:

{| border=1 class="wikitable" |'''tid''' |ID des Publikations-Typs. |- | '''pid''' | ID der Publikation bzw. Publikations-Instanz. |- | '''topic''' | ID des PostNuke Topics. |- | '''lang''' | ID der PostNuke Sprache. |- | '''tpl''' | Name eines Templates (um dieses anstelle des Standard-Templates zu nutzen). |- | '''pubcnt''' | Die Anzahl von Publikationen, die auf einer Seite gezeigt werden sollen. TIP &pubcnt=null zeigt alle Publikationen an, egal wieviele es sind. |- | '''goback''' | Wird benutzt um den User nach dem Editieren zurück zu der Seite zu leiten, von der er kam. Um diese Weiterleitung einzuschalten, wird dieser Parameter auf 1 gesetzt. Falls er nicht gesetzt ist, wird der User zu der Editoren-Liste von Publikationen geleitet. |}

Hier kann man sehen, welche Parameter für welche Funktionen funktionieren: {| border=1 class="wikitable" !'''Function''' !'''tid''' ! '''pid''' ! '''topic''' !'''lang''' ! '''tpl''' ! '''pubcnt''' |- | '''None''' | x | - | x | x | x | x |- | '''viewpub''' | x | x | - | - | x | - |- | '''printpub''' | x | x | - | - | x | - |- | '''dumppub''' | x | x | - | - | x | - |- | '''xmlpub''' | x | x | - | - | x | - |- | '''pubedit''' | x | x | - | - | - | - |- | '''publist''' | x | - | - | - | - | - |- | '''printlist''' | x | - | x | x | x | x |- | '''dumplist''' | x | - | x | x | x | x |- | '''xmllist''' | x | - | x | x | x | x |}

Hier eine Liste der Templates, die für einzelnen Funktionen benötigt werden: {| border=1 class="wikitable" !Funktion !Header&Footer !Def. Template |- | None | x | list |- | viewpub | - | full |- | printpub | - | print |- | dumppub | - | print |- | xmlpub | - | xml |- | pubedit | - | - |- | publist | - | - |- | printlist | x | list |- | dumplist | x | list |- | xmllist | x | list |}

=== Sortieren === Mit Pagesetter kann man die verschiedenen Listen von Publikationen über Parameter in den URLs steuern. Dies tut man einfach über orderby=feld-liste. Die Liste der Felder ist durch Kommas getrennt, die Felder heissen so, wie sie auch im Template heissen. Entweder FeldName oder core.coreFeldName. Die Reihenfolge des Sortierens ist per Standard aufsteigend, aber durch ein :desc hinter dem Feld-Namen ist dies auch absteigend möglich. Beispiel: Um absteigend nach Autor und danach nach dem Titel zu sortieren, gibt man orderby=core.author:desc,title an.

=== Filtern === Über die URLs ist es auch möglich die verschiedenen Publikations-Listen zu filtern. Mit “filter=expr” gibt man in der URL einen neuen Filter an, wobei expr ein Filter-Ausdruck ist. Filter-Ausdrücke sind durch Komma getrennte Listen von Filter-Termini. Jeder einzelne Term besteht aus einem FeldNamen, einem Operator und einem Operanden, getrennt durch Doppelpunkte. Ein Filter kombiniert dann alle seine Ausdrücke mit einem AND-Operator (macht eine Konjunktion daraus). Die verschiedenen Filter-Operatoren sind:

{| border=1 class="wikitable" |'''eq''' |Gleich (equal) |- | '''ne''' | Ungleich (not equal) |- | '''lt''' | Kleiner als (less than) |- | '''le''' | Kleiner gleich (less than or equal) |- | '''gt''' | Grösser als (greater than) |- | '''ge''' | Grösser gleich (greater than or equal) |- | '''like''' | Benutzt den LIKE-Operator der Datenbank um nach ‘%operand%’ zu suchen |- | '''null''' | Testet, ob das Feld gleich NULL ist. Sollte ohne einen Operanden benutzt werden - etwa wie filter=FieldName:null |- | '''nottnull''' | Testet, ob das Feld gleich NOT NULL ist. Sollte ohne einen Operanden benutzt werden - etwa wie filter=FieldName:notnull |- | '''sub''' | Testet, ob ein Listen-Feld gleich oder der Nachkomme des Operanden ist. Nur gültig für Listen-Felder. |}

Die Operanden auf der rechten Seite in einem Filter-Ausdruck kann @now enthalten, was durch das aktuelle Datum ersetzt wird. Das ist evtl. noch nicht so wirkich nützlich, weil es noch keine Unterstützung für die Operatoren Plus oder Minus gibt.

Man beachte, dass die Variablen in einer URL durch das kaufmännische Und-Zeichen “&” getrennt werden. Somit kann dieses auch dafür benutzt werden, verschiedene separate Filter gleichzeitig zu definieren, die dann mit OR verbunden werden, was eigentlich das Gegenteil der üblichen Interpretation des Und-Zeichens ist!

Bei der Benutzung von mehreren Filtern müssen diese in der Form “filterN=expr” angegeben, wobei N eine Integer-Zahl ist, die mit 1 startet. Mehrere Filter werden mit einem OR-Operator kombiniert (der komplette Filter also in eine disjunktive Normalform gebracht). Hier ein paar Beispiele:

{| border=1 class="wikitable" |filter=title:like:pagesetter |Findet alle Publikationen, wo das Titel-Feld das Wort “pagesetter” enthält |- | filter=age:ge:18 | Findet alle Publikationen, wo das Alter-Feld grösser oder gleich 18 ist |- | filter=age:ge:18,country:eq:DK | Findet alle Publikationen mit Alter grösser-gleich 18 und das Land gleich “DK” ist |- | filter1=age:ge:18,country:eq:DK&filter2=country:eq:NO | Findet alle Publikationen, wo (1) das Alter-Feld grösser-gleich 18 und das Land gleich “DK”, oder (2) das Land gleich “NO” ist |}

Nun nehmen wir an, wir haben Kategorien für Bücher wie im folgenden Bild gezeigt und nutzen diese Liste in einer Publikation für Bücher-Reviews, wo es ein Feld namens “category” gibt (das natürlich den Listen-Typ category benutzt).

/Datei:pagesetterlist.jpeg

Für Bücher benutzte Kategorien.

Nun können wir verschiedene Untermengen der Reviews bilden, hier drei Beispiele:

{| border=1 class="wikitable" |filter=category:eq:8 |Findet alle Reviews der Kategorie “Fiction”, aber keine Unterkategorien davon |- | filter=category:sub:8 | Findet alle Reviews der Kategorie “Fiction” und alle Untermengen davon (Science Fiction und Classics) |- | filter1=category:sub:11&filter2=category:eq:23 | Findet alle Reviews zu art(11) und drinks(23), aber keine nicht-alkoholischen Getränke (weil wir statt dem sub- den eq-Operator benutzen) |}

Es ist darüber hinaus möglich alle Einträge mit dem speziellen Listen-Wert “top” anzusprechen, also in einem Filter wie “filter=category:sub:top”. Indirekte Operanden

Das Obige funktioniert alles wunderbar, solange man hartkodierte URLs benutzt. Aber wenn man nun den User etwas in ein Formular eingeben lassen und dann danach filtern möchte, so muss man auf andere URL-Variablen zurückgreifen. Man möchte also zum Beispiel ein Keyword-Feld mit dem Like-Operator auf die Eingabe des Users in ein Formular filtern. Die Eingabe des Users wird in einem HTML-Input-Feld namens “keyword” eingegeben. Nun können wir die URL-Variable quasi als $keyword füttern, im Filter also filter=keywordField:like:$keyword.

Ein Beispiel-Template, welches dieses Feature nutzt, könnte in etwa so aussehen (hier ein list-header Template für eine Knowledge Base):

/Datei:pagesettersearch.jpeg

Knowledge Base
" method="POST">
Keyword:

    === Standards für den Editor festsetzen === Man kann dem Editor Standard-Werte für die Erstellung einer neuen Publikation zuweisen. Füge einfach “set_xxx=yyy” zu der URL hinzu und die User-definierte Variable xxx wird auf den Standard-Wert yyy gesetzt (an Stelle eines leeren Feldes). Für Kategorien-Felder muss man die ID der Kategorie nutzen. Beispiel: Nehme an, Du hast eine News-Publikation und eine Projekt-Publikation. Die News-Artikel können mit einigen Kategorien gruppiert werden. Das selbe gilt auch für Deine Projekte. Auf jeder Projekt-Seite kannst Du nun einen Link “Verwandte News” einfügen, das die Kategorie der News-Artikel auf die des aktuellen Projektes fest setzt. Im Projekt-Template sieht das in etwa so aus:

Projekte
... ... ...
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.