Seite 1 von 2

Hauptnavigation

Verfasst: Fr 28. Mai 2004, 17:57
von Christoph Scheck
Hauptnavigation

Verfasst: Fr 28. Mai 2004, 18:15
von SkyBlader
Ich nehme an, du hast den INPUT und OUTPUT Code vom Hauptnavigationsmodul einfach in das Hauptnavigation2 Modul kopiert.

Änder im Modul "Hauptnavigation2" im INPUT und im OUTPUT Teil folgendes ab

CMS_VAR[x] in CMS_VAR[8000]
CMS_VALUE[X] in CMS_VALUE[8000]

Wobei X für den Werst steht der atm eingetragen ist, hab keien sauber Installation am start, in meiner RefInst steht aber im HauptNavi Modul CMS_VAR[0] und CMS_VALUE[0] drin.

Danach dürfte das dann eigetlich gehen.

Aber über die Suche hättestest du mindestens 1 anderne Thread gefunden der diese Problematik mit dem Hauptnavimodul behandelt und mehrere die dies allgemein tun.

so long

Stefan

leichter gesagt als getan

Verfasst: Fr 28. Mai 2004, 19:34
von Christoph Scheck
Hallo und Danke

für Deine freundliche Hilfe... und ich schwör :-) ich habe bereits im Forum gesucht aber keine funktionierende Lösung gefunden. Deine Änderungen im in und output habe ich gemacht aber leider ohne Erfolg. Ich bekomme weiterhin nur den Container mit dem neuen Navigationsmodul zusehen und bekomme diese Fehlermeldung:

[28-May-2004 20:32:40] PHP Fatal error: Cannot redeclare nav() (previously declared in C:\web\xampp\htdocs\content\cms\front_content.php(659) : eval()'d code:215) in C:\web\xampp\htdocs\content\cms\front_content.php(659) : eval()'d code on line 584

Verfasst: Fr 28. Mai 2004, 19:57
von SkyBlader
argx .. flüchtigkeitsfehler meinerseits

due funktionen die im modul erstellt werden ( function nav ) werden zweimal deklariert.

und deswegen kommt das durcheinander ..

bei der Funktion catIsChildOf ist eine überprüfung eingebaut, die bei der funktion nav() fehlt.

such also sowohl im modul 1 wie auch 2 nach folgenden 2 stellen

1.

Code: Alles auswählen

function nav($idcat) {
und ersetze diese durch

Code: Alles auswählen

if (!function_exists("nav"))
{
function nav($idcat) {
als nächstes machst du folgendes

Code: Alles auswählen

Suche nach:

       /* Function call */
        nav($parentid);

}  // end function


und ersetze durch

       /* Function call */
        nav($parentid);

}  // end function
} // check if exist ** NEU


[quote]

In Kombination mit meinem vorrigen Post müsste es gehen .. hab es nicht getestet.

Falls du immernoch probs halt schreib pls dann die Fehlermeldung, dann schau mr weiter bis es passt ;)

so long

stefan[/quote]

sau cool

Verfasst: Fr 28. Mai 2004, 20:18
von Christoph Scheck
Hi Stefan,

vielen Dank soweit mittlerwile sehe ich tatsächlich beide Container..allerdings die gleichen sprich meine gesamte menü struktur ohne untermenüs. Möchte ja Deinen Freitag abend nicht zusehr stören..aber vielleicht kannst Du nochmal...

ups info vergessen

Verfasst: Fr 28. Mai 2004, 20:22
von Christoph Scheck
[28-May-2004 21:05:55] PHP Parse error: parse error, unexpected $end in C:\web\xampp\htdocs\content\contenido\includes\functions.mod.php(164) : eval()'d code on line 343

Grüße

Verfasst: Fr 28. Mai 2004, 22:05
von SkyBlader
mhh ..

lösch mal dein HauptNavi Modul 2 .. und nehm fiolgenden code für das 2te Modul.

Den Source für das erste Modul nimmst du einfach den Orginalcode:

INPUT

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="4">

    <tr>
        <td class="text">Baum wählen:</td>
        <td>
            <select name="CMS_VAR[8000]">
            <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[8000]" == $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    :     26-05-2003
************************************************/

if ( !is_object($db_mod2) ) {
    $db_mod2 = 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[8000]") ) {
    $sel_idcat = $idcat;
} else {
    $sel_idcat = "CMS_VALUE[8000]";
}

/* 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;
        $db_mod2 = 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[8000]" ){

                $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[8000]'
                        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."'";

                            $db_mod2->query($sql);
                            $db_mod2->next_record();

                            $target = ( $db_mod2->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."'";

                $db_mod2->query($sql);
                $db_mod2->next_record();

                $target = ( $db_mod2->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."'";

        $db_mod2->query($sql);
        $db_mod2->next_record();

        $target = ( $db_mod2->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 = ob_get_contents();

/* Clean buffer */
ob_end_clean();

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

?>
Das Prob ist halt das ich das grad nicht testen kann, hoffe aber das das dir nun endlich hilft.

so long Stefan

langsam nähern wir uns der Sache

Verfasst: Fr 28. Mai 2004, 22:30
von Christoph Scheck
Hi
Danke noch mal für Deine freundliche und schnelle Hilfe... nun klappt auch fast alles lediglich mit der Vorkonfiguration im Template hakts noch. Da werden bei der zweiten Navigation wieder alle Ordner angezeigt - nicht nur der Ausgewählte samt Unterordner. Grrr... mich ärgerts maslos wenn ich keinen Plan hab. Wenn ich im Artikel unter konfiguration die Ordner auswähle dann klapp's komischerweise oder Gott sei dank ??

Grüße Christoph

Verfasst: Fr 28. Mai 2004, 23:05
von SkyBlader
mhh .. schau ich mir morgen mal an ... ich selber hab nie mit dem hauptnavi teil gearbeitet, da ich von vornerein eigene module geschrieben habe ..

ich geh dann jetzt aber ins bett.

bis morgen ... und dann bekommen wir das voll hin *sicherist*

so long

Stefan

dass hast Du du dir auch verdient..

Verfasst: Sa 29. Mai 2004, 09:47
von Christoph Scheck
und kann ich Deinem Namen entnehmen dass du ein Fallschirmspringer bist ...? Danke für Deine Hilfe nochmal

Verfasst: Sa 29. Mai 2004, 11:35
von SkyBlader
Nein ...

hab ne SGA als Pionier .. und bin im Stab der 7. Panzerdivision in der Abteilung G6 Dezernat 4 ( Informations Verarbeitung [InfoV] ) tätig. Also im Dezernat für Netzwerk, Nutzerbetreuung, Entwicklung ... halt alles was mit IT zu tun hat.

Ich setz mir mal nen Testsystem auf und bastel dir das für dein Prob zusammen und teste es dann ... poste die Lösung dann gegen später ... muß nur erstmal Zimmer aufräumen ( Frau hat Ultimatum gestellt :/ )

so long

Stefan

hin und wieder muss mann..

Verfasst: Sa 29. Mai 2004, 12:01
von Christoph Scheck
auch mal tun was Frau sagt :) also bis bald und nochmal danke

noch eine kleine Info

Verfasst: Sa 29. Mai 2004, 12:29
von Christoph Scheck
nach deinen hilfreichen infos kann ich leider keine Unterordner mehr auswählen weder unter Artikell Konfiguration noch im Template unter Vorkonfiguration. Danke soweit und Grüße aus Garmisch

Verfasst: Sa 29. Mai 2004, 12:34
von SkyBlader
mhh .. ich weiß jetzt was du mit dem 2ten teil überhaupt machen wolltest ( *brettvorkopfgehabthat* )

bin aber dran ...


mhh .. wenn du nichts auser am Hauptnavigations nr2 modul geändert hast dürfte nichts anderes kaputt gehen *grübel*

vielleicht habe ich mich falsch ausgedrückt

Verfasst: Sa 29. Mai 2004, 12:45
von Christoph Scheck
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 ?