Seite 1 von 1

Hauptnavigation auch Horizontal ?

Verfasst: Di 28. Okt 2003, 15:34
von hen
Hallo Freunde,
ich habe da ein kleines aber feines Problem. Ist es möglich ( auch bei Version 4.4.0 ) einzustellen das die Hauptnavigation z. Bsp auch horizontal die obersten Strukturpunkte anzeigt und die weiteren jeweils direkt darunter ? Ich meine mich erinnern zu können das dies bei einer Vörgängerversion möglich war.

Textuelles Beispiel:

Navpunkt1 navpunkt2 navpunkt3
navpkt1.1 navpkt2.1
navpkt1.2

Ansonsten...großes Lob an alle Entwickler...

Grüße Henning

Verfasst: Di 28. Okt 2003, 20:53
von jumar
Hi!

Genau daran bin ich auch interessiert.
Bin zwar schon dabei das selbst anzugehen, ahabe aber momentan noch das Problem, daß immer nur die nächste Navigationsebene ausgegeben wird.

Irgendwelche Tipps?

Bye,
Jumar

Verfasst: Mi 29. Okt 2003, 10:13
von andrej
würde mich auch interessieren. wenn es gehen würde dann ist eines der vielen probleme bei mir gelöst.

gruß

andrej

Verfasst: Sa 1. Nov 2003, 17:03
von herby
Dazu nimmt man das Modul Hauptnavigation von Jan Lengowski, denn dort steckt alles drin, was man braucht, lässt den Eingabepart unverändert, sortiert die Codezeilen im Output neu und fügt ein paar Tabellen-Tags ein, 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).


***Output***************************************
<?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 '</tr></td>';


if (is_array($tmp_data['sub'])) {
$data = $tmp_data;
echo '<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 '</tr></td>';
} // end if

if (is_array($tmp_data2['sub'])) {
$data = $tmp_data2;
echo '<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 '</tr></td>';
} // end if
echo '</table>';

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

/* Clean buffer */
ob_end_clean();

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

?>
***Output***************************************


Wenn jemand Lust hat, kann er ja das Original und die Kopie zusammenfassen ( Input Radio vertikal | hoizontal in die Eingabe und eine If-Abfrage z.B. vor /* Start Output buffer */ (davor ist alles unverändert) und nach /* Clean buffer */ ob_end_clean(); ).
Allerdings halte ich nicht viel von solchen Zusammenfassungen, weil sie nur unnötige Fehlerquellen bei der Seitenkonfiguration eröffnen.

Verfasst: So 9. Nov 2003, 18:50
von gunwalt
Hallo,

funktioniert, allerdings lässt sich das Modul nicht auf einen anderen Mandanten als den Pfad CMS anwenden. Ich versuche es und bekomme immer eine leere SEite.

Gruss
Guntram

Verfasst: So 9. Nov 2003, 22:05
von HerrB
Das liegt am Eingabe-Modul (Input). Da gibt es (nach meiner Erinnerung) eine Bedingung im SQL-Statement, die nur für den Beispiel-Mandanten zutreffen kann. War sowas wie "... AND idcat = 1". Das ist aber die Kategorie "Hauptnavigation" des Beispiel-Mandanten (und diese ID muss gegen die ID Deiner "Hauptnavigation" ausgetauscht werden).

Gruß
HerrB

P.S.: Wenn es dann nicht klappt, würde ich auch noch mal suchen...

Verfasst: Mo 10. Nov 2003, 09:40
von gunwalt
Hallo Herr B,

kann ich nicht verifizieren, da das Modul den gleichen Eingabereich wie die original Navigation benützt. Den Tipp mt den idcat bin ich nachgegangen, kann aber nichts lokalisieren, wo der Mandant festgelegt wird und gleichzeitig ein 1 bekommt.

Gruss
Guntram

Verfasst: Mo 10. Nov 2003, 10:41
von ttb
Ähm, entschuldigt bitte, aber wieso so kompliziert? Die Ausgabe der Hauptnavi wird doch in den Dateien cms/templates/navifirst_on.html, navifirst_off.html, navisecond_on.html, navisecond_off.html, navithird_on.html und navithird_off.html definiert, wo sie sich problemlos so anpassen lässt, dass die Navi horizontal bzw. vertikal ist. :)

Verfasst: Mo 10. Nov 2003, 11:08
von gunwalt
>>Ähm, entschuldigt bitte, aber wieso so kompliziert? Die Ausgabe der >>Hauptnavi wird doch in den Dateien cms/templates/navifirst_on.html, >>navifirst_off.html, navisecond_on.html, navisecond_off.html, >>navithird_on.html und navithird_off.html definiert, wo sie sich problemlos >>so anpassen lässt, dass die Navi horizontal bzw. vertikal ist

Das ist klar. Aber der Pfad "cms/templates/navifirst_on.html" funktioniert für einen anderen Mandanten nicht.

Verfasst: So 14. Dez 2003, 10:57
von gunwalt
Fehler behoben, da war etwas zerschossen. Aber ich habe ein anderes Problem., nämlich die Einbindung von css.

Wie und wo kann man eine zweite Linkklasse (a.navi1:link) einbauen, wie im Beispiel unten?

a:active { color: black; font-family: Verdana, Arial, Helvetica, Sans-Serif;
font-weight: normal; font-size: 10pt; text-decoration: none}
a:link { color: black; font-family: Verdana, Arial, Helvetica, Sans-Serif;
font-weight: normal; font-size: 10pt; text-decoration: underline }
a:visited { color: black; font-family: Verdana, Arial, Helvetica, Sans-Serif;
font-weight: normal; font-size: 10pt; text-decoration: underline}
a:hover { color: black; font-family: Verdana, Arial, Helvetica, Sans-Serif;
font-weight: normal; font-size: 10pt; text-decoration: none}

a.navi1:link { font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: 8pt; color:black; text-decoration:underline; }
a.navi1:visited {font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: 8pt; color:black; text-decoration:underline; }
a.navi1:hover {font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: 8pt; color:black; text-decoration:none; }
a.navi1:active {font-family: Verdana, Arial, Helvetica, Sans-Serif; font-size: 8pt; color:black; text-decoration:none; }

Danke

Gruss
Guntram

Verfasst: So 14. Dez 2003, 21:54
von gunwalt
Problem geklärt.

Die CSS-Statements müssen in die Template-Dateien:

navfirst_h_on.html
navfirst_h_off.html

Guntram