---
title: "parseFunc wird nur 1x ausgeführt"
url: "https://www.typo3.net/d/111133-parsefunc-wird-nur-1x-ausgefuehrt"
source: "typo3.net"
tags: ["Allgemein","Frage"]
created: "2012-06-27"
last_reply: "2012-07-19"
replies: 3
solved: false
page: 1
pages: 1
lang: "de"
---

# parseFunc wird nur 1x ausgeführt

Allgemein · 3 Antworten · gestartet 2012-06-27

## Eröffnungsbeitrag

**eisstern** · 2012-06-27 · [Beitrag #1](https://www.typo3.net/d/111133-parsefunc-wird-nur-1x-ausgefuehrt/1)

Hallo,

ich habe mir für den RTE bzw. das HTML-Element eine zusätzliche Parsefunktion geschrieben. Sie erstellt Links zu Einträgen einer selbstentwickelten Extension.

Das Script funktioniert grundsätzlich schon einmal. Allerdings habe ich das Problem, dass es nur korrekt funktioniert, solange der Tag <link_archiv> nur genau ein mal in diesem Contentblock vorkommt. Sind mehrere vohrhanden, weil z.B. die Überschrift und ein mehr-Link verlinkt werden sollen, so wird die Überschrift korrekt als Link verarbeitet, aber alle weiteren Links werden mit Nichts ersetzt. Die Funktion weiß also dass da etwas zu parsen ist, aber liefert ein leeres Ergebnis zurück.

Hat jemand einen Denkanstoß für mich?

Die Codes dazu:

```typoscript
// and add the <link_archiv>
tt_content.text.20.parseFunc.tags {
	link_archiv < lib.parseFunc.tags.link
	link_archiv.stripNL = 0
	link_archiv = PHP_SCRIPT 
	link_archiv {
		file = fileadmin/templates/scripts/link_archiv_parser.php
	}
	parseFunc.constants = 1
}
tt_content.html.parseFunc.tags.link_archiv < tt_content.text.20.parseFunc.tags.link_archiv
```

```php
$text = $this->cObj->getCurrentVal();

$parameters = explode(' ', $this->cObj->parameters['allParams']); 
$num_params = count($parameters);

if ($num_params > 0 && !empty($parameters[0])) {

	require_once(PATH_tslib.'class.tslib_content.php');

	$this->cObj = t3lib_div::makeInstance('tslib_cObj');

	// Link erzeugen

	$link['parameter'] = $parameters[0];
	$link['target'] = '_self';
	$link['additionalParams'] = '&tx_ritbpwarchive_pi1[view]=single&tx_ritbpwarchive_pi1[uid]='.$parameters[1];

	$content = $this->cObj->typolink($text, $link);
}
```

## Antworten

### [#2](https://www.typo3.net/d/111133-parsefunc-wird-nur-1x-ausgefuehrt/2) · eisstern · 2012-07-03

Auch wenn ich ungern pushe, aber ich habe das Problem leider immer noch. Hat keiner eine Idee?

### [#3](https://www.typo3.net/d/111133-parsefunc-wird-nur-1x-ausgefuehrt/3) · jenses · 2012-07-05

Sorry, aber ich kann dir nur dringendst einen PHP-Grundkurs empfehlen,
das Script ist einfach nur totaler Schrott.

Schon mal was von einer Schleife (while()/foreach()) gehört?
Gibt es einen bestimmten Grund dafür, daß du $this->cObj überschreibst?

### [#4](https://www.typo3.net/d/111133-parsefunc-wird-nur-1x-ausgefuehrt/4) · eisstern · 2012-07-19

Halle jenses,

danke für deine Antwort. Du hast natürlich Recht dass das überschreiben des cObj totaler Quatsch ist... Ich weiß nicht einmal wann ich es "kaputt eingefügt" habe. Nach all der Zeit am Projekt war ich nur noch blind.
Und das war auch schon das ganze Problem.

Eine foreach oder while wird hier nicht benötigt, da dies von alleine mit der parcefunc erledigt wird.

Also Ergebnis:

```php
$text = $this->cObj->getCurrentVal();

$parameters = explode(' ', $this->cObj->parameters['allParams']); 
$num_params = count($parameters);

if ($num_params > 0 && !empty($parameters[0])) {

	// Link erzeugen

	$link['parameter'] = intval($parameters[0]);
	$link['target'] = '_self';
	$link['additionalParams'] = '&tx_ritbpwarchive_pi1[view]=single&tx_ritbpwarchive_pi1[uid]='.intval($parameters[1]);

	$content = $this->cObj->typolink($text, $link);
}
```

---

Quelle: „parseFunc wird nur 1x ausgeführt“, typo3.net, https://www.typo3.net/d/111133-parsefunc-wird-nur-1x-ausgefuehrt
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
