Hallo,
es gibt ja schon viele Eintraege zum Thema "php_script" resp. "Parameter nach php" uebergeben, aber ich komme
trotzdem nicht weiter...bitte, bitte kann sich jemand mein
Problem einmal ansehen.
Was will ich loesen?
Ich habe ein bestehendes php script ("menu.inc") dass die navigation in HTML "regelt" und zwar mittels den php Aufrufen:
...
<BODY leftMargin=0 topMargin=0 MARGINHEIGHT="0" MARGINWIDTH="0">
<?php if (empty($currScript)) $currScript = "3"; ?>
...
<td>
<?php require 'menu.php'; ?>
</td>
Nun will ich das Ganze in typo3 einbinden und habe mir folgendes gedacht:
Im Setup wird der jeweilige Index der zum Menueintrag
gehoert, als Konstante abgelegt, das Template zur Seite erstelle ich nur einmal, via Konstanten soll der jeweilige
Index zur Navigation uebergeben werden.
Dann wollte ich mit PHP_SCRIPT mein "menu.inc" einbinden und habe mir die Beispiel fuer "PHP_SCRIPT" angesehen, "menu.inc" etwas umgeschrieben und versucht zuerst einfach einen String aus php zurueckzugeben... was auch alles funktioniert hat...nur ist mein "menu.inc" etwas komplizierter und es funktioniert so nicht.
Ich erlaube mir deshalb alles einmal anzugeben, vielleicht mache ich auch in php etwas falsch? (nicht syntax maessig, das pruefe ich schon).
Mein Setup sieht so aus:
-------------------------
# Default PAGE object:
page = PAGE
page.typeNum = 0
page.stylesheet = fileadmin/stylesheets/uto.css
...
page.config.includeLibrary = fileadmin/scripts/include.inc
page.10 = TEMPLATE
page.10 {
template = FILE
template.file=fileadmin/templates/
navigationTemplate.html
workOnSubpart = DOCUMENT_BODY
marks.PHP_CURRENT = TEXT
#marks.PHP_CURRENT.value = <?php if (empty($currScript)) "{$currScript}"; ?>
...
marks.PHP_INCLUDE = PHP_SCRIPT
marks.PHP_INCLUDE.file = fileadmin/templates/surprise.inc
}
So sieht include.inc aus
------------------------
<?php
include("fileadmin/templates/menu.inc");
?>
Und so surprise.inc
--------------------
Ist es korrekt die Variable aus dem Setup "$currScript" in den Funktionsaufruf user_getMenus($currScript) so zu uebergeben??? Wie komme ich aber zu dieser Variable???? Wird im Setup definiert und im Template ausgewertet!
<?php
$menu_object = new menu(); // New instance is created
$contentBefore = $this->cObjGetSingle($conf["cObj"],$conf["cObj."]);
$content = $contentBefore.$menu_object->user_getMenus($currScript);
$content = $this->stdWrap($content,$conf["stdWrap."]);
?>
Nun zum Script, dass anhand eines xx.css und einem Array die Navigationausgabe (mit Stype) festlegt: NUR wie bringe ich nun den return wert wieder ins typo3 rueber???
Wenn ich das nur mit einem einfachen String mache und diesen direkt setzte funktioniert das schon, dass Script sollte aber als return wert ins HTML Template so was wie
...
<tr>
<td class="MenuLevel0 NavActiv">
<a href="/menu.php?currScript=3" class="MenuLevel0 NavActiv">Huetten</a>
</td>
</tr>
...
je nach Index zurueckgeben.
Nun noch das php Script "menu.inc" dass alles auswerten und als Rueckgabewert obiges ausspucken sollte.
menu.inc
----------------------------------------------------------
<?php
class menu {
function user_getMenus($conf) {
$currScript = $conf;
$MenuStruktur = array(
"1" => array("Sektion" , "$PHP_SELF?currScript=1" ),
"1_1" => array("Wer sind wir?" , "" ),
"1_2" => array("Statuten" , "" ),
"1_3" => array("Vorstand" , "" ),
"1_3_1" => array("Mitglieder" , "usw" ),
);
foreach ($MenuStruktur as $MenuKey => $MenuItem) {
list ($MenuName, $MenuLink) = $MenuItem;
$ShowMenuItem = false;
$currLevel = substr_count($currScript, "_");
$MenuEbene = substr_count($MenuKey, "_");
if ($currLevel < $MenuEbene) {
if ($currLevel == 0) {
if ($currScript == substr($MenuKey,0,1)) {
$ShowMenuItem = true;
}
}elseif ($currScript == substr($MenuKey,0,(strpos($MenuKey,"_",$currLevel)+2))) {
$ShowMenuItem = true;
}
} elseif ($MenuEbene == 0) {
$ShowMenuItem = true;
}else {
if (substr($currScript,0,strpos($currScript,"_",$MenuEbene)) == substr($MenuKey,0,strpos($MenuKey,"_",$MenuEbene))) {
$ShowMenuItem = true;
}
}
}
// CSS-Style-Verwaltung der Menu-Ebenen (Struktur)
switch ($MenuEbene) {
case 0:
$Class = "MenuLevel0";
break;
case 1:
$Class = "MenuLevel1";
break;
case 2:
$Class = "MenuLevel2";
break;
case 3:
$Class = "MenuLevel3";
break;
default:
$Class = "MenuLevel4";
}
// Ausgeben des effektiven Menus
if ($ShowMenuItem && (($currLevel+1) >= $MenuEbene)) {
// Hier wird der Class-Style ergaenzt wenn wir auf dem current script stehen!
if ($currScript == $StrMenuKey) {
$Class .= " NavActiv";
} else {
$Class .= " NavInactiv";
}
return "<tr> <td class=$Class>" . "<a href=$MenuKey class=$Class> $MenuName</a>" .
"</td>" .
"</tr>";
} else {
return "So ein Kaese";
}
}
}
}
?>
Hat jemand einen Tipp worans liegen koennte, das
gar nichts zurueckgegeben wird??
Vielen, vielen Dank im Voraus!