Hallo,
wie man die horizontale Navigation mehrmals in einem Template verwenden kann habe ich hier im Forum gefunden und erfolgreich angewendet. Jetzt habe ich allerdings das Problem, dass ich 3 fast identische Templates habe. Diese unterscheiden sich lediglich darin, dass sie die Hauptnavigation einmal, zweimal oder dreimal verwenden.
Jetzt könnte ich 3 Templates anlegen, oder ein Template mit allen 3 Navigationen. Wählt man bei den Navis --kein-- aus, erscheint allerdings immer die Top-Kategorien! Kann man die Hauptnavigations soweit modifizieren, dass sie nicht angezeigt wird, wenn auch keine Kategorie ausgewählt wurde? Habe mir den Output einmal angesehen und versucht eine if Abfrage vor die Ausgabe von <table> zu machen, die die Variable $sel_idcat auf 0 untersucht. Aber wahrscheinlich war ich damit auf dem Holzweg!
Vielleicht kann mir jemand weiterhelfen, wie ich das "Problem" lösen kann. Ansonsten werde ich dann eben doch 3 Templates anlegen!
Gruß
Hauptnavigation mehrmals auch ohne Kategorie
-
- Beiträge: 1082
- Registriert: Di 22. Jul 2003, 10:14
- Wohnort: Hessen
- Kontaktdaten:
-
- Beiträge: 2
- Registriert: Fr 1. Okt 2004, 06:26
- Wohnort: Heudorf - im wilden süden
- Kontaktdaten:
vielleicht ne lösung
hi,
Ich sitze auch gerade an der Einarbeitung und verwende das super skyblade-modul. hatte das gleiche problem mit dem anzeigen der hauptkategorien auf der startseite, obwohl ich "Kein" angegebe hatte. Setz statt "kein" mal die aktuelle kategorie ein, in meinem falle "Home". dann verschwindet der zweite level; jedenfalls bei mir
Ich sitze auch gerade an der Einarbeitung und verwende das super skyblade-modul. hatte das gleiche problem mit dem anzeigen der hauptkategorien auf der startseite, obwohl ich "Kein" angegebe hatte. Setz statt "kein" mal die aktuelle kategorie ein, in meinem falle "Home". dann verschwindet der zweite level; jedenfalls bei mir

Hallo,
leider stimmt das nicht ganz, denn wenn ich Home auswähle, zeige ich ja eine Kategorie an! Ich möchte aber, dass wenn ich --Kein-- ausgewählt habe, dass dann auch wirklich KEINE Navigation angezeigt wird! Am besten, dass dann auch keine Tabelle (echo '<table...) angezeigt wird!
Troztdem danke
Gruß
leider stimmt das nicht ganz, denn wenn ich Home auswähle, zeige ich ja eine Kategorie an! Ich möchte aber, dass wenn ich --Kein-- ausgewählt habe, dass dann auch wirklich KEINE Navigation angezeigt wird! Am besten, dass dann auch keine Tabelle (echo '<table...) angezeigt wird!
Troztdem danke
Gruß
das mit der if-schlaufe ist schon richtig. publizier doch rasch das modul, dann kann ich dir zeigen, wo du ansetzen musst.
gruss,
andreas
gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Hallo,
danke für die Hilfe. Hier der Output Teil (unverändert)
So könnte es vielleicht aussehen!?
Gruß
danke für die Hilfe. Hier der Output Teil (unverändert)
Ich dachte mir, dass man eventuell hier vor der Ausgabe abfragen könnte, ob $sel_idcat = 0 bzw. != 0 .<?php
/***********************************************
* 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
*/
if (!function_exists("catIsChildOf"))
{
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">';
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_on.html');
} else {
$tpl->generate('templates/navfirst_off.html');
}
if (is_array($data['sub'])) {
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_on.html');
} else {
$tpl->generate('templates/navsecond_off.html');
}
if (is_array($data['sub'])) {
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_on.html');
} else {
$tpl->generate('templates/navthird_off.html');
}
} // end foreach
} // end if
} // end foreach
} // end if
} // end foreach
echo '</table>';
/* Read out buffer */
$html = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html;
?>
So könnte es vielleicht aussehen!?
Weis nicht, ob ich auf dem richtigen Weg bin! Diese Version hat leider nicht zum Erfolg geführt! Deshalb wäre ich für einen Ratschlag recht dankbar! Veilleicht steige ich doch noch in dieser Programmierung durch/* Start Output buffer */
ob_start();
if ( $sel_idcat != 0)
{
echo '<table cellspacing="0" cellpadding="0" border="0">';
foreach ($navitems as $key => $data) {

Gruß
Ok, habe das Problem gelöst!
Für alle die es interessiert:
Nach
Tja, war ich doch auf dem richtigen Weg!
Das Problem war nur, dass sich der Wert geändert hat!
Gruß

Für alle die es interessiert:
Nach
habe ich folgendes eingefügt:if ( !is_object($db2) ) {
$db2 = new DB_Contenido;
}
Dann irgendwo dazwischen nach folgendem Code$catStart = "CMS_VALUE[0]";
habe ich dies eingefügt$tmp_nav[$idcat]["sub"] = $navitems;
$navitems = $tmp_nav;
/* Function call */
nav($parentid);
} // end function
und ganz am Schluß darf die abschließende Klammer nicht fehlen!!!if ($catStart != 0) {
Tja, war ich doch auf dem richtigen Weg!

Gruß