Hauptnavigation auch Horizontal ?

Gesperrt
hen
Beiträge: 44
Registriert: Fr 29. Aug 2003, 16:27
Kontaktdaten:

Hauptnavigation auch Horizontal ?

Beitrag von hen » Di 28. Okt 2003, 15:34

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

jumar
Beiträge: 25
Registriert: Fr 24. Okt 2003, 00:38
Kontaktdaten:

Beitrag von jumar » Di 28. Okt 2003, 20:53

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

andrej
Beiträge: 333
Registriert: Mi 8. Okt 2003, 09:46
Kontaktdaten:

Beitrag von andrej » Mi 29. Okt 2003, 10:13

würde mich auch interessieren. wenn es gehen würde dann ist eines der vielen probleme bei mir gelöst.

gruß

andrej

herby
Beiträge: 2
Registriert: Sa 1. Nov 2003, 16:44
Kontaktdaten:

Beitrag von herby » Sa 1. Nov 2003, 17:03

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.

gunwalt
Beiträge: 57
Registriert: Di 2. Sep 2003, 08:53
Wohnort: Erkrath
Kontaktdaten:

Beitrag von gunwalt » So 9. Nov 2003, 18:50

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

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 9. Nov 2003, 22:05

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

gunwalt
Beiträge: 57
Registriert: Di 2. Sep 2003, 08:53
Wohnort: Erkrath
Kontaktdaten:

Beitrag von gunwalt » Mo 10. Nov 2003, 09:40

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

ttb
Beiträge: 182
Registriert: So 26. Okt 2003, 19:54
Wohnort: Schwerin
Kontaktdaten:

Beitrag von ttb » Mo 10. Nov 2003, 10:41

Ä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. :)

gunwalt
Beiträge: 57
Registriert: Di 2. Sep 2003, 08:53
Wohnort: Erkrath
Kontaktdaten:

Beitrag von gunwalt » Mo 10. Nov 2003, 11:08

>>Ä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.

gunwalt
Beiträge: 57
Registriert: Di 2. Sep 2003, 08:53
Wohnort: Erkrath
Kontaktdaten:

Beitrag von gunwalt » So 14. Dez 2003, 10:57

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
Netz: Contenido 4.42 läuft auf Apache/df-exts 1.1 (Unix) mod_ssl/2.8.15 OpenSSL/0.9.6k AuthPG/1.3 FrontPage/5.0.2.2510, MySQL server version 3.23.57-log, PHP 4.2.3 bei Domainfactory
Lokal: Contenido 4.42 läuft auf Apache/2.0.46 (Win32) mod_perl/1.99_10-dev Perl/v5.8.0 PHP/4.3.2 mod_ssl/2.0.46 OpenSSL/0.9.7b

gunwalt
Beiträge: 57
Registriert: Di 2. Sep 2003, 08:53
Wohnort: Erkrath
Kontaktdaten:

Beitrag von gunwalt » So 14. Dez 2003, 21:54

Problem geklärt.

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

navfirst_h_on.html
navfirst_h_off.html

Guntram
Netz: Contenido 4.42 läuft auf Apache/df-exts 1.1 (Unix) mod_ssl/2.8.15 OpenSSL/0.9.6k AuthPG/1.3 FrontPage/5.0.2.2510, MySQL server version 3.23.57-log, PHP 4.2.3 bei Domainfactory
Lokal: Contenido 4.42 läuft auf Apache/2.0.46 (Win32) mod_perl/1.99_10-dev Perl/v5.8.0 PHP/4.3.2 mod_ssl/2.0.46 OpenSSL/0.9.7b

Gesperrt