---
title: "PIvars (auch anderer PIs!) in Links behalten"
url: "https://www.typo3.net/d/80564-pivars-auch-anderer-pis-in-links-behalten"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage","Links"]
created: "2008-08-12"
last_reply: "2008-08-15"
replies: 6
solved: false
page: 1
pages: 1
lang: "de"
---

# PIvars (auch anderer PIs!) in Links behalten

Extensions › Entwicklung · 6 Antworten · gestartet 2008-08-12

## Eröffnungsbeitrag

**gebauer** · 2008-08-12 · [Beitrag #1](https://www.typo3.net/d/80564-pivars-auch-anderer-pis-in-links-behalten/1)

Hallo,

auf einer Seit habe ich zwei Plugins unterschiedlicher Extensions.
Die erste Extension stellt dabei Datensätze dar und die zweite zeigt passende Kommentare.
Nun muss ich im zweiten Plugin eine Link erzeugen um einen weiteren Parameter zu übergeben, dabei müssen die PIvars des ersten Plugins aber erhalten bleiben.

Angenommen ich habe folgende URL:
<http://127.0.0.1/cms/index.php?id=79&tx_jgbookshelf_pi2%5Bbookid%5D=1>

und nutze folgenden PHP-Code:
$this->pi_linkTP_keepPIvars ('some Link', array ('newParam' => 'test'));

bekommen ich folgenden Link:
<http://127.0.0.1/cms/index.php?id=79&no_cache=1&tx_jgratedcomments_pi1%5BnewParam%5D=test>

Das heißt die PIvar des anderen Plugins ist weg...

Das klingt für mich irgendwie nicht richtig. Sollten nicht ALLE PIvars erhalten bleiben? Ich kann doch nicht ahnen welche weiteren Parameter noch von anderen Plugins übergeben werden...
Wie kann ich das sicher programmieren, so dass immer alle PIvars erhalten bleiben?

Vielen Dank für Eure Hilfe,
Jan

## Antworten

### [#2](https://www.typo3.net/d/80564-pivars-auch-anderer-pis-in-links-behalten/2) · gebauer · 2008-08-12

Hallo,

also für meine Extension habe ich das gelöst... Allerdings ist es wieder eine "Handmade"-Lösung und ich frage mich ob es nicht eine "Typo3-konforme" Lösung gibt...

Hier jedenfalls meine Lösung, evtl. hilft es jemanden. Kritik ist auch erwünscht...

```php
  function pi_linkTP_keepAllPIvars ($str,$overrulePIvars=array(),$cache=0,$altPageId=0) {
   $params = t3lib_div::_GET();
   $new_para = array();
   foreach ($params as $pi => $piVars) {
    if (is_array ($piVars)) {
     foreach ($piVars as $key => $value) {
      $new_para[trim($pi,'][').'['.$key.']'] = $value;
     }
    }
   } 
   debugster ($this->prefixId,'PREFIX');
   foreach ($overrulePIvars as $key => $value ) {
      $new_para[$this->prefixId.'['.$key.']'] = $value;
   }
   debugster ($new_para,'Parameter');
   $res = $this->pi_linkTP($str,$new_para,$cache,$altPageId);    
   return $res;
  }
```

Grüße,
Jan

### [#3](https://www.typo3.net/d/80564-pivars-auch-anderer-pis-in-links-behalten/3) · Stoneage · 2008-08-12

> Das klingt für mich irgendwie nicht richtig. Sollten nicht ALLE PIvars erhalten bleiben? Ich kann doch nicht ahnen welche weiteren Parameter noch von anderen Plugins übergeben werden...

Das hat wohl etwas mit dem Namespace zu tun. Jede Extension hat ihren eigenen Namespace. So auch die PiVars. Andere PiVars haben darin nix zu suchen.

### [#4](https://www.typo3.net/d/80564-pivars-auch-anderer-pis-in-links-behalten/4) · gebauer · 2008-08-12

Hallo,

schon klar, dass ich im Plugin nicht ohne weiteres auf die anderen PIvars zugreifen kann. Aber wenn ich in einem Plugin einen Link auf die eigene Seite erstelle um einen zusätzliche Parameter anzuhängen, kappe ich mit der jetzigen (mir bekannten) Methode alle anderen Plugins.
In meinem Fall bliebe dann die Seite einfach leer... da das erste Plugin keinen Eingabewert mehr bekommt...
Gerade wegen der Namespaces und der Unabhängigkeit der Plugins voneinandern sollten doch die anderen PIVars autmatisch durchgeschleift werden, oder?

Grüße,
Jan

### [#5](https://www.typo3.net/d/80564-pivars-auch-anderer-pis-in-links-behalten/5) · Stoneage · 2008-08-12

> In meinem Fall bliebe dann die Seite einfach leer... da das erste Plugin keinen Eingabewert mehr bekommt...
> Gerade wegen der Namespaces und der Unabhängigkeit der Plugins voneinandern sollten doch die anderen PIVars

Tja, hättest Du mal mit POST-Variablen gearbeitet, wie das auch alle anderen Profis tun, dann hättest Du auch solche Probleme nicht.

[1] <http://www.diffen.com/difference/Get_vs_Post>

### [#6](https://www.typo3.net/d/80564-pivars-auch-anderer-pis-in-links-behalten/6) · gebauer · 2008-08-12

> Tja, hättest Du mal mit POST-Variablen gearbeitet, wie das auch alle anderen Profis tun, dann hättest Du auch solche Probleme nicht.

Nunja, vielen Dank für diesen konstruktiven Beitrag.
Der Unterschied zwischen POST und GET ist mir durchaus bekannt. Wieso das das Problem lösen würde allerdings nicht.

Interessanterweise verwenden auch "professionelle" Plugins wir tt_news und (ja sogar!) diese Forum (mm_forum) GET-Übergaben.

Mit freundlichen Grüßen,
Jan Gebauer

### [#7](https://www.typo3.net/d/80564-pivars-auch-anderer-pis-in-links-behalten/7) · Stoneage · 2008-08-15

> Interessanterweise verwenden auch "professionelle" Plugins wir tt_news und (ja sogar!) diese Forum (mm_forum) GET-Übergaben.

naja, tt_news als "profesionelle" Extensions zu bezeichnen halte ich für etwas gewagt.  :p

---

Quelle: „PIvars (auch anderer PIs!) in Links behalten“, typo3.net, https://www.typo3.net/d/80564-pivars-auch-anderer-pis-in-links-behalten
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
