Navigation mal ganz anders
Hi CyberDan!
Ich habe das Modul mal ausprobiert, funktioniert auch hervorragend. Zu sehenCyberDan hat geschrieben:@smeusel: könntest du mal die aktuelle Version des Moduls von diener Seite hier posten? Ich bräuchte so ein Modul dringend
unter http://www.treffpunkt-gebrauchtwagen.de ... p?idcat=25 (nur mal schnell so)
in der ersten Navebene im OutputCode von smeusel haben sich zwei kleine fehler eingeschlichen navfirst sollte eigentlich navifirst heissen, wenn man sich an die Bezeichnung der Templates halten will.
Gruss, Alex
Hallo Alex,
danke für den schnellen Test. Bei mir bringt das aber nichts, da ich die Orignalen Templates benutze und die auch ohne "i" geschrieben werden. Vom Modul kommt auf der Seite einfach nix an. Sicher, dass du nicht sonst noch was verändert hast?
Das einzige, was von dem Modul auf meiner Seite ankommt ist der button_freihalter-rechts.jpg.
danke für den schnellen Test. Bei mir bringt das aber nichts, da ich die Orignalen Templates benutze und die auch ohne "i" geschrieben werden. Vom Modul kommt auf der Seite einfach nix an. Sicher, dass du nicht sonst noch was verändert hast?
Das einzige, was von dem Modul auf meiner Seite ankommt ist der button_freihalter-rechts.jpg.
Hi Cyberdan, das Modul ist definitiv 1 zu 1 übernommen, wie gesagt, habe noch die 2 "i" ergänzt. Evt. krachts ja mit einem anderen Modul, was setzt du denn noch für module in kombination mit dieser 2 geteilter Navigation ein?CyberDan hat geschrieben:Hallo Alex,
danke für den schnellen Test. Bei mir bringt das aber nichts, da ich die Orignalen Templates benutze und die auch ohne "i" geschrieben werden. Vom Modul kommt auf der Seite einfach nix an. Sicher, dass du nicht sonst noch was verändert hast?
Das einzige, was von dem Modul auf meiner Seite ankommt ist der button_freihalter-rechts.jpg.
Alex
Ich habe das Modul gerade in einem anderen Mandanten getestet und da geht es einwandfrei. Ich verzweifle hier gleich 
Am Layout kanns auch nicht liegen: Ich habe gerade das Layout aus dem anderen Mandanten in diesen kopiert und dann geht das Modul auch nicht.
Kann es vielleicht mit den Sprachen zusammenhängen? Ich benutze in diesem Mandanten 2 Sprachen und in dem anderen (in dem das Modul funktioniert) nur eine.

Am Layout kanns auch nicht liegen: Ich habe gerade das Layout aus dem anderen Mandanten in diesen kopiert und dann geht das Modul auch nicht.
Kann es vielleicht mit den Sprachen zusammenhängen? Ich benutze in diesem Mandanten 2 Sprachen und in dem anderen (in dem das Modul funktioniert) nur eine.
hi CyberDan,
nu hab ich das posting gefunden
das modul, dass ich verwendet habe, war eine absolute "quick and dirty" lösung. bei einer installation hat sie funktioniert, bei einer anderen nicht. der letzte stand der dinge, wo es funktioniert hat ist dieser:
input "navi ebene 1"
output "navi ebene 1"
input "navi ebene 2+3"
gibt es nicht
output "navi ebene 2+3"
Das war der letzte stand der navi. so richtig elegant ist dieser stand aber auch nicht. eigentlich müsste dass ding mal komplett neu gemacht werden und dann gleich so flexibel, dass man per container jede ebene an eine andere stelle der seite setzten kann (nicht nur ebene 1 von den anderen trennen). aber das riecht nach mächtig aufwand....
grüße,
smeusel
nu hab ich das posting gefunden

das modul, dass ich verwendet habe, war eine absolute "quick and dirty" lösung. bei einer installation hat sie funktioniert, bei einer anderen nicht. der letzte stand der dinge, wo es funktioniert hat ist dieser:
input "navi ebene 1"
Code: Alles auswählen
/**
* 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
output "navi ebene 1"
Code: Alles auswählen
<?php
$test_1 = "CMS_VALUE[0]";
if ( !is_object($db1) ) {
$db1 = new DB_Contenido;
}
function catIsChildOf_1($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;
}
}// end while
return false;
}//end function
if ( catIsChildOf_1($idcat, "CMS_VALUE[0]") ) {
$sel_idcat_1 = $idcat;
} else {
$sel_idcat_1 = "CMS_VALUE[0]";
}
/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/**
* Array storing all the
* navigation data
*/
$navitems_1 = array();
/* Template Instance */
$me_tpl_1 = new Template;
/**
* Recursive function for creating
* the navigation array
* @param Int $idcat Category id
*/
function nav_1($idcat) {
global $navitems_1, $client, $lang, $cfg;
$db = new DB_Contenido;
$db1 = 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_1 = 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."'
";
$db1->query($sql);
$db1->next_record();
$target = ( $db1->f("ext") == 0 ) ? '_self' : '_blank';
$navitems_1[$db->f("idcat")] = array(
"idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}// end while
}// end if
return true;
}//end if
$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."'
";
$db1->query($sql);
$db1->next_record();
$target = ( $db1->f("ext") == 0 ) ? '_self' : '_blank';
$tmp_nav_1[$db->f("idcat")] = array(
"idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}//end while
$tmp_nav_1[$idcat]["sub"] = $navitems_1;
$navitems_1 = $tmp_nav_1;
/* Function call */
nav_1($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_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."'
";
$db1->query($sql);
$db1->next_record();
$target = ( $db1->f("ext") == 0 ) ? '_self' : '_blank';
$navitems_1[$db->f("idcat")] = array(
"idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}//end while
/* Create Navigation Array */
nav_1($sel_idcat_1);
/* Start Output buffer */
ob_start();
foreach ($navitems_1 as $key => $data) {
/* 1. Navigations Ebene */
$me_tpl_1->reset();
$me_tpl_1->set('d', 'NAME', $data['name']);
$me_tpl_1->set('d', 'TARGET', $data['target']);
$me_tpl_1->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$me_tpl_1->next();
if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$me_tpl_1->generate('templates/navfirst_on.html');
} else {
$me_tpl_1->generate('templates/navfirst_off.html');
}//end if
if (is_array($data['sub'])) {
$tmp_data_me1 = array();
$tmp_data_me1 = $data;
}// end if
}// end foreach
/* Read out buffer */
$html = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html;
?>
input "navi ebene 2+3"
gibt es nicht
output "navi ebene 2+3"
Code: Alles auswählen
<?php
if (is_array($tmp_data_me1['sub'])) {
$data = $tmp_data_me1;
echo '<table cellspacing="0" cellpadding="0" border="0"><tr>';
foreach ($data['sub'] as $key => $data) {
/* 2. Navigations Ebene */
$me_tpl_1->reset();
$me_tpl_1->set('d', 'NAME', $data['name']);
$me_tpl_1->set('d', 'TARGET', $data['target']);
$me_tpl_1->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$me_tpl_1->next();
if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$me_tpl_1->generate('templates/navsecond_on.html');
} else {
$me_tpl_1->generate('templates/navsecond_off.html');
}
if (is_array($data['sub'])) {
$tmp_data_me12 = array();
$tmp_data_me12 = $data;
}
}// end foreach
echo '</tr></table>';
}// end if
?>
Das war der letzte stand der navi. so richtig elegant ist dieser stand aber auch nicht. eigentlich müsste dass ding mal komplett neu gemacht werden und dann gleich so flexibel, dass man per container jede ebene an eine andere stelle der seite setzten kann (nicht nur ebene 1 von den anderen trennen). aber das riecht nach mächtig aufwand....

grüße,
smeusel