2TeiligeNavi - Überschrift für Subnavi

Gesperrt
innotech
Beiträge: 33
Registriert: So 7. Mär 2004, 20:55
Kontaktdaten:

2TeiligeNavi - Überschrift für Subnavi

Beitrag von innotech »

Hallo Leute,

habe folgendes Problem: hab das unten nageführte Modul so angepasst, dass es in mein Layout passt und die Navigation sieht nun folgendermaßen aus (siehe http://www.gym-st-rupert.at/cms).

Nun möchte ich ober der Subnavigation auf der linken seite noch die jeweilige Kategorie anzeigen lassen. Bin daran aber bis jetzt gescheitert ;-( Bin leider nicht so fit in PHP

Kann mir da vielleicht jemand weiterhelfen!?!?

Lg, Inno

Hauptnavigation OUTPUT:

Code: Alles auswählen

<?php 
// Hauptnav 
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname : Navigation 1.1 
* Author : Jan Lengowski 
* Copyright : Contenido - four for business 
* Created : 15-05-2003 
* Modified : 26-05-2003 
************************************************/ 

if ( !is_object($db2) ) { 
$db2 = new DB_Contenido; 
} 

/** 
* Check if a category is child 
* of another category 
* 
* @return boolean true/false 
* @author Jan Lengowski <Jan.Lengowski@4fb.de> 
* @copyright four for business AG 2003 
*/ 
function catIsChildOf($id, $idparent) { 

global $cfg, $client, $lang; 

$db = new DB_Contenido; 

$parent = $id; 

while ( $parent != 0 ) { 

$sql = "SELECT 
a.parentid 
FROM 
".$cfg["tab"]["cat"]." AS a, 
".$cfg["tab"]["cat_lang"]." AS b 
WHERE 
a.idclient = '".$client."' AND 
b.idlang = '".$lang."' AND 
a.idcat = b.idcat AND 
a.idcat = '".$parent."'"; 

$db->query($sql); 
$db->next_record(); 

$parent = $db->f("parentid"); 

if ($parent == $idparent) { 
return true; 
} 

} 

return false; 

} 

if ( catIsChildOf($idcat, CMS_VALUE[0]) ) { 
$sel_idcat = $idcat; 
} else { 
$sel_idcat = CMS_VALUE[0]; 
} 

/* 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; 

/** 
* Recursive function for creating 
* the navigation array 
* @param Int $idcat Category id 
*/ 
function nav($idcat) { 

global $navitems, $client, $lang, $cfg; 

$db = new DB_Contenido; 
$db2 = new DB_Contenido; 

$sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'"; 

$db->query($sql); 
$db->next_record(); 

$parentid = $db->f("parentid"); 

if ( $parentid == 0 ) { 

if ( $idcat != CMS_VALUE[0] ){ 

$navitems = array(); 

$sql = "SELECT 
A.idcat, 
C.name 
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 = 'CMS_VALUE[0]' 
ORDER 
BY A.idtree"; 

$db->query($sql); 

while ($db->next_record()) { 

/* Check for external redirects... */ 
$sql = "SELECT 
a.external_redirect AS ext 
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 
b.is_start = '1' AND 
c.idclient = '".$client."' AND 
c.idcat = b.idcat AND 
a.idart = b.idart AND 
a.idlang = '".$lang."'"; 

$db2->query($sql); 
$db2->next_record(); 

$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 

$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"), 
"name" => $db->f("name"), 
"target" => $target); 
} 

} 

return true; 
} 

$sql = "SELECT 
A.idcat, 
C.name 
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 = '$parentid' 
ORDER BY 
A.idtree"; 

$db->query($sql); 

while ($db->next_record()) { 

/* Check for external redirects... */ 
$sql = "SELECT 
a.external_redirect AS ext 
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 
b.is_start = '1' AND 
c.idclient = '".$client."' AND 
c.idcat = b.idcat AND 
a.idart = b.idart AND 
a.idlang = '".$lang."'"; 

$db2->query($sql); 
$db2->next_record(); 

$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 

$tmp_nav[$db->f("idcat")] = array("idcat" => $db->f("idcat"), 
"name" => $db->f("name"), 
"target" => $target); 
} 

$tmp_nav[$idcat]["sub"] = $navitems; 
$navitems = $tmp_nav; 

/* Function call */ 
nav($parentid); 

} // end function 

$sql = "SELECT 
A.idcat, 
C.name 
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 
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 
b.is_start = '1' AND 
c.idclient = '".$client."' AND 
c.idcat = b.idcat AND 
a.idart = b.idart AND 
a.idlang = '".$lang."'"; 

$db2->query($sql); 
$db2->next_record(); 

$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 

$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"), 
"name" => $db->f("name"), 
"target" => $target); 
} 

/* Create Navigation Array */ 
nav($sel_idcat); 

/* Start Output buffer */ 
ob_start(); 

echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td>'; 

foreach ($navitems as $key => $data) { 
/* 1. Navigations Ebene */ 
$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'])); 
$tpl->next(); 

if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
$tpl->generate('templates/navfirst_h_on.html'); 
} else { 
$tpl->generate('templates/navfirst_h_off.html'); 
} 
if (is_array($data['sub'])) { 
$tmp_data = array(); 
$tmp_data = $data; 
} // end if 
} // end foreach 
echo '</td></tr></table>'; 

/* Read out buffer */ 
$html = ob_get_contents(); 

/* Clean buffer */ 
ob_end_clean(); 

/* Output buffer-contents */ 
echo $html; 

?> 
Subnavigation OUTPUT

Code: Alles auswählen

<?php 
if (is_array($tmp_data['sub'])) { 
$data = $tmp_data; 
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td>'; 
foreach ($data['sub'] as $key => $data) { 

/* 2. Navigations Ebene */ 
$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'])); 
$tpl->next(); 

if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
$tpl->generate('templates/navsecond_h_on.html'); 
} else { 
$tpl->generate('templates/navsecond_h_off.html'); 
} 
if (is_array($data['sub'])) { 

echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td>'; 
foreach ($data['sub'] as $key2 => $data2) { 
/* 3. Navigations Ebene */ 
$tpl->reset(); 
$tpl->set('d', 'NAME', $data2['name']); 
$tpl->set('d', 'TARGET', $data2['target']); 
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data2['idcat'])); 
$tpl->next(); 

if ($idcat == $data2['idcat']) { 
$tpl->generate('templates/navthird_h_on.html'); 
} else { 
$tpl->generate('templates/navthird_h_off.html'); 
} 
} // end foreach 
echo '</td></tr></table>'; 
} // end if 

} // end for each 
echo '</td></tr></table>'; 
} // end if  ?>
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

such mal nach location string
das modul läßt sich sicher so umbauen das nur der name der aktuellen aktiven kategorie ausgegeben wird... (ich glaub man müsste nur die while schleife entfernen )
*** make your own tools (wishlist :: thx)
innotech
Beiträge: 33
Registriert: So 7. Mär 2004, 20:55
Kontaktdaten:

Beitrag von innotech »

Hi Emergence!

Erstmal danke für deine Antwort und den Tip!

Hab's jetzt mal soweit gebracht, dass über der Subnavigation ein Element aus der Hauptnavi angzeigt wird.
Leider ist es jetzt noch so, dass es immer der letzte Eintrag aus der Hauptnavi angezeigt wird, d.h. ich bräuchte eine eine if-Bedingung an der Stelle, wo ansonsten die foreach-Schleife steht, oder!?!?

Kannst du mir vielleicht da nochmal weiterhelfen? Thx a lot!

Lg, Inno

der modifizierte Output fürs die Subnavi:

Code: Alles auswählen

<?php
if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
$tpl->generate('templates/navfirst_h_on.html'); 
} else { 
$tpl->generate('templates/navfirst_h_off.html'); 
} 
if (is_array($data['sub'])) { 
$tmp_data = array(); 
$tmp_data = $data; 
} // end if 

if (is_array($tmp_data['sub'])) { 
$data = $tmp_data; 
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td>'; 

foreach ($data['sub'] as $key => $data) { 

/* 2. Navigations Ebene */ 
$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'])); 
$tpl->next(); 

if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
$tpl->generate('templates/navsecond_h_on.html'); 
} else { 
$tpl->generate('templates/navsecond_h_off.html'); 
} 
if (is_array($data['sub'])) { 

echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td>'; 
foreach ($data['sub'] as $key2 => $data2) {
/* 3. Navigations Ebene */ 
$tpl->reset(); 
$tpl->set('d', 'NAME', $data2['name']); 
$tpl->set('d', 'TARGET', $data2['target']); 
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data2['idcat'])); 
$tpl->next(); 

if ($idcat == $data2['idcat']) { 
$tpl->generate('templates/navthird_h_on.html'); 
} else { 
$tpl->generate('templates/navthird_h_off.html'); 
} 
} // end foreach 
echo '</td></tr></table>'; 
} // end if 

} // end for each 
echo '</td></tr></table>'; 
} // end if  ?>
Gesperrt