Hauptnavigation

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Sa 29. Mai 2004, 12:57

Hi,

ich will mit dem zweiten Navigationsmodul nicht nür "Bäume" sondern auch "Kategorien" auswählen können ähnlich wie im Hilfsnavi.

geht dass ?
Ja, klaor .. nur nicht mit dem Orginalcode vom Hauptnavigationsmodul ;)

hab nur grad eben erst kapiert was du wolltest ( das letzte Bier gestern war wohl schlecht ). Here we go ....

naja .. nichts desto trotz ..

http://cms.hibernias-seelen.de/cms/front_content.php

^^ direkt auf der Start seite habe ich im Beispiel Mandanten das Hauptnavigationsmodul + ein angepasstes Hauptnavigationsmodul eingebunden. Das angepasste wird direkt unter dem Hauptnavi angezeigt und ist nur durch ein simples <HR> vom Orginal Hauptnavi getrennt.

Folgendes habe ich gemacht:

1.
Ein neues Layout erstellt ( kopiert vom Standart ) und in der Kopie

Code: Alles auswählen

CMS_CONTAINER[4]
durch

Code: Alles auswählen

CMS_CONTAINER[4]<hr>CMS_CONTAINER[11]
ersetzt.

2.
Ein Modul "Hauptnavigation (Second)" erstellt und den Output Teil vom orginal Hauptnavigationsmodul nach folgenden Änderungen in das neue Modul als Outputcode eingefügt:

- nav( durch nav_mod2 ersetzt
- $navitems durch $navitems_mod2 ersetzt
- catischildof( durch catischildof_mod2( ersetzt
- CMS_VALUE[0] durch CMS_VALUE[9000] ersetzt
- $tpl durch $tpl_mod2 ersetzt

3.
Den Input-Code vom Servicenavigation Modul als Input-Code für das Hauptnavigations ( Second Modul ) nach folgende Änderungen übernommen:

- CMS_VAR[0] durch CMS_VAR[9000] ersetzt
- CMS_VALUE[0] durch CMS_VALUE[9000] ersetzt

4.
Ein neues Template erstellt und alle Container 0 bis 10 wie das Standart Template definiert, und Container11 auf Hauptnavigation (Second) gestellt und gespeichert.

Im Gegensatz zum orginalen Hauptnavigationsmodul kannst du im 2ten jeden X-Beliebenen Kategorienordner auswählen, und cih denke das war das was du wolltest.

Sodele .. hier nun der komplette Code des "Hauptnavigations (Second)" Modul:

INPUT:

Code: Alles auswählen

// selected category
$selected = "CMS_VALUE[9000]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td>Kategorie wählen:</td>
          <td>
            <select name=\"CMS_VAR[9000]\">";
            if($selected!="0" && $selected!=""){
             echo"<option value=\"0\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "SELECT A.idcat, A.level, 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 ORDER BY A.idtree";
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>
      </table>";
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    :     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_mod2($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_mod2($idcat, CMS_VALUE[9000]) ) {
    $sel_idcat = $idcat;
} else {
    $sel_idcat = CMS_VALUE[9000];
}

/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');

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


/* Template Instance */
$tpl_mod2 = new Template;

/**
 * Recursive function for creating
 * the navigation array
 * @param Int $idcat Category id
 */
function nav_mod2($idcat) {

        global $navitems_mod2, $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[9000] ){

                $navitems_mod2 = 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[9000]'
                        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_mod2[$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_mod2;
        $navitems_mod2 = $tmp_nav;

        /* Function call */
        nav_mod2($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_mod2[$db->f("idcat")] = array("idcat"  => $db->f("idcat"),
                                           "name"   => $db->f("name"),
                                           "target" => $target);
}

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

/* Start Output buffer */
ob_start();

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

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

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

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

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

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

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

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

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

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

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

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

                } // end foreach

            } // end if

        } // end foreach

    } // end if

} // end foreach

echo '</table>';

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

/* Clean buffer */
ob_end_clean();

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

?>
Wünche dir damit viel Spaß

so long

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

Christoph Scheck
Beiträge: 56
Registriert: Mi 14. Apr 2004, 16:24
Kontaktdaten:

perfekt :)

Beitrag von Christoph Scheck » Sa 29. Mai 2004, 14:08

Perfekt soweit klappen auch die unterordner nur die vorkonfiguration will noch nicht.

1000 Dank aber für Deine Gedult und Mühen !!

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Sa 29. Mai 2004, 14:10

Die Vorkonfiguration funktioniert bei mir im System.

Beschreib mal pls wann bzw. in wiefern du Probleme mit der Vorkonfiguration hast.

so long

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

Christoph Scheck
Beiträge: 56
Registriert: Mi 14. Apr 2004, 16:24
Kontaktdaten:

Vorkonfiguration

Beitrag von Christoph Scheck » Sa 29. Mai 2004, 14:26

Hi,

also wie ich alles verstanden habe kann ich unter Templates / Vorkonfigurieren bereits vordeffinieren welche Kategorie ich auswählen möchte im Standardtemplate z.B. normalerweise brauche ich aber das Standardtemplate keinem Artikel zuweisen dass macht contenido automatisch - sogar bei mir - nur dann wird der gesamte Verzeichnisbaum in meinem Container Hauptnavi 2 !! angezeigt.

P.S. vielleicht kann ich dir auch mal was gutest tun ..probiere skype mit deinen Freunden (skype.com) viel spaß damit...

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Sa 29. Mai 2004, 14:32

Jein.

Wenn du eine neue Kategorie erstellst bzw. einen Artikel und dieser ein Template zuweist wird dann als "Vorgabe" die Einstellungen aus der Vorkonfiguration genommen.

Wenn du schon Kategorien hast, die auf ein Template konfiguriert sind und du änderst die Voreinstellungen bzw. fühgst im Layout/Template ein weiteres Modul hinzu, mußt du dies bei allen Artikeln/Kategorien erneut konfigurieren. Entweder das fehlende Modul konfiguren oder einfach auf "KEIN TEMPLATE" und dann wieder auf Standart und er übernimmt dann die Voreinstellung falls du diese haben möchtest.

Standartmäig wird einer Kategorie kein Template zugewiesen. Ein Artikel nimmt das Template der Kategorie an zu dem der Artikel gehört, solang für einen Artikel kein anderes Template gewählt wird.

Naja .. hab hier Skype, aber ich mag Skype nicht so. Mein ACC ist JacenSkyBlader in Skype. Ich nehm lieber Teamspeak ( http://www.teamspeak.org ). Mein TS Server ist leider Down, da 210 bis 280GB Traffic atm nciht mehr finanzier bar waren als kostenloser public server ;)

Müsste diesen aber nur wieder Starten *g*

Hoffe das dir nun was dieses Thema anbelangt geholfen werden konnte.

so long

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

stsofd
Beiträge: 82
Registriert: So 19. Okt 2003, 19:57
Kontaktdaten:

Funktioniert auch unter 4.5

Beitrag von stsofd » Do 2. Dez 2004, 23:33

Hi,

nach kurzer Suche bin ich auf euren Austausch gestoßen.

Danke an Euch.

Der Code funktioniert (bis jetzt) auch in der Version 4.5.

annett
Beiträge: 46
Registriert: Mi 22. Jun 2005, 10:52
Kontaktdaten:

Beitrag von annett » Mo 4. Jul 2005, 15:27

hab den code in der 4.5.3beta laufen... scheint einwandfrei zu funktionieren, danke Euch.

Annett

Naanaa
Beiträge: 18
Registriert: Di 4. Jan 2005, 18:20
Kontaktdaten:

Beitrag von Naanaa » Mi 3. Aug 2005, 11:37

Hallo Zusammen,

ich habe das ganze hier verfolgt und erfolgreich umgesetzt.
Jetzt habe ich folgendes Problem:
Wenn ich eine Unterkategorie auswähle, wird nur die Ebene der Unterakategorie angezeigt. Keine Unterunterkategorien !!!!

Hat Jemand eine Idee, wie ich das Problem lösen kann?

Vielen Dank im Voraus

Gruß
Nanu

Gesperrt