Hauptmenü horizontal mit Untermenü vertikal!

farn75
Beiträge: 7
Registriert: Mi 28. Jan 2004, 14:14
Kontaktdaten:

Hauptmenü horizontal mit Untermenü vertikal!

Beitrag von farn75 » Do 11. Mär 2004, 16:24

Hallo,
ich habe das Modul von yodatortenboxer wie beschrieben eingesetzt.
Es klappt eigentlich prima!
Ausnahme bildet die 3. Ebene. Angenommen ich habe in Ebene 2 drei Menüpunkte, unter dem 1. Menüpunkt befinden sich weitere Seiten, die 3. Ebene. Nun werden die Menüpunkte der 3. Ebene erst nach der kompletten 2. Ebene angezeigt, d.h. nicht unter dem 1. Menupünkt, zu dem sie gehören.
Da ich kein PHP kann, bin ich hier ziemlich hilflos!
Bitte könnte mir jemand weiterhelfen?
Danke im vorraus!

Code: Alles auswählen

/****************************************************************** 
* 
* CONTENIDO MODUL 
* 
* Hauptnavigation - als unabhängiges Modul zur Unternavigation 
* 
* Zwei Module werden benötigt und hier beschrieben 
* 
* Mit Hilfe dieser zwei Module kann man zum Beispiel 
* eine Horizontale Hauptnavigation in einem Container 
* und eine vertikale Unternavigation in einem anderen Container 
* oder umgekehrt realisieren (oben Haupt- und links oder rechts Unternavigation. 
* 
* Um die Haupnnavigation oder Unternavigation horizontal einzustellen 
* kopiert die nav["" | "second" | "third"]_["off" | [on].html 
* nach nav["" | "second" | "third"]_h_["off" | [on].html 
* (z.B. cp navsecond_off.html navsecond_h_off.html 
* - liegen im Pfad .../contenido/cms/templates/) und 
* schmeisst dort die Tabellen-Tags raus (die stehen jetzt schon im Modul) 
* 
* Orginal 
* Modulname : Navigation 1.1 
* Author : Jan Lengowski 
* Copyright : Contenido - four for business 
* Created : 15-05-2003 
* Modified :26-05-2003 
* Modified : by herby 
* Modified : by yodatortenboxer 
* 
******************************************************************* 

/****************************************************************** 
*Hauptnavigation Eingabe: 
******************************************************************/ 

/** 
* Navigation 
* 
* INPUT 
* 
* @autor Jan Lengowski <Jan.Lengowski@4fb.de> 
* @copyright four for business AG 2003 
*/ 

?> 
<table cellspacing="0" cellpadding="0" cellpadding="4"> 

    <tr> 
        <td class="text">Baum wählen:</td> 
        <td> 
            <select name="CMS_VAR[0]"> 
            <option value="0">-- kein --</option> 
            <?php 

                $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 
                            C.idlang    = '".$lang."' AND 
                            B.idclient  = '".$client."' AND 
                            C.visible   = 1 AND 
                            A.level     = '0' 
                        ORDER BY 
                            A.idtree"; 

                $db->query($sql); 

                while ( $db->next_record() ) { 

                    if ( "CMS_VALUE[0]" == $db->f("idcat") ) { 
                        echo '<option selected="selected" value="'.$db->f("idcat").'">'.$db->f("name").'</option>'; 

                    } else { 
                        echo '<option value="'.$db->f("idcat").'">'.$db->f("name").'</option>'; 

                    } 
                } 

            ?> 
            </select> 
        </td> 
    </tr> 

</table> 

<?php 

/****************************************************************** 
*Hauptnavigation Ausgabe: 
******************************************************************/ 

<?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; 

?> 

/****************************************************************** 
* 
* Unternavigation Zweites benötigtes Modul 
*     -abhängig von der Hauptnavigation 
*     -als zweites freipositionierbares Modul einsetzbar 
*      
******************************************************************/ 

/****************************************************************** 
* Unternavigation Eingabe: bleibt Leer 
******************************************************************/ 

/****************************************************************** 
* Unternavigation Ausgabe: 
******************************************************************/ 

<?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'])) { 
$tmp_data2 = array(); 
$tmp_data2 = $data; 
} 
} // end for each 
echo '</td></tr></table>'; 
} // end if 

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

/* 3. 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']) { 
$tpl->generate('templates/navthird_h_on.html'); 
} else { 
$tpl->generate('templates/navthird_h_off.html'); 
} 
} // end foreach 
echo '</td></tr></table>'; 
} // end if ?>

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 15. Mär 2004, 15:28

versuch mal diese version

Code: Alles auswählen

/******************************************************************
*
* Unternavigation Zweites benötigtes Modul
*     -abhängig von der Hauptnavigation
*     -als zweites freipositionierbares Modul einsetzbar
*
******************************************************************/

/******************************************************************
* Unternavigation Eingabe: bleibt Leer
******************************************************************/

/******************************************************************
* Unternavigation Ausgabe:
******************************************************************/

<?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

farn75
Beiträge: 7
Registriert: Mi 28. Jan 2004, 14:14
Kontaktdaten:

Navigation

Beitrag von farn75 » Mi 17. Mär 2004, 16:37

Super, hat funktioniert. Vielen, vielen Dank! :D

Viele Grüsse

mediaholic
Beiträge: 19
Registriert: Sa 29. Nov 2003, 20:56
Kontaktdaten:

Beitrag von mediaholic » Mo 28. Jun 2004, 11:19

kann man dass irgendwo bewundern?

CenBells
Beiträge: 12
Registriert: Fr 27. Aug 2004, 08:49
Kontaktdaten:

Beitrag von CenBells » Fr 27. Aug 2004, 20:09

Hallo Leute,

ich würde das Modul gerne verwenden.
Module habe ich eingerichtet und die Hauptnavigation wird wunderbar angezeigt. Aber ich weiß nicht, warum die unternavigation nicht angezeigt wird.
Ich habe es einfach mal mit dem Standardtemplate von 4.4.4 versucht. Servicenavigation durch das neue modul ersetzt -> Horizontale hauptnavigation erscheint am oberen rand.
Hauptnavigation durch unternavigation ersetzt -> leider bleibt der container leer.

Weiß jemand einen rat?

Gruß
KEn

Fritz Scharrer
Beiträge: 6
Registriert: Do 21. Okt 2004, 18:38
Kontaktdaten:

Beitrag von Fritz Scharrer » Mo 1. Nov 2004, 02:44

Hinweis am Rande für alle:

Im Code oben war ein Fehler im php-code

Sollte wohl besser so lauten

Code: Alles auswählen

/******************************************************************
*
* Unternavigation Zweites benötigtes Modul
*     -abhängig von der Hauptnavigation
*     -als zweites freipositionierbares Modul einsetzbar
*
******************************************************************/

/******************************************************************
* Unternavigation Eingabe: bleibt Leer
******************************************************************/

/******************************************************************
* Unternavigation Ausgabe:
******************************************************************/

<?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 '<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>';
} // end if

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

Cyclist
Beiträge: 90
Registriert: Fr 11. Feb 2005, 14:08
Wohnort: Berlin
Kontaktdaten:

Beitrag von Cyclist » Mo 21. Feb 2005, 15:03

Was muss man ändern, wenn man eine 4. Navigationsebene benötigt? Hat da jemand eine Idee?

Danke im voraus.

Ich hatte es mal mit folgendem code probiert, bekomme bekomme dann aber ein rotes Lämpchen im Modul angezeigt:

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 '<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'] || is_array($data2['sub'])) { 
$tpl->generate('templates/navthird_h_on.html'); 
} else { 
$tpl->generate('templates/navthird_h_off.html'); 
} 
if (is_array($data2['sub'])) { 

echo '<tr><td>'; 
foreach ($data2['sub'] as $key3 => $data3) { 

/* 4. Navigations Ebene */ 
$tpl->reset(); 
$tpl->set('d', 'NAME', $data3['name']); 
$tpl->set('d', 'TARGET', $data3['target']); 
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data3['idcat'])); 
$tpl->next(); 

if ($idcat == $data3['idcat']) { 
$tpl->generate('templates/navfourth_h_on.html'); 
} else { 
$tpl->generate('templates/navfourth_h_off.html'); 
} 
} // end foreach 
echo '</td></tr>'; 
} // end if 

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

rominger
Beiträge: 4
Registriert: Mi 22. Jun 2005, 12:52
Kontaktdaten:

Re: Hauptmenü horizontal mit Untermenü vertikal!

Beitrag von rominger » Mi 22. Jun 2005, 13:46

farn75 hat geschrieben:Hallo,
ich habe das Modul von yodatortenboxer wie beschrieben eingesetzt.
Es klappt eigentlich prima!
Ausnahme bildet die 3. Ebene. Angenommen ich habe in Ebene 2 drei Menüpunkte, unter dem 1. Menüpunkt befinden sich weitere Seiten, die 3. Ebene. Nun werden die Menüpunkte der 3. Ebene erst nach der kompletten 2. Ebene angezeigt, d.h. nicht unter dem 1. Menupünkt, zu dem sie gehören.
Da ich kein PHP kann, bin ich hier ziemlich hilflos!
Bitte könnte mir jemand weiterhelfen?
Danke im vorraus!

Code: Alles auswählen

/****************************************************************** 
* 
* CONTENIDO MODUL 
* 
* Hauptnavigation - als unabhängiges Modul zur Unternavigation 
* 
* Zwei Module werden benötigt und hier beschrieben 
* 
* Mit Hilfe dieser zwei Module kann man zum Beispiel 
* eine Horizontale Hauptnavigation in einem Container 
* und eine vertikale Unternavigation in einem anderen Container 
* oder umgekehrt realisieren (oben Haupt- und links oder rechts Unternavigation. 
* 
* Um die Haupnnavigation oder Unternavigation horizontal einzustellen 
* kopiert die nav["" | "second" | "third"]_["off" | [on].html 
* nach nav["" | "second" | "third"]_h_["off" | [on].html 
* (z.B. cp navsecond_off.html navsecond_h_off.html 
* - liegen im Pfad .../contenido/cms/templates/) und 
* schmeisst dort die Tabellen-Tags raus (die stehen jetzt schon im Modul) 
* 
* Orginal 
* Modulname : Navigation 1.1 
* Author : Jan Lengowski 
* Copyright : Contenido - four for business 
* Created : 15-05-2003 
* Modified :26-05-2003 
* Modified : by herby 
* Modified : by yodatortenboxer 
* 
******************************************************************* 

/****************************************************************** 
*Hauptnavigation Eingabe: 
******************************************************************/ 

/** 
* Navigation 
* 
* INPUT 
* 
* @autor Jan Lengowski <Jan.Lengowski@4fb.de> 
* @copyright four for business AG 2003 
*/ 

?> 
<table cellspacing="0" cellpadding="0" cellpadding="4"> 

    <tr> 
        <td class="text">Baum wählen:</td> 
        <td> 
            <select name="CMS_VAR[0]"> 
            <option value="0">-- kein --</option> 
            <?php 

                $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 
                            C.idlang    = '".$lang."' AND 
                            B.idclient  = '".$client."' AND 
                            C.visible   = 1 AND 
                            A.level     = '0' 
                        ORDER BY 
                            A.idtree"; 

                $db->query($sql); 

                while ( $db->next_record() ) { 

                    if ( "CMS_VALUE[0]" == $db->f("idcat") ) { 
                        echo '<option selected="selected" value="'.$db->f("idcat").'">'.$db->f("name").'</option>'; 

                    } else { 
                        echo '<option value="'.$db->f("idcat").'">'.$db->f("name").'</option>'; 

                    } 
                } 

            ?> 
            </select> 
        </td> 
    </tr> 

</table> 

<?php 

/****************************************************************** 
*Hauptnavigation Ausgabe: 
******************************************************************/ 

<?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; 

?> 

/****************************************************************** 
* 
* Unternavigation Zweites benötigtes Modul 
*     -abhängig von der Hauptnavigation 
*     -als zweites freipositionierbares Modul einsetzbar 
*      
******************************************************************/ 

/****************************************************************** 
* Unternavigation Eingabe: bleibt Leer 
******************************************************************/ 

/****************************************************************** 
* Unternavigation Ausgabe: 
******************************************************************/ 

<?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'])) { 
$tmp_data2 = array(); 
$tmp_data2 = $data; 
} 
} // end for each 
echo '</td></tr></table>'; 
} // end if 

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

/* 3. 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']) { 
$tpl->generate('templates/navthird_h_on.html'); 
} else { 
$tpl->generate('templates/navthird_h_off.html'); 
} 
} // end foreach 
echo '</td></tr></table>'; 
} // end if ?>

2pauli
Beiträge: 20
Registriert: Do 16. Jun 2005, 13:00
Kontaktdaten:

In vertikaler Navi die aktive erste Ebene anzeigen

Beitrag von 2pauli » Fr 1. Jul 2005, 23:33

ich verwende die beiden Module um meine Hauptnavigation (1. Ebene) horizontal und die Unternavigation (2. und 3. Ebene) vertikal zu gestalten.

Damit man aber einen Überblick hat, in welcher Hauptnavi man sich befindet, möchte ich in dem Modul der Unternaviation oben gerne die Üebrschrift der 1. Ebene ausgeben. siehe hier: http://www.stw-riesa.de/

lamba
Beiträge: 7
Registriert: Fr 1. Jul 2005, 00:12
Kontaktdaten:

Beitrag von lamba » Sa 2. Jul 2005, 14:54

wieso funktioniert das bei euch so einwandfrei? bei mir zeigt er das zweite menu einfach nicht an... und ich weiss nicht wieso? muss man da noch wo anders was einstellen... ( habe contenido erst seit 2 tagen... ^^)

Es ist als würde das Zweite Modul (die vertikale) einfach keine Informationen bekommen... ich habe bereits die suchfunktion ausgiebig benutzt, und habe auch einen thread gefunden,... allerdings hat der user da die antwort gefunden ohne sie uns mitzuteilen...

also ich habe, die artikel, die kategorien online, gesammt besteht es aus 2 bäumen... mir fällt einfach nicht mehr ein...

halousi
Beiträge: 111
Registriert: Mi 30. Mär 2005, 15:31
Kontaktdaten:

Beitrag von halousi » Di 5. Jul 2005, 15:07

erst einmal vielen dank für diese geniale navigation!
habe jetzt nur ein problem mit den geschützten bereichen, sie funktionieren leider nicht mehr und werden zudem trotz schutz angezeigt?

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mi 6. Jul 2005, 15:28

lamba, hast du die Konfiguration durchgefuehrt? (Kategorie oder Artikel, je nachdem, wem du das Template zugewiesen hast)

mckinley
Beiträge: 2
Registriert: Mo 1. Aug 2005, 22:57
Kontaktdaten:

Fehlermeldung

Beitrag von mckinley » Mo 1. Aug 2005, 23:05

Tag allerseits.

Ich habe mich noch nicht seit langem mit Contenido befasst, d.h. also quasi Neuland für mich. Vorhin habe ich mich mal mit Mabo versucht, aber das ding ist sau unlogisch usw.

Nun möchte ich gerne eine Seite meines Kumpels mit Contenido realisieren.
Die Page hat einen Fixen Header in dem mit Gif's die Hauptlinks bzw. Hauptnavi vorgegeben ist.

Die Sublinks der jeweiligen Mainlinks, sollen dann in einem vertikalen Container erscheinen. Nun weiss ich nicht genau wie ich das Problem angehen soll.
Ich denke mit dem Modul von yodatortenboxer wäre ich sicher nicht auf dem flaschen Weg. Oder? :roll:

Nun habe ich ein neues Modul gemacht: "Hauptnavi" dort habe ich jeweils die Input und die Output codes rein gepostet. 1:1 übernommen...

Danach im Template dieses Modul auf Container 1 aktiviert.
Wenn ich mir aber jetzt das ganze anschaue, bekomme ich einen parse Fehler.

Code: Alles auswählen

Parse error: parse error, unexpected ')' in /home/supportp/public_html/cms/front_content.php(567) : eval()'d code on line 156
Könnt ihr mir helfen?
Hier noch der Link: http://www.support-pc.ch/cms/front_content.php?idcat=1

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Fehlermeldung

Beitrag von Halchteranerin » Di 2. Aug 2005, 07:25

mckinley hat geschrieben:Ich denke mit dem Modul von yodatortenboxer wäre ich sicher nicht auf dem flaschen Weg. Oder? :roll:
Du hast aber schon gesehen, dass da oben zwei Module (das eine mit Ein- und Ausgabe, und das andere nur mit Ausgabe) sind, oder? 'Tschuldige die bloede Frage, kann aber mal passieren ...

"Leuchten" alle Lampen gruen bei Modulein- und Ausgabe? Wenn nicht, dann ist etwas falsch kopiert worden. Ich habe jetzt keine Zeit, das zu testen, aber ich habe mal die Module einfach so bei mir reinkopiert, und sie leuchten zumindest gruen.

Dein Link nuetzt uebrigens nichts, weil wir auch nur den Parseerror zu sehen bekommen.

mckinley
Beiträge: 2
Registriert: Mo 1. Aug 2005, 22:57
Kontaktdaten:

Beitrag von mckinley » Di 2. Aug 2005, 20:40

"Leuchten" alle Lampen gruen bei Modulein- und Ausgabe? Wenn nicht, dann ist etwas falsch kopiert worden. Ich habe jetzt keine Zeit, das zu testen, aber ich habe mal die Module einfach so bei mir reinkopiert, und sie leuchten zumindest gruen.
jo die leuchten beide grün. in und output...
das es sich um zwei module handelt ist mir klar. die hauptnavi ein und ausgabe und dann die 2nd navi ausgabe.

richtig oder?

Gesperrt