geteilte Navigation

Gesperrt
bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

geteilte Navigation

Beitrag von bipi » Di 13. Jul 2010, 11:33

hallo
ich verwende diese geteilte Navigation in 4.8.8 und möchte direkt im code den Standard Navigationsbaum festlegen, also nicht erst in den Kategorieeigenschaften den Navigationsbaum festlegen,

Input

Code: Alles auswählen

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

?> 
mein _root Navibaum hat die idcat 1, ich finde einfach nicht heraus wo ich das ändern muss. vielen vielen Dank

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: geteilte Navigation

Beitrag von McHubi » Di 13. Jul 2010, 14:56

Die im Input festgelegte id-cat wird ja im output unter anderem hier übergeben:

Code: Alles auswählen

if ( catIsChildOf($idcat, CMS_VALUE[0]) ) { 
Wenn Du jetzt statt CMS_VALUE[0] überall im output direkt die id-cat einträgst, sollte es eigentlich klappen...
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

bipi
Beiträge: 130
Registriert: So 12. Jun 2005, 07:23
Kontaktdaten:

Re: geteilte Navigation

Beitrag von bipi » Di 13. Jul 2010, 17:27

vielen dank, das wars, ich poste hier noch mal den output code mit der idcat 1,

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, 1) ) { 
$sel_idcat = $idcat; 
} else { 
$sel_idcat = 1; 

} 

/* 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 != 1 ){ 

$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 = '1' 
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; 

?> 

Gesperrt