Hauptmenü formatieren

Gesperrt
ODIN
Beiträge: 32
Registriert: Fr 6. Mai 2005, 21:20
Kontaktdaten:

Hauptmenü formatieren

Beitrag von ODIN »

Liebe Leute,

ich versuche das Hauptmenü von /***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Navigation 1.1
* Author : Jan Lengowski
* Copyright : Contenido - four for business
* Created : 15-05-2003
* Modified : 26-05-2003
************************************************/
zu formatieren, d.h. Schriftart und Hintergrund - mit CSS (weil das so halt hässlich aussieht).

Wie geht das bitteschön?
Link im Modul? Fehlermeldung. (Nach wie vor Anfänger)
<link rel="StyleSheet" href="css/xyz.css" type="text/css">

---------------
Überhaupt noch eine grundsätzliche Frage:
Im Forum habe ich gelesen, dass man kein eigenes Modul für die Navigation einrichten soll, weil man damit den Sinn des CMS unterlaufen würde.
Wie ist das zu beurteilen?
Habe es mit einem eigenen Modul leider nicht geschaft einen Link auf einen anderen Artikel zu setzen. Da könnt ihr mir doch sicher auch weiterhelfen.
Möchte aber schon die Hauptnavigation verwenden, weil das für die "Redakteure" dann einfacher ist, denke ich.

Danke im voraus! :lol:
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

die hauptnavigation verwendet eigene templates

diese findest du in deinem mandanten verzeichniss (annahme /cms/)
-> cms/templates/nav*.html
Im Forum habe ich gelesen, dass man kein eigenes Modul für die Navigation einrichten soll, weil man damit den Sinn des CMS unterlaufen würde.
Wie ist das zu beurteilen?
wo hast du was gelesen ? link zum beitrag wäre nicht schlecht...

wenn du eine statische version meinst -> sprich die links werden direkt im html code angegeben, stimmt es das es schwachsinn ist.... das unterläuft das cms...
navigationslink sollten dynamisch erzeugt werden... (wenn kategorien nicht erreichbar sein sollen, möchtest du doch nicht jedesmal den html code nachbessern müssen... oder ?)
*** make your own tools (wishlist :: thx)
ODIN
Beiträge: 32
Registriert: Fr 6. Mai 2005, 21:20
Kontaktdaten:

Hauptmenü stylen

Beitrag von ODIN »

OK, ich habe folgendes rausgefunden:

C:\Apache\Apache\htdocs\contenido-4.4.5\cms\templates
Beim file: „navifirst_off.html“ kann man die Hintergrundfarbe einstellen, nicht die Schrift – hier nur{name}.

Das ganze Menü muss doch irgendwie auch mit CSS zu steuern sein, ich weiß aber nicht wie. Vielleicht habe ich ja die berühmten Tomaten....

:?:
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Hauptmenü stylen

Beitrag von emergence »

ODIN hat geschrieben:...hier nur{name}.
ähm das sind ja nur platzhalter

schreib doch dein style um den platzhalter herum

Code: Alles auswählen

<span class="WASAUCHIMMER"{name}</span>
*** make your own tools (wishlist :: thx)
ODIN
Beiträge: 32
Registriert: Fr 6. Mai 2005, 21:20
Kontaktdaten:

Menü formatieren

Beitrag von ODIN »

Hi,

im file navifirst_off.html hat die Text-Formatierung leider nicht funktioniert, auch nicht, wenn ich <style type="text/css"> usw. voranstelle

______________
<!-- BEGIN:BLOCK -->
<tr><td width="165" colspan="2" height="22" style="border: 0px; border-bottom:1px; border-color: #F7C473; border-style: dashed; background-color: #FFFFFF; padding-left:10px">
<a target="{TARGET}" href="{HREF}"><SPAN class="arial10_dklgrau">{NAME}</span></a></td></tr>


<!-- END:BLOCK -->

______________________________
Nun kommt mir noch ein schlimmer Verdacht.

Die oben beschriebenen Navigation ist ja nur ein Teil meiner Navigation.
Der wichtigste Teil liegt in einem horizontalen fold-out-Menü - ein schönes Javascript .
Das Ausrollen funktioniert auch im Contenido einwandfrei.
Es werden dabei 2 Sublevels sichtbar.

Muss ich das Menü jetzt wegwerfen und ein php-Navigationsmodul nehmen?
Oder gibt es eine sinnvolle Art das mit den jeweiligen Artikeln zu verlinken?
Bleibt wiederum die Frage der Formatierung.

Bald geb ich mir die Kugel
Gruß
Odin


:roll:
Deltapapa
Beiträge: 62
Registriert: Fr 17. Jun 2005, 23:32
Wohnort: Mildtstedt
Kontaktdaten:

Das kannst du nur mit einem Anderen Modul machen

Beitrag von Deltapapa »

Hi Odin, ich hatte das gleich Problem. Lösung:
Das Standart Modul Navigation rausschmeißen (oder behalten, what ever you want) und dafür dieses nehmen:
Input:

Code: Alles auswählen

?> 
<table cellspacing="0" cellpadding="0" cellpadding="4">

    <tr>
        <td class="text_medium">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


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
 * ergänzung: ohne Templates, nur css
 *            Frank Hoffmann - www.x28.de
 */
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];
}

/**
 * Array storing alle the
 * navigation data
 */
$navitems = array();

/**
 * 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 '<div id="navcontainer">';

echo  '<ul>';

foreach ($navitems as $key => $data) {

    /* 1. Navigations Ebene */
    if ($data['idcat'] == $idcat) {
      echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="navactive1" target="'.$data['target'].'">'.$data['name'].'</a></li>';   
    }
    else {
      echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="nav1" target="'.$data['target'].'">'.$data['name'].'</a></li>';   
    }
    if (is_array($data['sub'])) {
        echo  '<ul id="subnavlist">';
        foreach ($data['sub'] as $key => $data) {
            /* 2. Navigations Ebene */            
            if ($data['idcat'] == $idcat) {
               echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="navactive2" target="'.$data['target'].'">'.$data['name'].'</a></li>';   
            }
            else {
            echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="nav2" target="'.$data['target'].'">'.$data['name'].'</a></li>';   
            }
          
            if (is_array($data['sub'])) {
                echo  '<ul id="subsubnavlist">';
                foreach ($data['sub'] as $key => $data) {
                    /* 3. Navigations Ebene */
                   if ($data['idcat'] == $idcat) {
                      echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="navactive3" target="'.$data['target'].'">'.$data['name'].'</a></li>';   
                   }
                   else {
                      echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" id="nav3" target="'.$data['target'].'">'.$data['name'].'</a></li>';   
                   }
                } // end foreach
                echo '</ul>';
            } // end if
         } // end foreach
        echo '</ul>';
     } // end if    
} // end foreach

echo '</ul>';
echo '</div>';

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

/* Clean buffer */
ob_end_clean();

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

?>
CSS Formatierung (Beispiel)

Code: Alles auswählen

/* Hauptnavigation */
#navcontainer { 
margin-left: 0; 
padding-top: 0;
}
/* Hauptnavigation 1. Ebene */
#navcontainer ul 
{
padding-left: 0; /*wichtig für mozilla */
margin: 0;
list-style-type: none;
font-family: verdana, arial, Helvetica, sans-serif;
background-color: white;
}
#navcontainer ul li 
{ 
display: block;
margin: 0; 
list-style-image: none;
border-bottom: 1px solid white;
background-color: gray;
}
#navcontainer ul a
{
display: block;
padding: 5px 5px 5px 10px;
color: #fff;
text-decoration: none;
border-bottom: 1px solid white;
}
#navcontainer ul a:hover
{
background-color: black;
}

/* Hauptnavigation 2. Ebene */
#navcontainer ul ul li 
{ 
margin-left: 20px;
}
#navcontainer ul ul a:hover
{

}

/* Hauptnavigation 3. Ebene */
#navcontainer ul ul ul li 
{ 
margin-left 30px;
}
#navcontainer ul ul ul a:hover
{

}

/* Hauptnavigation aktiver Menüpunkt 1. Ebene*/
#navcontainer a#navactive1 
{
text-decoration: underline;
}
/* Hauptnavigation aktiver Menüpunkt 2. Ebene*/
#navcontainer a#navactive2
{
text-decoration: underline;
}
/* Hauptnavigation aktiver Menüpunkt 3. Ebene*/
#navcontainer a#navactive3
{
text-decoration: underline;
}
Die CSS Formatierungen kommen in deine Standart CSS Datei.
Ich hoffe ich konnte die helfen!

Dirk
C 4.4.5 r1
Das Internet wurde von www.bademeister.com erfunden
ODIN
Beiträge: 32
Registriert: Fr 6. Mai 2005, 21:20
Kontaktdaten:

Menü formatieren

Beitrag von ODIN »

Hi Dirk,

dein Script sieht vielversprechend aus.
Da ich kein php-Programmierer bin kann ich das nur so übernehmen.
Leider kommt folgende Fehlermeldung:
Parse error: parse error in

c:\apache\apache\htdocs\contenido-4.4.5\cms\front_content.php(567) : eval()'d code on line 96

Im front_content.php ist das die Zeile:
// Initialize language
if (!isset($lang)) {
__________________
Was habe ich gemacht?
Neues Modul mit (Input + output) und in das Template eingebunden.

Bei Style > Styleeditor habe ich ein neues css angelegt mit dem Namen: mystyle.css und den entspr. Text reinkopiert.

Im Layout habe ich folgend Zeile eingefügt:
<link rel="StyleSheet" href="css/mystyle.css" type="text/css">

Ich bin sicher, bei dir läuft es - wahrscheinlich bei mir irgendein blöder Fehler. Link auf die CSS?

Gruß
Odin
Deltapapa
Beiträge: 62
Registriert: Fr 17. Jun 2005, 23:32
Wohnort: Mildtstedt
Kontaktdaten:

Also irgendwie ist da ein dreher drinnen

Beitrag von Deltapapa »

meine Link zur CSS Datei heißt:
<link href="css/format.css" rel="stylesheet" type="text/css" media="all">

vielleicht ist das nicht wichtig, keine Ahnung.
Bin auch "noch" kein PHP Programmierer, schreibe nebenbei Access Programme, und mach das nur als "dritt hobby"! wenn das nicht laufen sollte, kann ich dir vom Programm Code nicht weiterhelfen, sorry.
Habe aber auch kein apache auf meinem server laufen, weiß nicht ob das wichtig ist ?
Meine Erfahrung mit Contenido ist aber auch, das mann einfach mal mehrmals etwas durchklicken muß, einfach rumprobieren, häufig gehts dann auf einmal

Viele Grüsse

Dirk
C 4.4.5 r1
Das Internet wurde von www.bademeister.com erfunden
zimboo
Beiträge: 171
Registriert: Fr 20. Mai 2005, 09:43
Wohnort: Köln - Rondorf
Kontaktdaten:

Beitrag von zimboo »

Moin Odin,

also ich benutze folgendes Hauptnavigationsmodul:
Eingabe:

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="0">
    <tr>
        <td class="text_medium" style="padding: 10px;">Baum w?hlen:</td>
        <td style="padding: 10px;">
            <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
Ausgabe:

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Navigation 1.1
* Author      :     Jan Lengowski
* Copyright   :     Contenido - four for business
* Created     :     15-05-2003
* Modified    :     05-2004, Matthias Blass
************************************************/

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();

foreach ($navitems as $key => $data) {

    /* 1. Navigations Ebene */
    $tpl->reset();
    $tpl->set('d', 'NAME',  $data['name']);
    $tpl->set('d', 'ID', '_'.$data['idcat']);
    $tpl->set('d', 'TARGET', $data['target']);
    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));
    $tpl->next();

    if ($data['idcat'] == $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->set('d', 'ID', '_'.$data['idcat']);
            $tpl->next();

            if ($idcat == $data['idcat']) {
                $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

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

/* Clean buffer */
ob_end_clean();

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

?>
Die Templates ("navifirst_on.htm" usw.) sehen so aus:

Code: Alles auswählen

<!-- BEGIN:BLOCK -->
     <a class="menu" target="{TARGET}" href="{HREF}">{NAME}</a>
<!-- END:BLOCK -->
und das CSS für die "Gestaltung" des Menüs sieht so aus:

Code: Alles auswählen

/*Menülinks*/
a.menu {
 display:block;
 padding:3px;
 border-top:1px dashed #b50000;
 background-color:#fff;
 text-align:center;
 color:#b50000;
 text-decoration:none;
 }
a.menu:link, a.menu:visited { 
 color:#b50000;
 background-color:#fff;
 text-decoration:none; 
 font-weight:bold;
}
a.menu:active, a.menu:hover { 
 color:#fff; 
 border-top:1px dashed #fff;
 font-weight:bold;
 background-color:#b50000;
}
Das ganze funzt ganz wunnebar... kannst Du dir ja mal unter
http://www.test.drk-koeln.de/kvkoeln/fr ... ?idcat=139

Ich hoffe ich konnte Dir weiterhelfen...

Schöne Grüße

Jörg
Jörg Zimmermann
Köln Rondorf
ODIN
Beiträge: 32
Registriert: Fr 6. Mai 2005, 21:20
Kontaktdaten:

Beitrag von ODIN »

Hallo Jörg,
hatte die Nachricht versehentlich an einen anderen Mitstreiter gepostet.

Das horizontale Menü ist genau das, was ich suche!!! Super

Danke für deine Mühe.
Es gibt noch ein paar Dinge, die ich klären muss, damit es alles rundum funktioniert.

Das Menü klappt aus bei Firefox jedoch nicht im Internet Explorer. Dafür ist ja das von dir beigefügte Javascript zuständig. Leider funktioniert das nicht.

Mein Layout sieht so aus:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="css/format.css" rel="stylesheet" type="text/css" media="all">
<script type="text/javascript"><!--//--><![CDATA[//><!--
sfHover = function() {
var sfEls = document.getElementById("nav").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
sfEls.onmouseover=function() {
this.className+=" sfhover";
}
sfEls.onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

//--><!]]></script>

</head>
<BODY bgcolor="bilder/br_rotweiss.jpg" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="18%" valign="top" rowspan="3" bgcolor="#C72429">CMS_CONTAINER[1]
<br>
CMS_CONTAINER[5]
<td width="82%" valign="top" bgcolor="#FF0000"><div id="vpNavigation">CMS_CONTAINER[2]</div>
CMS_CONTAINER[3]

</td>
</tr>
<tr>
</tr>
<tr>
<td width="82%" valign="top" bgcolor="FFFFFF"><br>
CMS_CONTAINER[4]<br>
<br>
<br>
</td>
</tr>
</table>
</body>
</html>



Das horizontale dropdown-menue habe ich im Container [2}
______________________________________________________

In diesem Zusammenhang gibt es im Ausgabescript die Zeile:
$hauptkategorie = "CMS_VALUE[0]";
Was bedeutet die 0?.
Wenn ich statt 0 die 23 eingebe, stellt er tatsächlich andere Menüpunkte dar, aber wie finde ich denn die richtige Ziffer bzw. den richtigen Knoten(Einstiegs)punkt – anders ausgedrückt, ich will nur einen bestimmten Teil des Strukturbaumes darstellen.


Meine Navigation ist nämlich zweigeteilt. Oben würde ich gerne das horizontale Menü einbauen.
Links soll ein vertikales Menü stehen, aber das soll nicht den gleichen Strukturbaum wie oben abbilden.
Wie mach ich das?

Für weitere Ratschläge bin ich sehr dankbar.
Gruß
Odin
zimboo
Beiträge: 171
Registriert: Fr 20. Mai 2005, 09:43
Wohnort: Köln - Rondorf
Kontaktdaten:

Beitrag von zimboo »

Hallo Odin,

ich glaube jetzt wirfst Du da was durcheinander :lol:

Also in meinem Menü gibt es kein JavaScript und kein Rollout... das Menü, welches ich verwende, ist rein auf CSS aufgebaut und bei mir (jedenfalls in dem Link den ich Dir gepostet hatte) gibt es keine Unterpunkte...

Das habe ich hier verwendet (auch reines CSS gestüztes Menü):
http://www.test.drk-koeln.de/fsj/front_content.php

vielleicht kannst du dieses Modul ja doch brauchen :wink:

Gruß

Jörg
Jörg Zimmermann
Köln Rondorf
Gesperrt