also ausgangsbasis ist der code von OSI (dank an dieser stelle)
der die standard navigation über 5 level in level1 und level2-5 geteilt hat
damit lies sich schon prima level1 horizontal im header der rest dann links oder rechts vertikal abbilden. ich benötigte nun das ganze nochmal aufgteilt also 3 module level1 level2 und level3-5 um (siehe ende des ersten postings) eine 3geteilte navi abbilden zu können.
man benötigt also zunächst die geteilte hauptnavi von OSI
http://contenido.org/forum/viewtopic.php?t=10487
im 2. output dann den code auf die 2. Navigationsebene kürzen
sieht dann so aus
Code: Alles auswählen
<?php
/********************************************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Hauptnavigation
* Author(s) : Jan Lengowski, Andreas Lindner, 4fb
* Copyright : Contenido - four for business, Andreas Lindner
* Created : 12.08.2005
* Modifier : Oliver Simon, simon-oliver.com
* Modified : 27.11.2005
*********************************************************************/
/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/**
* Array storing alle the
* navigation data
*/
$navitems = array();
/* Template Instance */
$tpl = new Template;
$sql = "SELECT
A.idcat,
C.name,
C.public,
C.idcatlang,
C.startidartlang
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = '$sel_idcat'
ORDER BY
A.idtree";
$db->query($sql);
while ( $db->next_record() ) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext,
a.idartlang AS idartlang
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
#$db2->next_record();
$flag = false;
while ($db2->next_record()&&!$flag) {
if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
{
$flag = true;
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"idart" => $db->f("startidartlang"),
"public" => $db->f("public"),
"idcatlang" => $db->f("idcatlang"),
"target" => $target);
}
}
}
/* Create Navigation Array */
if(($sel_idcat=='')||($sel_idcat=='0')){
$cApiClient = new cApiClient($client);
$sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}
nav($sel_idcat);
/* Start Output buffer */
ob_start();
foreach ($navitems as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
/* 2. Navigation level */
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'].'&idart='.$data['idart']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navsecond_on.html');
}elseif(is_array($data['sub'])){
$tpl->generate('templates/navsecond_open.html');
} else {
$tpl->generate('templates/navsecond_off.html');
}
} // end if
} // end foreach
} // end if
} // end if
} // end foreach
/* Read out buffer */
$html = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html;
?>
Code: Alles auswählen
<?php
/*********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Hauptnavigation
* Author(s) : Jan Lengowski, Andreas Lindner, 4fb
* Copyright : Contenido - four for business, Andreas Lindner
* Created : 12-08-2005
* Modifier : Oliver Simon, simon-oliver.com
* Modified : 27-11-2005
* Modifier : Guido Unger (mvf), 'contenido'.funjumping.de
* Modified : 16-01-2005
* Changes : included 'startidartlang' for compatibility with stese's mr_464_org
modification to extract 3rd-5th level for seperat display
**********************************************/
/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/**
* Array storing alle the
* navigation data
*/
$navitems = array();
/* Template Instance */
$tpl = new Template;
$sql = "SELECT
A.idcat,
C.name,
C.public,
C.idcatlang,
C.startidartlang
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = '$sel_idcat'
ORDER BY
A.idtree";
$db->query($sql);
while ( $db->next_record() ) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext,
a.idartlang AS idartlang
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
#$db2->next_record();
$flag = false;
while ($db2->next_record()&&!$flag) {
if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
{
$flag = true;
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"idart" => $db->f("startidartlang"),
"public" => $db->f("public"),
"idcatlang" => $db->f("idcatlang"),
"target" => $target);
}
}
}
/* Create Navigation Array */
if(($sel_idcat=='')||($sel_idcat=='0')){
$cApiClient = new cApiClient($client);
$sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}
nav($sel_idcat);
/* -mvfbof- fetch third level array -> $thirdLevel */
foreach ($navitems as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
if (is_array($data['sub'])) {
$thirdLevel = $data['sub'];
}
} // end if
} // end foreach
/* -mvfeof- fetch third level */
/* Start Output buffer */
ob_start();
foreach ($thirdLevel as $key => $data) { // -mvf $thirdLevel statt $navitems
if (checkCatPermission($data['idcatlang'],$data['public'])) {
/* 2. Navigation level */
if (is_array($data['sub'])) { // -mvf überbrückt die 2. ebene
/* 3. Navigation level */
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'].'&idart='.$data['idart']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navthird_on.html');
}elseif(is_array($data['sub'])){
$tpl->generate('templates/navthird_open.html');
} else {
$tpl->generate('templates/navthird_off.html');
}
/* 4. Navigation level */
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'].'&idart='.$data['idart']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navfourth_on.html');
}elseif(is_array($data['sub'])){
$tpl->generate('templates/navfourth_open.html');
} else {
$tpl->generate('templates/navfourth_off.html');
}
/* 5. Navigation level */
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
if (checkCatPermission($data['idcatlang'],$data['public'])) {
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'].'&idart='.$data['idart']));
$tpl->next();
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navfifth_on.html');
} else {
$tpl->generate('templates/navfifth_off.html');
}
} // end if
} // end foreach
} // end if
} // end if
} // end foreach
} // end if
} // end if
} // end foreach
} // end if
} // end if
} // end if
} // end foreach
/* Read out buffer */
$html = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html;
?>
wichtig ist nur, dass alle 3 module in einem template sein müssen, denn der 'baum' wird 1x über das erste modul im input geregelt/abgefragt.
wer's brauchen kann
und hier der eigentliche erste thread mit der anfrage:
mvf hat geschrieben:habe das zwar hier schon mal gepostet aber im grunde ist es ja ein neuer request
ich möchte die geteilte hauptnavi 4.6.2.BETA von OSI nochmals teilen um diese 3 teile dann auch frei wie nachfolgend im layout positionieren zu können
ziel:ebene1 ist ja bereits fertig aus dem ursprungsmodul 'entkoppelt' und kann per html_template horizontal abgebildet werden, dann wirft das modul von OSI die ebene2-5 wie folgt ausCode: Alles auswählen
ebene1 - horizontal im header ebene2 - horizontal im header unter ebene1 ebene3 - vertikal untereinander links ebene4 - vertikal untereinander links ebene5 - vertikal untereinander links
wenn ich den 2.outputcode von OSI's modul nun um die ebene 3-5 kürze dann kann ich schon malCode: Alles auswählen
ebene1 - horizontal ebene2 - vertikal ebene3 - vertikal ebene4 - vertikal ebene5 - vertikal
abbildenCode: Alles auswählen
ebene1 - horizontal im header ebene2 - horizontal im header unter ebene1
allerdings geht es danach wie immer ich auch den 'dritten' output gestalte auf folgendes hinauskann mir da bitte jemand helfen ich sitze nun schon seit freitag abend dran und langsam ist es wirklich zum verzweifeln.Code: Alles auswählen
ebene1 - horizontal im header ebene2 - horizontal im header unter ebene1 ebene2 - vertikal ebene3 - vertikal ebene4 - vertikal ebene5 - vertikal
jeder hinweis ist willkommen, denn mir ist immer noch nicht ganz klar wie der code überhaupt arbeitet
ziel ist also die ebene2 aus dem 2. outputcode zu entkoppeln und einen dritten frei plazierbaren outputcode für ebene3-5 zu bekommen
merci vielmal und