---
title: "An einen Experten: Sauberes Vorgehen - Sysextension abändern"
url: "https://www.typo3.net/d/101969-an-einen-experten-sauberes-vorgehen-sysextension-abaendern"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage","Inhaltselemente"]
created: "2010-10-26"
last_reply: "2010-10-28"
replies: 2
solved: false
page: 1
pages: 1
lang: "de"
---

# An einen Experten: Sauberes Vorgehen - Sysextension abändern

Extensions › Entwicklung · 2 Antworten · gestartet 2010-10-26

## Eröffnungsbeitrag

**michael_h** · 2010-10-26 · [Beitrag #1](https://www.typo3.net/d/101969-an-einen-experten-sauberes-vorgehen-sysextension-abaendern/1)

Hallo zusammen,

ich verwende innerhalb einer selbst geschriebenen Extension zur Ausgabe von Bildern die standard-IMAGE-Funktion per Typoscript-Aufruf.
Da ich die Bild-Unterschrift als Bild-Überschrift ausgeben will, und dies innerhalb der Sysextension nicht vorgesehen ist (typo3\sysext\css_styled_content\pi1\class.tx_cssstyledcontent_pi1.php - function render_textpic), müsste ich diese Funktion der Sysextension anpassen. Wie das direkt gehen würde, ist mir klar. (Hier hatte jemand das identische Anliegen: [/d/52860-bildueberschrift-ueber-dem-bild](https://www.typo3.net/d/52860-bildueberschrift-ueber-dem-bild))

Mir ist auch klar, dass das keine saubere Lösung sein kann. (Sobald ein Typo-Update eingespielt wird, sind meine Änderungen ja wieder überschrieben.)

Wie gehe ich generell vor, um nur eine Funktion einer Sys-Extension auf sauberen Weg abzuändern bzw. zu erweitern? (Kann gerne eine Lösung sein, die nur für die eine, von mir erstellte Extension Gültigkeit hat.)

Würde mich sehr freuen, wenn mir jemand helfen kann. :o
Schöne Grüße
  Micha

## Antworten

### [#2](https://www.typo3.net/d/101969-an-einen-experten-sauberes-vorgehen-sysextension-abaendern/2) · jenses · 2010-10-27

render_textpic bietet einen **Hook** (zumindest in aktuellen TYPO3-Versionen), du kannst die Funktion also komplett ersetzen.
Ansonsten wäre noch die Möglichkeit, das Resultat per **XCLASS**ing zu manipulieren.

### [#3](https://www.typo3.net/d/101969-an-einen-experten-sauberes-vorgehen-sysextension-abaendern/3) · michael_h · 2010-10-28

Hallo Jenses,
vielen Dank, dass Du mich in die richtige Richtung "geschubst" hast. :-)
Was die Nutzung von Hooks anbelangt, war ich noch "recht unbedarft". Mir ist es aber nun gelungen, dass meine Extension die komplette Funktion render_textpic() über den Hook ersetzt. Funktioniert alles wunderbar. *strahl*

Ich hätte hierzu noch Verständnis-Fragen:
In meiner ext_localconf.php habe ich zur Nutzung des Hooks folgendes hinzugefügt:

```php
$extKey = 'NAME_MEINER_EXTENSION';
$TYPO3_CONF_VARS['EXTCONF']['css_styled_content']['pi1_hooks']['render_textpic'] = 'EXT:'.$extKey.'/hooks/class.tx_'.$extKey.'_hooks.php:tx_'.$extKey.'_hooks_tx_cssstyledcontent_pi1';
```

Der Hook am Anfang der Funktion render_textpic() von tx_cssstyledcontent_pi1 sieht folgendermaßen aus:

```php
function render_textpic($content, $conf){
// Look for hook before running default code for function
  if (method_exists($this, 'hookRequest') && $hookObj = $this->hookRequest('render_textpic')) {
    return $hookObj->render_textpic($content,$conf);
  }
...
```

...und die Funktion hookRequest() von tx_cssstyledcontent_pi1 sieht so aus:

```php
function hookRequest($functionName) {
  global $TYPO3_CONF_VARS;
  if ($TYPO3_CONF_VARS['EXTCONF']['css_styled_content']['pi1_hooks'][$functionName]) {
    $hookObj = t3lib_div::getUserObj($TYPO3_CONF_VARS['EXTCONF']['css_styled_content']['pi1_hooks'][$functionName]);
    if (method_exists ($hookObj, $functionName)) {
      $hookObj->pObj = $this;
      return $hookObj;
    }
  }
}
```

...nun meine angedrohten Fragen:
1. Sehe ich das richtig, dass nun generell immer meine Funktion render_textpic() genutzt wird, sobald meine Extension installiert ist? Auch wenn außerhalb meiner Extension per TypoScript IMGTEXT verwendet wird?
2. Gibt es eine Möglichkeit, dass mein render_textpic() nur bei IMGTEXT - Aufrufen innerhalb meiner Extension verwendbar ist?
3. Sehe ich das richtig, dass dieser Hook nur 1 x verwendet werden kann. Wenn nach meiner Extension eine andere geladen wird, die diesen Hook anspricht, wird meine Funktion render_textpic() generell nicht mehr verwendet?

Hoffe, dass sich jemand die Mühe macht, meine Fragen zu beantworten. :-) Würde mich sehr freuen!
...aber jetzt freue ich mich erst mal noch bisschen weiter, dass ich zum ersten mal in meinem Leben selber einen Hook verwendet habe. ...und das war gar nicht schwer. ;-)

Ciao
  Micha

---

Quelle: „An einen Experten: Sauberes Vorgehen - Sysextension abändern“, typo3.net, https://www.typo3.net/d/101969-an-einen-experten-sauberes-vorgehen-sysextension-abaendern
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
