Zum Inhalt springen

pi_getPageLink($id)

Erstellt am 31. Juli 2007 · 4 Antworten · letzte Antwort am 2. August 2007

Tags: Frage

eberhardt ·

Hallo Forum,

habe eine eigene extension, die im php-code zwecks einer Detailansicht eine Seite aufruft, auf der ein "detailviewer" liegt.

mit der "hardcodierten" Anweisung:

$theUrl = $this->pi_getPageLink(pid der Detailseite)

klappt das auch stabil.

Jetzt möchte ich die extension auf verschiedenen Seiten nutzen, also unterschiedliche Seiten aufrufen und dazu die Variable $pid:

$theUrl = $this->pi_getPageLink($pid)

über TS mittels Conditions füllen.

kann mir jemand helfen?

liebe Grüße

Eberhardt

eberhardt ·

Hi steffenk,

vorab: REAL-URL ist geschaltet und für meherer Domains konfiguriert...
sodann:
die extension besteht aus zwei Teilen: tx.myext.p1 und tx.myext.p2

In die function main($content,$conf) habe ich jeweils eingefügt:

/* nach Hachmeister*/

	$this->conf=$conf;	
		 // Preconfigure the typolink
    $this->local_cObj = t3lib_div::makeInstance("tslib_cObj");
    $this->local_cObj->setCurrentVal($GLOBALS["TSFE"]->id);
    $this->typolink_conf = $this->conf["typolink."];
    $this->typolink_conf["parameter."]["current"] = 1;
    $this->typolink_conf["additionalParams"] =
    $this->cObj->stdWrap($this->typolink_conf["additionalParams"],
    $this->typolink_conf["additionalParams."]);

    unset($this->typolink_conf["additionalParams."]);

    // Configure caching

    $this->allowCaching = $this->conf["allowCaching"]?1:0;
    if (!$this->allowCaching) {
      $GLOBALS["TSFE"]->set_no_cache();

    }

		// catch the page-ID fromTS:
	$pid = intval($this->cObj->stdWrap($conf['pid'], $conf['pid.']));

tx.myext.p1 besorgt die LISTENANSICHT einer Artikelgalerie mit einem (Popup-)Detaillink zu jedem Item:

//URL
$theUrl = $this->pi_getPageLink(($pid),"",Array("uid" => $gallery_uids[$img_count]));
//Link
$detail_link = "<a href=\"#\" onClick=\"mb_openPic('t3lib_div::locationHeaderUrl($theUrl)','Detailansicht', 'width=600,height=520,status=0,menubar=0,scrollbars=yes');\">";

das klappt soweit für alle definierten Domains gut: die Variable wird in TS über [PIDinRootline = mypid]- Conditions definiert und entsprechnd übergeben. Es ergibt sich folgender Pfad:

http://www.mydomain.de/verzeichnis/t3lib_div::locationHeaderUrl(de/mypage.html?uid=12345)

tx.myext.p2 besorgt die DETAILANSICHT, holt alle Infos aus der DB u. a. auch Thumbnails für Artikelvarianten. Der entsprechende Thumbnail-Link sieht derzeit wie folgt aus:

"wrap" => "<span class=\"sPic\"><a href=\"".$this->pi_getPageLink(($pid),"",Array($this->extKey."_bi" => $i,"uid" => $article_uid))."\">|</a></span>"

und das klappt dann nimmer mehr nich und gibt den Pfad falsch aus:

http://www.mydomain.de/de/mypage.html?my_gallery_bi=1&uid=12345%29

ich ahne, dass an der Stelle -------->pi_getPageLink($id) nicht das Richtige ist und ich mit header('Location: '.t3lib_div::locationHeaderUrl($url)); arbeiten muss, weiss aber nicht, wie der Link damit korrekt aussehen müsst.

für einen Tipp sehr dankbar

eberhardt

steffenk ·

das liegt nur daran, das Du den Link falsch baust:

$this->pi_getPageLink(($pid),"",Array(
  $this->prefixId."[bi]" => $i,
  $this->prefixId."[uid]" => $article_uid
))

Natürlich tauchen diese parameter nur in den piVars von pi2 auf, willst Du sie auf pi1 beziehen, musst Du den prefix entsprechend ändern.

eberhardt ·

Hi steffenk,

danke für deine prompte Antwort. Ok, der Code ist wohl nicht die saubere typo-Art,
aber da es bislang, vor der Umstellung auf mehrere Domains stabil lief, habe ich den Code erst einmal belassen und den Fehler WO GANZ ANDERS gefunden:
Auf der Seite des Popups liegt ein TS-template, welches ein
blankes HTML-inkludiert. Dort hatte ich die -->>> Rootlevel-Flag markiert. :o
Die habe ich rausgenommen und alles funktioniert wie gewünscht.

Trotzdem vielen Dank für deinen Einsatz!

eberhardt