Mein Problem ist, dass das mnavi_end.html Template nicht angezeigt wird. Nur in der dritten (und letzten) Ebene meiner Seite.
Auch die zweite Ebene spinnt. Nimmt er wirklich nur die LETZTE Ebene?! Ich hätte gedacht, dass das mnavi_end.html Template immer am Ende der jeweiligen Ebene angezeigt wird um visuelle "Klammern" zu erstellen...
Nutze eine leicht abgewandelte (gesplittete Version):
Input: leer
Output:
Code: Alles auswählen
<?php
/* 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
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"),
"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', 'UL_STAGE', '3');
$tpl->set('d', 'LI_STAGE', '2');
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if( $idcat == $data['idcat'] && empty($data['sub']) ) {
$tpl->generate('templates/secondnavi_on.html', 0, 0); # AKTIVER PUNKT HAT KEINE SUBCATS
} elseif( $idcat == $data['idcat'] && !empty($data['sub']) ) {
$tpl->generate('templates/secondnavi_on_open.html', 0, 0); # AKTIVER PUNKT HAT SUBCATS
} elseif( $idcat != $data['idcat'] && is_array($data['sub']) && catIsChildOf($sel_idcat, $data['idcat']) ) {
$tpl->generate('templates/secondnavi_off_open.html', 0, 0); # PASSIVER PUNKT HAT SUBCATS
} else {
$tpl->generate('templates/secondnavi_off.html', 0, 0); # PASSIVER PUNKT HAT KEINE SUBCATS
}
if( is_array( $second_subdata ) ) {
$last_cat = end( $second_subdata );
if( $data['idcat'] == $last_cat['idcat'] ) {
$tpl->generate('templates/secondnavi_end.html', 0, 0);
} // end if
} // end if
$third_subdata = $data['sub'];
/* 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', 'UL_STAGE', '4');
$tpl->set('d', 'LI_STAGE', '3');
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if( $idcat == $data['idcat'] && empty($data['sub'])) {
$tpl->generate('templates/thirdnavi_on.html', 0, 0);
} elseif( $idcat == $data['idcat'] && !empty($data['sub']) ) {
$tpl->generate('templates/thirdnavi_on_open.html', 0, 0);
} elseif( $idcat != $data['idcat'] && is_array($data['sub']) && catIsChildOf($sel_idcat, $data['idcat']) ) {
$tpl->generate('templates/thirdnavi_off_open.html', 0, 0);
} else {
$tpl->generate('templates/thirdnavi_off.html', 0, 0);
}
if( is_array($third_subdata) ) {
$last_cat = end( $third_subdata );
if( $data['idcat'] == $last_cat['idcat'] ) {
$tpl->generate('templates/thirdnavi_end.html', 0, 0);
} // end if
} // end if
$forth_subdata = $data['sub'];
/* 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', 'UL_STAGE', '5');
$tpl->set('d', 'LI_STAGE', '4');
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if( $idcat == $data['idcat'] && empty($data['sub']) ) {
$tpl->generate('templates/mnavi_on.html', 0, 0);
} elseif( $idcat == $data['idcat'] && !empty($data['sub']) ) {
$tpl->generate('templates/mnavi_on_open.html', 0, 0);
} elseif( $idcat != $data['idcat'] && is_array($data['sub']) && catIsChildOf($sel_idcat, $data['idcat']) ) {
$tpl->generate('templates/mnavi_off_open.html', 0, 0);
} else {
$tpl->generate('templates/mnavi_off.html', 0, 0);
}
if( is_array($forth_subdata) ) {
$last_cat = end( $forth_subdata );
if( $data['idcat'] == $last_cat['idcat'] ) {
$tpl->generate('templates/mnavi_end.html', 0, 0);
} // end if
} // end if
$fith_subdata = $data['sub'];
/* 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', 'UL_STAGE', '6');
$tpl->set('d', 'LI_STAGE', '5');
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if( $idcat == $data['idcat'] && empty($data['sub']) ) {
$tpl->generate('templates/mnavi_on.html', 0, 0);
} else {
$tpl->generate('templates/mnavi_off.html', 0, 0);
}
if( is_array($fith_subdata) ) {
$last_cat = end($fith_subdata);
if( $data['idcat'] == $last_cat['idcat'] ) {
$tpl->generate('templates/mnavi_end.html', 0, 0);
} // end if
} // end if
} // end if
} // end foreach
} // end if
} // end if
} // end foreach
} // end if
} // end if
} // end foreach
} // end if
} // 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 */
/* Output buffer-contents */
echo $html;
?>