---
title: "Kann eine userFunc in der localconf.php im Backend Seiteneigenschaften verarbeiten?"
url: "https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten"
source: "typo3.net"
tags: ["Allgemein","Frage","PHP"]
created: "2011-10-19"
last_reply: "2015-02-15"
replies: 8
solved: false
page: 1
pages: 1
lang: "de"
---

# Kann eine userFunc in der localconf.php im Backend Seiteneigenschaften verarbeiten?

Allgemein · 8 Antworten · gestartet 2011-10-19

## Eröffnungsbeitrag

**mostwanted** · 2011-10-19 · [Beitrag #1](https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten/1)

ich möchte gerne folgende condition im **pageTSconfig** verwenden:

**[userFunc = user_pageHasThisBackendLayoutAssigned(5)]**

dafür hab ich **zu testzwecken** in der localconf.php folgende userFunc definiert:

```php
function user_pageHasThisBackendLayoutAssigned($cmd) {
	if ($cmd == 5) {
		return true;
	} else {
		return false;
	}
}
```

...das funktioniert schon mal wie gewünscht/erwartet.

**die userFunc soll im endeffekt folgendes machen:**

*wenn ich im backend eine seite im seitenbaum auswähle, soll die userFunc überprüfen, ob der seite das backend_layout zugewiesen wurde, das der userFunc übergeben wird. falls nicht, soll überprüft werden, ob in den übergeordneten Seiten ein backend_layout_next_level entsprechend zugewiesen wurde.*

**FRAGE:** (wie) kann ich in der localconf.php auf die entsprechenden felder zugreifen?

habe u.a. versucht auf methoden der klasse t3lib_BEfunc zuzugreifen, aber das funktioniert irgendwie nicht. die t3lib_div kann ich in der localconf.php anscheinend verwenden, aber die bringt mir glaub ich in meinem fall nicht weiter, oder?

## Antworten

### [#2](https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten/2) · SomehowLost · 2011-10-19

Hallo,

Infos zur Sete findest du in der globalen Variable $GLOBALS.
Schau einfach mittels print_r($GLOBALS); wo das alles genau steht und prüfe dann entsprechend darauf.

Viele Grüße

### [#3](https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten/3) · mostwanted · 2011-10-19

> **SomehowLost schrieb:**
>
> Infos zur Sete findest du in der globalen Variable $GLOBALS.
> Schau einfach mittels print_r($GLOBALS); wo das alles genau steht und prüfe dann entsprechend darauf.

danke für deine antwort.

ich schätz ich kann in der localconf.php kein print_r($GLOBALS) sinnvoll ausführen, oder?

### [#4](https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten/4) · SomehowLost · 2011-10-19

oh ja, stimmt.
aber vielleicht hilft dir das weiter:
[/d/106197-condition-fuer-backend-layout](https://www.typo3.net/d/106197-condition-fuer-backend-layout)

Gruß

### [#5](https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten/5) · mostwanted · 2011-10-19

das würd mir im frontend (typoscript) weiterhelfen. aber im backend (tsconfig) bringt das leider nichts.

> **SomehowLost schrieb:**
>
> oh ja, stimmt.
> aber vielleicht hilft dir das weiter:
> [/d/106197-condition-fuer-backend-layout](https://www.typo3.net/d/106197-condition-fuer-backend-layout)
>
> Gruß

### [#6](https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten/6) · mostwanted · 2011-10-19

ich hab jetzt schon mal über $GLOBALS['TYPO3_DB'] datenbankabfragen in der localconf.php zustande gebracht.

jetzt bräucht ich nur noch die uid der seite, auf der ich mich im seitenbaum im backend (page module) befinde, dann sollt mein problem zu lösen sein!

wie komm ich zur uid der aktuellen seite im seitenbaum?

ich kann (bzw. weiss es nicht wie es geht) in der localconf.php wie gesagt leider die $GLOBALS nicht debuggen...

### [#7](https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten/7) · mostwanted · 2011-10-20

mit t3lib_div::_GET('id') kann man in der seitenübersicht (columns) die uid der aktuellen seite auslesen.

leider funktioniert das an folgenden stellen nicht:
- seiteneigenschaften
- neues content element auf der seite erstellen
- ein content element auf der seite bearbeiten

gibts vielleicht in der $GLOBALS einen eintrag, der mir helfen kann die uid (oder noch besser die rootline) der aktuellen seite zu erhalten? (leider weiss ich nicht, wie man die $GLOBALS in der localconf.php debuggen kann)

### [#8](https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten/8) · Gernott · 2013-11-01

Hallo mostwanted,
hast du das problem lösen können?

Ich habe viel gegooglet und nur das gefunden (funktioniert nur im Frontend - nicht in der page TSconfig):

```php
if($GLOBALS["TSFE"]->page["backend_layout"] > 0 && $GLOBALS["TSFE"]->page["backend_layout"] == $layout) {
    return true;
}
```

Ich habe auch $GLOBALS mit print_r ausgegeben. Dort findet man diese Werte nicht. Außer nach einem POST, was nicht weiterhilft.

### [#9](https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten/9) · Typo3_Chris · 2015-02-15

Ich hatte heute das gleiche Problem und wollte jetzt mal meine Lösung posten.
Über die LocalConfiguration.php binde ich meine userFunc ein (In Page TSConfig geht includeLibs nicht):

```php
if(file_exists(dirname(__FILE__).'/../fileadmin/Template/php/user_backend_layout.php')) {
require_once(dirname(__FILE__).'/../fileadmin/Template/php/user_backend_layout.php');
}
```

Die UserFunc im Page TSConfig:

```typoscript
#True if backend_layout or backend_layout_next_level of the parent pages (traverses the tree to root page)
[userFunc = user_searchBackendLayout(14)]
        #e.g add a content element layout
	TCEFORM.tt_content.layout.addItems {
	22 = New Layout 
	}
[global]
```

Und der Inhalt von user_backend_layout.php:

```php
function user_searchBackendLayout( $searched_backend_layout ) {
	//Check if current page backend_layout is set
	$cur_backend_layout = user_getBackendLayout();
	if ( ! empty( $cur_backend_layout ) ) {
		if ( $searched_backend_layout == $cur_backend_layout ) {
			return true;
		} else {
			return false;
		}
	} else {
		$pid = user_getCurrentPID();
		//Traverse the page tree till no pid is set or $pid = 0 (root)
		while ( ! empty( $pid ) ) {
			$cur_backend_layout = user_getBackendLayoutNextLevelByPID( $pid );
			//backend_layout_next_level not set, traverse up
			if ( empty( $cur_backend_layout ) ) {
				$pid = user_getParentPIDByPID( $pid );
				continue;
			}

			//Backend_Layout found
			if ( $cur_backend_layout == $searched_backend_layout ) {
				return true;
			}

			//backend_layout_next_level but does not match
			break;
		}
	}

	return false;
}

function user_getBackendLayoutByPID( $pid ) {
	$res = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( "backend_layout", "pages", "UID = " . $pid );

	return $res["backend_layout"];
}

function user_getBackendLayoutNextLevelByPID( $pid ) {
	$res = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( "backend_layout_next_level", "pages", "UID = " . $pid );

	return $res["backend_layout_next_level"];
}

function user_getParentPIDByPID( $pid ) {
	$res = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( "pid", "pages", "UID = " . $pid );

	return $res["pid"];
}


function user_getBackendLayout() {
	$cur_backend_layout = null;
	if ( is_numeric( $GLOBALS["SOBE"]->pageinfo["backend_layout"] ) ) {
		return $GLOBALS["SOBE"]->pageinfo["backend_layout"];
	}

	$cur_backend_layout = user_getBackendLayoutByPID( user_getCurrentPID() );
	if ( is_numeric( $cur_backend_layout ) ) {
		return $cur_backend_layout;
	}

	return $cur_backend_layout;
}

function user_getCurrentPID() {
	$pid = null;

	if ( is_numeric( $GLOBALS["SOBE"]->viewId ) ) {
		//$GLOBALS["SOBE"]->viewId - is set if the content element is opened from the page view
		$pid = $GLOBALS["SOBE"]->viewId;
	} else if ( is_numeric( $_REQUEST["popViewId"] ) ) {
		//$_REQUEST["popViewId"] - is set if the content element is opened from e.g "Save Button"
		$pid = $_REQUEST["popViewId"];
	} else if ( is_numeric( $GLOBALS["SOBE"]->id ) ) {
		//Is set on the page properties view
		$pid = $GLOBALS["SOBE"]->id;
	} else {
		file_put_contents( "/usr/www/www.nova-wings.com/backend_layout.txt", print_r( $GLOBALS, true ) );
	}

	return $pid;
}
```

Das finden der PID war erstaunlich schwierig. SOBE->pageinfo["id"] ist nicht immer gesetzt und auch sonst hab ich keine "schöne" Option gefunden die PID zu bekommen. Bisher scheine ich mit meiner Lösung aber alle Fälle abzudecken.

Vg,
Chris

---

Quelle: „Kann eine userFunc in der localconf.php im Backend Seiteneigenschaften verarbeiten?“, typo3.net, https://www.typo3.net/d/107830-kann-eine-userfunc-in-der-localconfphp-im-backend-seiteneigenschaften-verarbeiten
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
