Horizontale Navigation

boogieman
Beiträge: 15
Registriert: Fr 29. Apr 2005, 08:27
Wohnort: Berlin
Kontaktdaten:

Horizontale Navigation

Beitrag von boogieman » Do 5. Mai 2005, 17:24

Hallo,

ich möchte mich erstmal bei den Contenido-Entwicklern für dieses fantastische CMS und bei den Mitgliedern dieses Forums für die guten Tipps bedanken.

Für ein aktuelles Projekt, für das ich erstmalig Contenido (4.4.5) einsetzte, wurde eine horizontale Navigation benötigt. Ich habe dann die Standard-Navigation entsprechend modifiziert.

Da ich im Forum gelesen habe, dass so etwas benötigt wird, hier mein modifiziertes Navigations-Modul:


INPUT (entspricht der Standard Navigation)

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


OUTPUT

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-05-2005
* Modification by : Winfried Riess
************************************************/

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

// Tabelle für Buttons
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

// Counter, der in den Template-Dateien die IDs von DIV-Tags 
//mit versch. Werten belegt, damit die Rollovers funktionieren.
$hochzaehlen = 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->set('d', 'ZAEHLER', 'wert' . $hochzaehlen++);
    $tpl->next();

    if ($idcat == $data['idcat'] || is_array($data['sub'])) {
           $tpl->generate('templates/navfirst_on.html');
    } else { 
           $tpl->generate('templates/navfirst_off.html');
    } 

} // end foreach


echo "</td></tr></table>";

// Hier wird die 2. horizontale Navigationsebene generiert

echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch2zaehlen = 0;

foreach ($navitems as $key => $data) {
    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', 'ZAEHLER2', 'wert2' . $hoch2zaehlen++);
            $tpl->next();

            if ($idcat == $data['idcat'] || is_array($data['sub'])) {
                    $tpl->generate('templates/navsecond_on.html');
            } else {
                    $tpl->generate('templates/navsecond_off.html');
            }

} // end foreach

echo "</td></tr></table>";

// Hier wird die 3. horizontale Navigationsebene generiert

echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch3zaehlen = 0;

foreach ($navitems as $key => $data) {
            if (is_array($data['sub'])) {

              foreach ($data['sub'] as $key => $data) {
                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->set('d', 'ZAEHLER3', 'wert3' . $hoch3zaehlen++);
                    $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

    } // end if

} // end foreach

 echo '</td></tr></table>';

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

/* Clean buffer */
ob_end_clean();

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

?>

Hier noch der Link zu den modifizierten Template-Dateien:
http://www.wr-webservices.de/downloads/ ... r_navi.zip


Folgendes Java Script muss für die Rollover-Effekte in das Layout eingebunden werden:

Code: Alles auswählen

<!--

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_changeProp(objName,x,theProp,theValue) { //v6.0
  var obj = MM_findObj(objName);
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
    if (theValue == true || theValue == false)
      eval("obj."+theProp+"="+theValue);
    else eval("obj."+theProp+"='"+theValue+"'");
  }
}

//-->

Selbstverständlich kann das Menü grafisch in den Template-Dateien geändert werden. Auch die Funktion für die Rollovereffekte wird dort aufgerufen.


Ich wünsche viel Spass damit.

Benutzung allerdings auf eigene Gefahr, da das Ganze noch sehr frisch ist.



Gruss
Zuletzt geändert von boogieman am Mo 3. Mär 2008, 15:24, insgesamt 1-mal geändert.

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Do 5. Mai 2005, 18:12

verschoben, da es sich um ein Modul handelt. :-)

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

Beitrag von HerrB » Do 5. Mai 2005, 19:11

Könntest Du auch noch einen Screenshot beifügen?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

boogieman
Beiträge: 15
Registriert: Fr 29. Apr 2005, 08:27
Wohnort: Berlin
Kontaktdaten:

Beitrag von boogieman » Do 5. Mai 2005, 19:38

Hallo,

hier der Screenshot der Navigation mit 2 aufgeklappten Untermenüs:

Bild



Gruss

danielawoe
Beiträge: 113
Registriert: Fr 11. Feb 2005, 12:03
Wohnort: Flensburg
Kontaktdaten:

Beitrag von danielawoe » Fr 6. Mai 2005, 13:16

Klasse !
genau das was ich gesucht habe!

Einfach TOLL!!!

Danke :)

LG DANIELA :D :D :D :D :D

boogieman
Beiträge: 15
Registriert: Fr 29. Apr 2005, 08:27
Wohnort: Berlin
Kontaktdaten:

Beitrag von boogieman » Fr 6. Mai 2005, 17:14

Hallo,

freut mich sehr, wenn das Modul gefällt.

Bei Bedarf hätte ich auch noch eine Modifikation, bei der die Untermenüs eingerückt dargestellt werden (unter dem aktivem Hauptmenüpunkt).

Bild


Gruss

OAA
Beiträge: 134
Registriert: Sa 15. Nov 2003, 15:54
Wohnort: Regensburg
Kontaktdaten:

Beitrag von OAA » Sa 7. Mai 2005, 08:24

Wenn es möglich wäre bitte die Änderung posten.

Das sieht echt klasse aus!

boogieman
Beiträge: 15
Registriert: Fr 29. Apr 2005, 08:27
Wohnort: Berlin
Kontaktdaten:

Horizontale Navigation mit eingerücktem Untermenü

Beitrag von boogieman » Sa 7. Mai 2005, 11:26

Hallo,

hier das OUTPUT-Script für die horizontale Navigation mit eingerückten Untermenüs (INPUT und Templatedateien s.o.):

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    :     04-05-2005 by Winfried Riess
************************************************/

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"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hochzaehlen = 0;
$aktive = 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->set('d', 'ZAEHLER', 'wert' . $hochzaehlen++);
    $tpl->next();

    if ($idcat == $data['idcat'] || is_array($data['sub'])) {
           $aktive = $hochzaehlen - 1; 
           $tpl->generate('templates/navfirst_on.html');
    } else { 
           $tpl->generate('templates/navfirst_off.html');
    } 
} // end foreach

echo "</td></tr></table>";
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch2zaehlen = 0;
$aktive2 = 0;

// Hier wird das Einrücken des 1. Untermenüs generiert

for ($leerstelle=0; $leerstelle < $aktive; $leerstelle++) {
    $tpl->generate('templates/navplaceholder.html');
}

foreach ($navitems as $key => $data) {
    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', 'ZAEHLER2', 'wert2' . $hoch2zaehlen++);
            $tpl->next();


            if ($idcat == $data['idcat'] || is_array($data['sub'])) {
                    $aktive2 = $hoch2zaehlen - 1; 
                    $tpl->generate('templates/navsecond_on.html');
            } else {
                    $tpl->generate('templates/navsecond_off.html');
            }

} // end foreach

echo "</td></tr></table>";
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch3zaehlen = 0;

// Hier wird das Einrücken des 2. Untermenüs generiert

for ($leerstelle2=0; $leerstelle2 < $aktive2 + $aktive; $leerstelle2++) {
      $tpl->generate('templates/navplaceholder.html');
}

foreach ($navitems as $key => $data) {
            if (is_array($data['sub'])) {

              foreach ($data['sub'] as $key => $data) {
                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->set('d', 'ZAEHLER3', 'wert3' . $hoch3zaehlen++);
                    $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

    } // end if

} // end foreach

 echo '</td></tr></table>';

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

/* Clean buffer */
ob_end_clean();

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

?>

Über Feedback und Verbesserungsvorschläge würde ich mich sehr freuen.


Gruss

Mc
Beiträge: 188
Registriert: Mi 2. Mär 2005, 21:19
Kontaktdaten:

Beitrag von Mc » So 22. Mai 2005, 14:52

Hallo boogieman,

tolles Modul. Habe ich für meine Fotogalerie gesucht.

Verwende contenido 4.4.5
Es kommt folgender Javascriptfehler: "Objekt erwartet"

Klappt eigentlich das Untermenü nach links auf, wenn sich der Hauptnavigationspunkt rechts in der Zeile befindet?

Danke und Gruß

Mc

boogieman
Beiträge: 15
Registriert: Fr 29. Apr 2005, 08:27
Wohnort: Berlin
Kontaktdaten:

Beitrag von boogieman » Mo 23. Mai 2005, 11:36

Hallo MC,

es freut mich sehr, dass Du das Modul benutzt.

Der JavaScript Error sollte nicht erscheinen, wenn das Script korrekt in die Seite eingebunden wird:

Code: Alles auswählen

<!-- 

function MM_findObj(n, d) { //v4.01 
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { 
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} 
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
  if(!x && d.getElementById) x=d.getElementById(n); return x; 
} 

function MM_changeProp(objName,x,theProp,theValue) { //v6.0 
  var obj = MM_findObj(objName); 
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){ 
    if (theValue == true || theValue == false) 
      eval("obj."+theProp+"="+theValue); 
    else eval("obj."+theProp+"='"+theValue+"'"); 
  } 
} 

//--> 
Sollte es dann trotzdem noch Probleme geben, dann gib mir bitte Bescheid.

Zu Deiner zweiten Frage:
Das Menü wird immer nach rechts aufgeklappt, auch wenn man den letzten Menüpunkt aktiviert.
Wenn Du das anders brauchst, könnte ich versuchen, das nochmal anders zu programmieren (z.B. ab dem 3. Menüpunkt wird immer nach links aufgeklappt).

Viele Grüsse

krausi
Beiträge: 6
Registriert: Do 7. Apr 2005, 18:19
Kontaktdaten:

Beitrag von krausi » Mo 23. Mai 2005, 17:51

hi,

@MC

versuch mal die Javascript Kommentare rauszulassen...

ersetze:
<!-- bzw. //-->

durch:
<SCRIPT language=JavaScript>
und
</SCRIPT>


dann bekommst du keine Fehlermeldungen :)


Greetz
Krausi

Mc
Beiträge: 188
Registriert: Mi 2. Mär 2005, 21:19
Kontaktdaten:

Beitrag von Mc » Di 24. Mai 2005, 10:51

Danke an boogieman und Krausi.

Es kommt kein Javascriptfehler mehr.

@boogieman
Wegen des Aufklappens des Untermenüs komme ich vielleicht noch mal auf dich zurück. Ich werde es erst weiter ausprobieren.

Gruß Mc

nprzybilla
Beiträge: 9
Registriert: Do 14. Apr 2005, 12:48
Kontaktdaten:

Beitrag von nprzybilla » So 12. Jun 2005, 13:07

Hi,

ich habe das Modul in Contenido 4.5 eingebunden. Leider wird das Menu nicht richtig angezeigt.

Im error log steht folgendes:

Hallo,

ich habe das horizontale Menu eingebunden. leider wird das Menu nicht richtig geladen.

Im error log habe ich folgende Fehlermeldung:

[11-Jun-2005 02:19:43] /contenido/includes/include.backendedit.php?type=CMS_IMG&typenr=3&client=1〈=1&idcat=21&idart=27&idartlang=27&contenido=aefe02da716559fa320fcacba0a125a1〈=1 next_record called with no query pending.
SELECT * FROM con_upl WHERE idclient='1' AND idupl =
[11-Jun-2005 02:19:43] /contenido/includes/include.backendedit.php?type=CMS_IMG&typenr=3&client=1〈=1&idcat=21&idart=27&idartlang=27&contenido=aefe02da716559fa320fcacba0a125a1〈=1 MySQL error 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
[11-Jun-2005 02:04:29] /contenido/main.php?area=htmltpl&frame=1&contenido=aefe02da716559fa320fcacba0a125a1 Session: freeze() failed.
insert into con_phplib_active_sessions ( sid, name, val, changed ) values ('aefe02da716559fa320fcacba0a125a1', 'contenido', 'Y29udGVuaWRvOiR0aGlzLT5pbiA9ICcwJzsgJHRoaXMtPnB0ID0gYXJyYXkoKTsgJHRoaXMtPnB0W... X3RyZWUnXVsnMSddWyczJ10gPSAnNSc7ICRHTE9CQUxTWydhcmVhX3RyZWUnXVsnMSddWyc0J10gPSAnNCc7IA==', '20050611020429')
[11-Jun-2005 02:04:29] /contenido/main.php?area=htmltpl&frame=1&contenido=aefe02da716559fa320fcacba0a125a1 MySQL error 1062: Duplicate entry 'aefe02da716559fa320fcacba0a125a1' for key 1
[11-Jun-2005 02:02:56] PHP Warning: Invalid argument supplied for foreach() in /home/hsphere/local/home/ztkkg/call-a-scooter.de/contenido/includes/include.frontend.user_menu.php on line 231

Wird jemand daraus schlau ?

Vielen Dank und viele Grüße

Niels

rapma
Beiträge: 10
Registriert: So 8. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rapma » Mo 13. Jun 2005, 09:08

Hallo Boogieman

danke für das Modul, hab es in meine Seite eingebaut und angepasst, ist alles wunderbar, nur hätte ich gern, das die zweite Ebene und ggf. die Dritte ganz einfach nach unten aufklappt, weil die Menüpunkte leider zu lang und zu viele sind.

Könntest du mir vielleicht sagen was ich wo ändern muss, um das so hinzubekommen?

Ich danke dir schon mal im vorab

Rapma

derkrebs
Beiträge: 23
Registriert: Di 14. Jun 2005, 20:42
Kontaktdaten:

Beitrag von derkrebs » Di 14. Jun 2005, 20:59

Hallo boogieman,

ist zwar schon a bisserl her, dass Du den Artikel geschrieben hast,
aber ich hätte mal die eine oder andere Frage dazu.

Ich bin contenido-mäßig absoluter Anfänger, das schonmal vorweg :? .
Nun möchte ich bei mir die Navigation layoutmäßig auch verändern.
Du hast bei Deiner Navigation u. a. auch die Templates modifiziert.
Ich habe mir die mal runtergeladen und angeschaut – das ist ja alles
ganz normales HTML und auch klar soweit. Bei mir ist nun das Problem,
dass, wenn ich nur die kleinste Änderung an den vorinstallierten
Templates vorgenommen und diese dann upgeloaded habe, contenido
die Variablen {HREF}, {NAME} etc. in der Vorschau nicht mehr durch
den eigentlichen Inhalt ersetzt. Dabei habe ich bei einer Version
(navfirst_on.html) wirklich nur das {NAME}-Tag auf fett gesetzt
(also <b>{NAME}</b>) – sonst habe ich nichts weiter geändert.
Muß man diese Templates besonders abspeichern oder irgendwie anders
einbinden oder wie kann es zu diesem Fehler kommen?

Danke für die Hilfe schonmal!!

Gruß, derkrebs

Gesperrt