Liebes Forum,
als jemand, der keinerlei Ahnung von MySQL hat, stehe ich vor einem Problem.
Ich möchte der Extension "seminars" in TS einen Wert übermitteln, und zwar die uid eines Datensatzes. Es soll der Datenatz gefunden werden, der im Feld accreditation_number ein "x" stehen hat.
So habe ich mir das gedacht:
### uid holen:
temp.featured = CONTENT
temp.featured {
table = tx_seminars_seminars
pidInList = 33
select {
where = accreditation_number = 'x'
andWhere = hidden=0
andWhere = deleted=0
selectFields = uid
}
}
Und dann noch:
### uid einfügen:
plugin.tx_seminars_pi1.showSingleEvent < temp.featured
Das funktioniert nicht, da seminars an dieser Stelle einen Integer-Wert erwartet, aber CONTENT bekommt. Ich habe zwar in der TSRef den Hinweis gefunden, dass es den Datentyp "int" gibt, allerdings hilft mir das noch nicht weiter.
Was fehlt da? Ist der Abfragekram in temp.featured so überhaupt richtig? Wie bekomme ich einen Integer-Wert übergeben?
Viele Grüße,
Morgenthau
Hallo,
da musst du die seminars schon ändern, dass man da alles übergeben kann, sonst wird das nichts
georg
just2b schrieb
Hallo,
da musst du die seminars schon ändern, dass man da alles übergeben kann, sonst wird das nichts
georg
Hallo, danke für die schnelle Antwort.
Ich müsste also die Beschränkung auf Integer-Werte in der Ext. selbst aufheben?
M.
Danke, dann werde ich mich mal mit wem zusammensetzen, der das kann.
Viele Grüße,
Morgenthau
Lösung
temp.featured = CONTENT
temp.featured {
table = tx_seminars_seminars
select {
where = accreditation_number LIKE 'x'
pidInList = 33
selectFields = uid
}
renderObj = TEXT
renderObj.field = uid
}
lib.featured = COA
lib.featured {
stdWrap.if.isTrue.cObject < temp.featured
10 < plugin.tx_seminars_pi1
10 {
what_to_display = seminar_list
showSingleEvent.override.cObject < temp.featured
pages = 33
recursive = 2
hideFields = category,accreditation_number,credit_points,organizers,eventsnextday,uid
}
}
und die änderung auf stdWrap mittels patch in der extension in
\ext\seminars\pi1\class.tx_seminars_pi1.php ~238
$singleEvent = $this->cObj->stdWrap($this->conf['showSingleEvent'], $this->conf['showSingleEvent.']);
if ($singleEvent) {
$this->showUid = $singleEvent;
lg georg
Hi,
du weißt, dass der Seminarmanager schon die Möglichkeit mitbringt, dass man die Seminar-UID fest konfigurieren kann, die angezeigt werden soll? (Nur, falls das auch das Problem lösen würde.)
Oliver
Hallo,
was genau heißt "fest konfigurieren"? Ist das mit einer Abfrage dieser Art: where = "accreditation_number = 'x'" möglich?
Viele Grüße,
Morgenthau.
Nein, das nicht.
Aber du kannst im Plugin einstellen, das hier die Einzelansicht des Seminars #42 angezeigt werden soll.
Wie sieht denn dein Usecase genau aus? Benutzt du das x als Marker, um ein bestimmtes Seminar anzuzeigen, oder ist das eine echte Akkreditierungsnummer bei euch, die mal dem einen und mal dem anderen Seminar gegeben wird?
Oliver
oliverklee schrieb
Aber du kannst im Plugin einstellen, das hier die Einzelansicht des Seminars #42 angezeigt werden soll.
Genau, mittels showSingleEvent.
oliverklee schriebWie sieht denn dein Usecase genau aus? Benutzt du das x als Marker, um ein bestimmtes Seminar anzuzeigen, oder ist das eine echte Akkreditierungsnummer bei euch, die mal dem einen und mal dem anderen Seminar gegeben wird?
Ich nutze das x als Marker, um eine bestimmte Veranstaltung separat anzuzeigen.
Nur als Anmerkung: Die Lösung, die just2b mir gebastelt hat, macht genau, was ich brauche.
Viele Grüße,
Morgenthau.
Hallo "Morgenthau",
> Nur als Anmerkung: Die Lösung, die just2b mir gebastelt hat, macht genau, was ich brauche.
Ich weiß. :-)
Eigene Änderungen an der Extension haben nur den Nachteil, dass sie futsch sind, wenn du die Extension updatest (z.B. auf den nächsten Bugfix-Release). Daher sind Lösungen, bei denen du die Extension nicht zu ändern brauchst, günstiger.
Viele Grüße
Oliver
Hi,
oliverklee schrieb
Eigene Änderungen an der Extension haben nur den Nachteil, dass sie futsch sind, wenn du die Extension updatest (z.B. auf den nächsten Bugfix-Release). Daher sind Lösungen, bei denen du die Extension nicht zu ändern brauchst, günstiger.
Ja, das ist mir schon klar. Aber wenn ich Dich richtig verstanden habe, wäre mein Problem mit Bordmitteln nicht zu lösen gewesen, oder?
Viele Grüße,
Le M.
Hallo Oliver,
generell wär es schön wenn alles via TS auch stdWrap hätte. das ist in 3 Zeilen gemacht, ich kenne nur die Ext zuwenig, deswegen mein stupider hack.
hier die funktionierende version:
$singleEventTS = $this->cObj->stdWrap($this->conf['showSingleEvent'], $this->conf['showSingleEvent.']);
$singleEventFlex = '';
if ($this->hasConfValueInteger('showSingleEvent', 's_template_special')) {
$singleEventFlex = $this->getConfValueInteger(
'showSingleEvent',
's_template_special'
);
}
$singleEvent = ($singleEventTS) ? $singleEventTS : $singleEventFlex;
if ($singleEvent) {
$this->showUid = $singleEvent;
} else {
$this->showUid = $this->piVars['showUid'];
}
georg
Hallo Morgenthau,
naja, das hängt davon ab, ob du im Plugin (in den Flexforms) das Seminar auswählen willst (was geht) oder ausschließlich im Seminardatensatz (was nicht geht).
Oliver