Im folgenden möchte ich die einzelnen Bestandteile kurz erläutern, da einige Tricks notwendig sind.
Zuerst muss man sich überlegen, dass man der Forschungsdatenbank entweder den XQL Parameter ''xql=Stichwort~~"parameter = () ? "xql=Stichwort~~\"" + keyword + "\"" : "LfdNr=" + projectId
Nun gibt es in Python auch den ternären Operator, d.h. in Python sähe das so aus: "xql=Stichwort~~\"" + keyword + "\"" if else "LfdNr=" + projectId
Das funktioniert in Plone/TAL auf dem CMS der Universität aber leider nicht (oder ich habe die Syntax nicht korrekt hinbekommen), weshalb man einen Trick mit einem Array anwenden muss.
("a", "b")[]
Hier wird entweder ''"a"'' zurückgegeben, oder ''"b"'' in Abhängigkeit davon, ob ''
... len(projectid) == 0 ...
Kurz rekapituliert, je nachdem wie diese Bedingung evaluiert, wollen wir entweder nach Stichwort filtern:
str("xql=Stichwort~~\"") + keyword + str("*\"")
oder eben ein spezifisches Projekt ausgeben:
str("LfdNr=") + projectid
Weiterer Trick: Wir ergänzen hier an dieser Stelle bei der Stichwortabfrage noch einen ''*'' nach dem ''keyword'', falls kein Stichwort übergeben wurde, wird dann die Liste aller Projekte ausgegeben, anstatt keines. Damit das funktioniert, verwenden wir an dieser Stelle im HTML single Quotes, anstatt der Double Quotes, damit das Escapen einfacher wird, da wir für die Forschungsdatenbank ''xql=Stichwort~~"
(str("LfdNr=") + projectid, str("xql=Stichwort~~\"") + keyword + str("*\""))[len(projectid) == 0]
und verpacken das ganze in eine TAL-Anweisung:
Damit kann dann in den Parametern der zusätzliche Parameter ''additionalparams'' eingebaut werden, der entweder das Stichwort abfragt, oder eben ein bestimmtes Projekt.
Jetzt kann dann das Dynamic Document (nennen wir es ''forschungsthema-details-nach-stichwort'') mit folgenden Parameterkombinationen aufrufen: ''forschungsthema-details-nach-stichwort?keyword=Brennstoffzellen'' oder auch ''forschungsthema-details-nach-stichwort?projectId=8076''. Somit kann man auf einer HTML-Seite dann die erstgenannten Links einbindungen und Ergebnislisten, gefiltert nach Stichwort ausgeben.
--- //[[hermann@informatik.uni-freiburg.de|Christoph Hermann]] 2012/09/20 16:20//
{{tag>techniker plone tf-infoportal xsltrans parameter}}