Zum Inhalt springen

websiteportfolio und Thumbnails in Single Ansicht

Erstellt am 27. November 2007 · 5 Antworten · letzte Antwort am 29. November 2007

Tags: Bilder, Links, Frage

dabjoern ·

Hi Leute,

ich habe die Extension websiteportfolio am Laufen. Soweit funktioniert alles ganz gut. Jetzt habe ich einer Referenz mehrere Bilder zugeordnet und möchte sie auf der Detailansicht (Single Ansicht) anzeigen. Hat man mehrere Bilder eingebunden, so wird der Marker THUMBNAIL mit einer Vorschau der weiteren Bilder ersetzt. Klickt man auf ein Thumbnail, so soll das Bild vergrößert dargestellt werden (Marker SCREENSHOT).

Jetzt das Problem: die Verlinkung der Thumbnails stimmt nicht. Die URL sieht zur Zeit so aus:

http://www.domain.de/referenzen_detailansicht/bild/0.html

Im Link fehlt ein Teil. Es handelt sich dabei um die aktuell ausgewählte Referenz, d.h. die ID (...) der aktuellen Referenz wird nicht mit übergeben.

Hat jemand eine Idee, an welcher Stelle ich im Code etwas fixen muss?

Grüße und danke.
dabjoern

dabjoern ·

Hi auch,

ich habe mir jetzt die Datei class.tx_websiteportfolio_pi1.php angeschaut. In der Funktion getSingleMarkerArray() werden die Links zusammengebaut:

$markerArray['###THUMBNAILS###'] .= $this->pi_linkTP_keepPIvars($this->cObj->IMAGE($img), $piVars, 1, 1, $GLOBALS['TSFE']->id);

Ich habe ein wenig rumgesucht, um pi_linkTP_keepPIvars zu verstehen. Dabei fand ich den folgenden Aufbau:

pi_linkTP_keepPIvars ($str, $overrulePIvars=array(), $cache=0, $clearAnyway=0, $altPageId=0)

Soweit ich weiß, steht der erste Parameter für den Link Text, was in diesem Fall das Thumb an sich ist. Den zweiten Parameter verstehe ich nicht, es heißt hier "overrulePIvars". Was nützt so ein overrule? Die weiteren Parameter scheinen in diesem Fall nicht von Belang zu sein. Höchstens der letzte wieder, der in meinem Fall mit der pid der aktuellen Seite gefüllt wird.

Meines Erachtens fehlt dem Link die showUID oder so was ähnliches - halt die ID der aktuell betrachteten Seite. Wie bekomme ich die da rein?

Danke und Grüße
dabjoern

dabjoern ·

So bin wieder etwas weiter. Habe jetzt den Marker umgeschrieben:

$markerArray['###THUMBNAILS###'] .= $this->pi_linkTP_keepPIvars($this->cObj->IMAGE($img), array('showUid' => $this->piVars['showUid'], 'shot' => $this->piVars['shot']), true);

Der Link enthält jetzt die showUid. Toll! Aber leider wird nicht die richtige ID für shot angehangen. Obwohl eine foreach Schleife durchlaufen wird, ist bei mir $this->piVars['shot'] immer Null. Wie bekomme ich das nun wieder hin?

EDIT: Ich habe es nun mal quick and dirty gemacht (obwohl, mmh, vielleicht nur dirty):

$i = 0;
foreach ($shots as $shot) {
  $piVars['shot'] = $i++;
  $markerArray['###THUMBNAILS###'] .= $this->pi_linkTP_keepPIvars($this->cObj->IMAGE($img), array('showUid' => $this->piVars['showUid'], 'shot' => ($i-1)), true);
}

Die Schleife ist schon vorhanden gewesen. Warum ich nicht $piVars['shot'] nutzen kann, geht mir nicht in den Kopf. Kann man hier was optimieren?

Grüße
dabjoern

P.S. Das ist mein 300. Eintrag im Forum :p

einpraegsam.​net ·
dabjoern schrieb

Den zweiten Parameter verstehe ich nicht, es heißt hier "overrulePIvars". Was nützt so ein overrule?

pi_linkTP_keepPIvars in der TYPO3 API:
http://typo3.org/fileadmin/typo3api-4.0.0/df/d32/classtslib__pibase.html#ced904553926a21061f3a0778aa52a3d

overrulePIvars:
Array of values to override in the current piVars. Contrary to pi_linkTP the keys in this array must correspond to the real piVars array and therefore NOT be prefixed with the $this->prefixId string. Further, if a value is a blank string it means the piVar key will not be a part of the link (unset)

Im Prinzip werden also alle GET Paramater mit keepPIvars erhalten. Wenn du nun weitere GET Parameter hinzufügen oder vorhandene löschen willst, kannst du das mit overrulePIvars erledigen:

array(
   'showUID' => $uid
)

PS: Glückwunsch zum dreihundertsten Eintrag 😃

dabjoern ·

Hallo wunschtacho,

danke für den Glückwunsch und deine Antwort. Weißt du, was ich nicht ganz verstehe? Dzu sagst, mit override kann ich

nun weitere GET Parameter hinzufügen oder vorhandene löschen

Ich verstehe nicht, warum ich dem Skript die IMHO bereits bekannten Variablen $this->piVars['showUid'] und $this->piVars['shot'] mitteilen muss (abgesehen davon, dass letztere Variable leer ist und ich mir mit diesem $i-1 dreckig helfen musste)... Ich werde mal dem Developer schreiben.

Grüße
dabjoern

dabjoern ·

Hi,

ich habe mit dem Entwickler der Extension Michiel Roos E-Mail Kontakt gehabt. Das war seine letzte Antwort:

I've looked a bit harder at the problem.

I can now reproduce the behavior you describe. It only occurs when you
don't use any category. This is a bug in the code of course. I have put
it on the todo for the next version.

You can work around this by creating at least one category and assigning
all recors to this category.

Also, damit wäre das Problem gelöst.

EDIT: Falls weiter Probleme auftreten, soll man hier posten:

http://www.teknowlogic.org/portfolio/

Grüße
dabjoern