---
title: "pi_getPageLink($id)"
url: "https://www.typo3.net/d/66095-pi-getpagelinkid"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage","Links"]
created: "2007-07-31"
last_reply: "2007-08-02"
replies: 4
solved: false
page: 1
pages: 1
lang: "de"
---

# pi_getPageLink($id)

Extensions › Entwicklung · 4 Antworten · gestartet 2007-07-31

## Eröffnungsbeitrag

**eberhardt** · 2007-07-31 · [Beitrag #1](https://www.typo3.net/d/66095-pi-getpagelinkid/1)

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:

```php
$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:

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

über TS mittels Conditions füllen.

kann mir jemand helfen?

liebe Grüße

Eberhardt

## Antworten

### [#2](https://www.typo3.net/d/66095-pi-getpagelinkid/2) · steffenk · 2007-08-02

```php
$theUrl = $this->pi_getPageLink($this->conf['derPidparameter']);
```

Wo ist das Problem ?

### [#3](https://www.typo3.net/d/66095-pi-getpagelinkid/3) · eberhardt · 2007-08-02

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:

```php
/* 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:

```php
//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:

```html
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:

```php
"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:

```html
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

### [#4](https://www.typo3.net/d/66095-pi-getpagelinkid/4) · steffenk · 2007-08-02

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

```php
$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.

### [#5](https://www.typo3.net/d/66095-pi-getpagelinkid/5) · eberhardt · 2007-08-02

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

---

Quelle: „pi_getPageLink($id)“, typo3.net, https://www.typo3.net/d/66095-pi-getpagelinkid
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
