Hauptnavigation mit 4 Ebenen (Contenido 4.5.2 Alpha)

Gesperrt
m20
Beiträge: 44
Registriert: Di 16. Mär 2004, 15:02
Kontaktdaten:

Hauptnavigation mit 4 Ebenen (Contenido 4.5.2 Alpha)

Beitrag von m20 »

hallo,

habe das Hauptnavigationsmodul (Contenido Version 4.5.2 Alpha) auf 4 Ebenen erweitert.

Hier der Code:

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Navigation 1.2
* Author      :     Jan Lengowski
* Copyright   :     Contenido - four for business
* Modify-Date :     06.06.2004
* Modified by :     ihp media - Manuel Hack
************************************************/

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,
                                        a.idartlang AS idartlang
                                    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
                                        c.idclient  = '".$client."' AND
                                        c.idcat     = b.idcat AND
                                        a.idart     = b.idart AND
                                        a.idlang    = '".$lang."'";

                            $db2->query($sql);
                            $db2->next_record();
                            if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
                            {
                                $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,
                            a.idartlang AS idartlang
                        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
                            c.idclient  = '".$client."' AND
                            c.idcat     = b.idcat AND
                            a.idart     = b.idart AND
                            a.idlang    = '".$lang."'";

                $db2->query($sql);
                $db2->next_record();
                if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
                {
                    $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,
                    a.idartlang AS idartlang
                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
                    c.idclient  = '".$client."' AND
                    c.idcat     = b.idcat AND
                    a.idart     = b.idart AND
                    a.idlang    = '".$lang."'";

        $db2->query($sql);
        $db2->next_record();
        if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
        {
            $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
    
            $navitems[$db->f("idcat")] = array("idcat"  => $db->f("idcat"),
                                               "name"   => $db->f("name"),
                                               "target" => $target);
        }
}

/* Create Navigation Array */
nav($sel_idcat);

/* Start Output buffer */
ob_start();

echo '<table cellspacing="0" cellpadding="0" border="0">';

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

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

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

    if (is_array($data['sub'])) {

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

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

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

            if (is_array($data['sub'])) {

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

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

                    if ($idcat == $data['idcat']) {
                        $tpl->generate('templates/navthird_on.html');
                    } else {
                        $tpl->generate('templates/navthird_off.html');
                    }

		            if (is_array($data['sub'])) {
		
		                foreach ($data['sub'] as $key => $data) {
		
		                    /* 4. 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/navfourth_on.html');
		                    } else {
		                        $tpl->generate('templates/navfourth_off.html');
		                    }
		
						} // end foreach
		            } // end if

				} // end foreach
            } // end if

		} // end foreach

    } // end if
} // end foreach

echo '</table>';

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

/* Clean buffer */
ob_end_clean();

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

?>

Achtet darauf, dass die Templates:
- navfourth_on.html und
- navfourth_off.html

angelegt sind.

Ob's unter 4.4.x geht weiß ich nicht. Einfach mal testen. :D
MfG
M20

ihp media - Agentur für Mediengestaltung
- Webseiten
- Online Shops
- Hosting (auf unseren dedizierten Servern)

http://www.ihp-media.de
http://www.dusyma.de
http://www.myjobs24.de - Job-Auktionen für Alle!
http://www.flirt-affairs.de
http://www.fc-normannia.de
http://www.convertit.de
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

dich wird sicher das hier intressieren ->
http://www.contenido.de/forum/viewtopic ... 3859#23859

und es läuft nicht in der 4.4.x serie da die funktion isStartArticle nicht existiert.
*** make your own tools (wishlist :: thx)
m20
Beiträge: 44
Registriert: Di 16. Mär 2004, 15:02
Kontaktdaten:

Beitrag von m20 »

danke für die info, dass es unter 4.4.x nicht läuft.
da ich anfange auf der 4.5.2 zu entwickeln, hatte ich es auf der 4.4.x er Version nicht getestet.

die erweiterung auf der 4.4.x Version sollte allerdings nicht das problem sein.
MfG
M20

ihp media - Agentur für Mediengestaltung
- Webseiten
- Online Shops
- Hosting (auf unseren dedizierten Servern)

http://www.ihp-media.de
http://www.dusyma.de
http://www.myjobs24.de - Job-Auktionen für Alle!
http://www.flirt-affairs.de
http://www.fc-normannia.de
http://www.convertit.de
Gesperrt