Zum Inhalt springen

rootline einer anderen Seite anzeigen

Erstellt am 16. Juli 2008 · 11 Antworten · letzte Antwort am 17. Juli 2008

Tags: Frage

dyne ·

Ist es möglich per TS die rootline einer Seite x anzuzeigen, die nicht die aktive Seite ist?

Also das normale rootline-Menü kenn ich. Ich hab da schon versucht die Seite mit der Eigenschaft begin zu setzen, aber damit ging es nicht.

Also ich bin auf Seite 1 und möchte die Rootline von Seite 2 anzeigen.

Kann mir jemand helfen?

steffenk ·

das geht nur mit einem anderen Menü, also special = directory. Das Ergebnis sollte aber gleich sein.

dyne ·
steffenk schrieb

das geht nur mit einem anderen Menü, also special = directory. Das Ergebnis sollte aber gleich sein.

Nein, da wird dann garnichts angezeigt. directory zeigt doch eigentlich die Unterseiten an (es sind keine vorhanden in diesem fall) und nicht die übergeordneten, oder nicht?

steffenk ·

das stimmt, die Ausgangsseite wird nie mit angezeigt.
Rootline (sowie Sitemap) gehen aber nur von der root aus.

Dann musst Du Dir das zusammensetzen

10 = COA
# Ausgangsseite
10.10 = TEXT
10.10.value = ...
10.20 = HMENU
10.20.special = directory
usw
dyne ·

Das Problem dabei ist, dass ich das nicht "per Hand" bauen kann, da die Seite für die die rootline angezeigt werden soll variabel ist. Es handelt sich um die backPid von tt_news.

Es gibt z.B. folgende 3 Seiten:

PfadA/SeiteA/
PfadB/SeiteB/
Detailansicht

Die Seiten SeiteA und SeiteB enthalten jeweils News in einer Listenansicht und linken beide auf die Seite Detailansicht.

Diese soll dann nicht die eigene rootline im Breadcrumb-Menü anzeigen, sondern die Rootline der backPid + Artikelname.
Das mit dem Artikelnamen hab ich schon hinbekommen, aber die "fremde" rootline nicht.

steffenk ·

schon mal über sowas nachgedacht?

10 = COA
# Ausgangsseite
10.10 = TEXT
10.10.dataWrap = DB:pages:{GPvar:tx_ttnews|backpid}:title
10.10.wrap3 = <p>PAGE&nbsp;{|}
10.10.insertData = 1

10.20 = HMENU
10.20.special = directory
10.20.special.value.data = GPvar:tx_ttnews|backpid
10.20.insertData = 1
usw
dyne ·

Ich versteh noch nicht ganz deinen Versuch immer wieder "directory" da einzubauen. Es geht ja NUR um die übergeordneten Seiten der Seite.

Also einer einer von uns beiden steht auf der Leitung 😃

dyne ·

Weil es sehr viele Pfade sind, die auch von Redakteuren gepflegt werden sollen, die aber keine News-Plugins konfigurieren müssen sollen.

dyne ·

Also, ich zeig nochmal kurz wie das von der Struktur her sein soll.

PfadA/SeiteA
PfadB/SeiteB
Detailansicht

Redkateure können auch neue Seiten und Unterseiten anlegen, die ebenfalls auf die Detailansicht zeigen. Dazu kopieren sie nur ein News-List-Plugin von einer anderen Seite und ändern die Parameter für die Listendarstellung. Die Ziel-Detailseite bleibt immer gleich.

Wenn jeder Pfad eine eigene Detailansicht bekommen würde, hieße das viel mehr Arbeit für die Redakteure.
- Es muss zusätzlich eine neue Seite angelegt werden.
- Dort muss das News-Single-Plugin platziert und konfiguriert werden.
- Das List-Plugin muss auf das neue Single-Plugin verweisen.
Das möchte ich den Redakteuren nicht zumuten.

Deshalb noch einmal zu meinem eigentlichen Problem:

Ich möchte die Rootline einer anderen Seite auf der aktuellen anzeigen lassen, wobei die andere Seite tx_ttnews[backPid] ist.

Meine Überlegung ist, man müsste ja nur folgendes machen:
Lies die übergeordnete Seite von backPid aus (Tabellenfeld pid).
Lies von dieser Seite die übergeordnete Seite aus.
Lies von dieser Seite die übergeordnete Seite aus.
usw.
Versteckte Seiten, Sysfolder, "Nicht im Menü", usw muss nicht beachtet werden!

Ich frage mich ob man das besser per TS oder per PHP-Script löst.

dyne ·

Lösung:

special = userdefined
special.file = fileadmin/scripts/simulateRootline.php

simulateRootline.php

<?php
	$end = FALSE;
	$news = t3lib_div::GPvar('tx_ttnews');
	$actPage = $news['backPid'];
	$sql = "SELECT * FROM pages WHERE uid = '".$actPage."'";
	$res_id = mysql_query($sql);
	$tmp[] = mysql_fetch_assoc($res_id);
	while($end == FALSE){
		$sql = "SELECT pid FROM pages WHERE uid = '".$actPage."'";
		$res_id = mysql_query($sql);
		$pid = mysql_fetch_assoc($res_id);
		if($pid['pid']){
		    $sql = "SELECT * FROM pages WHERE uid = '".$pid['pid']."'";
			$res_id = mysql_query($sql);
			$tmp[] = mysql_fetch_assoc($res_id);
			$actPage = $pid['pid'];
		}else{
		    $end = TRUE;
		}
	}
	$menuItemsArray = array_reverse($tmp);
	array_shift($menuItemsArray);
?>

Danke für deine Hilfe, steffen