geteilte Hauptnavigation 4.6.2 BETA !

effex
Beiträge: 55
Registriert: So 13. Mär 2005, 14:03
Kontaktdaten:

Beitrag von effex » Mi 14. Dez 2005, 17:57

Frage: Hat irgendjemand das obige Modul von OSI in der Version 4.6.4 erfolgreich am laufen?

#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Geteilte Navigation duplizieren - fatal error

Beitrag von #ayshe » Mo 19. Dez 2005, 12:25

Ja, ich benutze Olivers Modul und es läuft ohne Probleme.

Allerdings will ich es jetzt duplizieren, um es im gleichen Template an anderer Stelle nochmals zu verwenden, aber mache wohl noch was falsch. Bisher bin ich so rangegangen, dass ich aus $db die Variable $db2 gemacht habe und aus $db2 wurde im Duplikat $db4. Außerdem ist die Funktion isCatOfChild umbenannt in isCatOfChild2, und aus nav() wurde nav2().

Trotzdem bekomme ich noch immer den Fehler
Fatal error: Call to a member function on a non-object in /home/netsh10414/html/front_content.php(770) : eval()'d code on line 815
Und der Content aus dem im Layout danach folgenden Textmodul wird nicht mehr angzeigt.

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Text HTML
* Author(s)   :     Andreas Lindner
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     05.08.2005
************************************************/

echo "<p>"."CMS_HTML[1]"."</p>";
?>
Hmpf!

Hier mal mein duplizierter Code mit den Änderungen. Bestimmt ist nur ne Kleinigkeit falsch...

Duplizierte Navigation Teil 1 INPUT

Code: Alles auswählen

?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname  :      Hauptnavigation
* Author(s)   :     Jan Lengowski, Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
************************************************/

#Select tree
?>
<table cellspacing="0" cellpadding="0" cellpadding="4">
    <tr>
        <td class="text"><?php echo mi18n("Baum wählen");?>:</td>
        <td>
            <select name="CMS_VAR[0]">
            <option value="0">-- <?php echo mi18n("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";

                $db3->query($sql);

                while ( $db3->next_record() ) {
                    if ( "CMS_VALUE[0]" == $db3->f("idcat") ) {
                        echo '<option selected="selected" value="'.$db3->f("idcat").'">'.$db3->f("name").'</option>';
                    } else {
                        echo '<option value="'.$db3->f("idcat").'">'.$db3->f("name").'</option>';
                    }
                }
            ?>
            </select>
        </td>
    </tr>
</table>
<?php 
Duplizierte Navigation Teil 1 OUTPUT

Code: Alles auswählen

<?php
/********************************************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname     :     Hauptnavigation
* Author(s)   :     Jan Lengowski, Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
* Modifier   :   Oliver Simon, simon-oliver.com
* Modified   :   27.11.2005
*********************************************************************/

#System properties in use:
#Type: navigation, Name: idcat_homepage
#Contains idcat of tree to be displayed in main navigation

#Includes
cInclude("frontend", "includes/functions.navigation.php");

#If no tree is selected, use client setting
$start_cat = "CMS_VALUE[0]";
if ($start_cat=='') {
    $cApiClient = new cApiClient($client);
   $start_cat = $cApiClient->getProperty('navigation','idcat_homepage');
}

if ( !is_object($db4) ) {
    $db4 = 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 catIsChildOf2($id, $idparent) {

    global $cfg, $client, $lang;

    $db3 = 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."'";

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

        $parent = $db3->f("parentid");

        if ($parent == $idparent) {
            return true;
        }

    }

    return false;

}

if ( catIsChildOf2($idcat, $start_cat) ) {
    $sel_idcat = $idcat;
} else {
    $sel_idcat = $start_cat;
}

/* 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 nav2($idcat) {

        global $navitems, $client, $lang, $cfg, $start_cat;

        $db3  = new DB_Contenido;
        $db4 = new DB_Contenido;

        $sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'";

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

        $parentid = $db3->f("parentid");

        if ( $parentid == 0 ) {

           if ( $idcat != $start_cat ){

                $navitems = array();
             
                $sql = "SELECT
                            A.idcat,
                            C.name,
                        C.public,
                        C.idcatlang
                        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  = '".$start_cat."'
                        ORDER
                            BY A.idtree";

                      $db3->query($sql);

                      while ($db3->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     = '".$db3->f("idcat")."' AND
                                        c.idclient  = '".$client."' AND
                                        c.idcat     = b.idcat AND
                                        a.idart     = b.idart AND
                                        a.idlang    = '".$lang."'";

                            $db4->query($sql);
                            $flag = false;
                     while ($db4->next_record()&&!$flag) {
                               if (isStartArticle($db4->f("idartlang"), $db3->f("idcat"), $lang))
                               {
                           $flag = true;
                                   $target = ( $db4->f("ext") == 0 ) ? '_self' : '_blank';
   
                                   $navitems[$db3->f("idcat")] = array("idcat"      => $db3->f("idcat"),
                                                                       "name"      => $db3->f("name"),
                                                                       "target"    => $target,
                                                                 "public" => $db3->f("public"),
                                                                "idcatlang" => $db3->f("idcatlang"));
                               }
                     }
                      }

           }
           
           return true;
        }

        $sql = "SELECT
                    A.idcat,
                    C.name,
                  C.public,
                    C.idcatlang
                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";

        $db3->query($sql);

        while ($db3->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     = '".$db3->f("idcat")."' AND
                            c.idclient  = '".$client."' AND
                            c.idcat     = b.idcat AND
                            a.idart     = b.idart AND
                            a.idlang    = '".$lang."'";

                $db4->query($sql);
            $flag = false;
                while ($db4->next_record() && !$flag) {
                   if (isStartArticle($db4->f("idartlang"), $db3->f("idcat"), $lang))
                   {
                  $flag = true;
                       $target = ( $db4->f("ext") == 0 ) ? '_self' : '_blank';
                      
                       $tmp_nav[$db3->f("idcat")] = array("idcat"   => $db3->f("idcat"),
                                                         "name"    => $db3->f("name"),
                                                          "public" => $db3->f("public"),
                                                  "idcatlang" => $db3->f("idcatlang"),
                                                         "target"  => $target);
                   }
            }
        }

        $tmp_nav[$idcat]["sub"] = $navitems;
        $navitems = $tmp_nav;

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

}  // end function

$sql = "SELECT
            A.idcat,
            C.name,
          C.public,
             C.idcatlang
        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";

$db3->query($sql);

while ( $db3->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     = '".$db3->f("idcat")."' AND
                    c.idclient  = '".$client."' AND
                    c.idcat     = b.idcat AND
                    a.idart     = b.idart AND
                    a.idlang    = '".$lang."'";

        $db4->query($sql);
        #$db4->next_record();
      $flag = false;
      while ($db4->next_record()&&!$flag) {
           if (isStartArticle($db4->f("idartlang"), $db3->f("idcat"), $lang))
           {
            $flag = true;
               $target = ( $db4->f("ext") == 0 ) ? '_self' : '_blank';
      
               $navitems[$db3->f("idcat")] = array("idcat"  => $db3->f("idcat"),
                                                  "name"   => $db3->f("name"),
                                                  "public" => $db3->f("public"),
                                            "idcatlang" => $db3->f("idcatlang"),
                                                  "target" => $target);
           }
      }
}

/* Create Navigation Array */
if(($sel_idcat=='')||($sel_idcat=='0')){
    $cApiClient = new cApiClient($client);
    $sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}

nav2($sel_idcat);

/* Start Output buffer */
ob_start();

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

    /* 1. Navigation level */
   if (checkCatPermission($data['idcatlang'],$data['public'])) {
       $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/navfirst_on.html');
      }elseif(is_array($data['sub'])){
           $tpl->generate('templates/navfirst_open.html');
       } else {
           $tpl->generate('templates/navfirst_off.html');
       }
   } // end if
} // end foreach

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

/* Clean buffer */
ob_end_clean();

/* Output buffer-contents */
echo $html;
?>
Duplizierte Navigation Teil 2 OUTPUT

Code: Alles auswählen

<?php


/* 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;

$sql = "SELECT
            A.idcat,
            C.name,
          C.public,
             C.idcatlang
        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";

$db3->query($sql);

while ( $db3->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     = '".$db3->f("idcat")."' AND
                    c.idclient  = '".$client."' AND
                    c.idcat     = b.idcat AND
                    a.idart     = b.idart AND
                    a.idlang    = '".$lang."'";

        $db4->query($sql);
        #$db4->next_record();
      $flag = false;
      while ($db4->next_record()&&!$flag) {
           if (isStartArticle($db4->f("idartlang"), $db3->f("idcat"), $lang))
           {
            $flag = true;
               $target = ( $db4->f("ext") == 0 ) ? '_self' : '_blank';
      
               $navitems[$db3->f("idcat")] = array("idcat"  => $db3->f("idcat"),
                                                  "name"   => $db3->f("name"),
                                                  "public" => $db3->f("public"),
                                            "idcatlang" => $db3->f("idcatlang"),
                                                  "target" => $target);
           }
      }
}

/* Create Navigation Array */
if(($sel_idcat=='')||($sel_idcat=='0')){
    $cApiClient = new cApiClient($client);
    $sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}

nav2($sel_idcat);

/* Start Output buffer */
ob_start();

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

   if (checkCatPermission($data['idcatlang'],$data['public'])) {

       /* 2. Navigation level */
       if (is_array($data['sub'])) {
           foreach ($data['sub'] as $key => $data) {
            if (checkCatPermission($data['idcatlang'],$data['public'])) {
                  $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/navsecond_on.html');
               }elseif(is_array($data['sub'])){
                    $tpl->generate('templates/navsecond_open.html');
                  } else {
                      $tpl->generate('templates/navsecond_off.html');
                  }

          /* 3. Navigation level */
                  if (is_array($data['sub'])) {
                      foreach ($data['sub'] as $key => $data) {
                     if (checkCatPermission($data['idcatlang'],$data['public'])) {
                             $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');
                        }elseif(is_array($data['sub'])){
                             $tpl->generate('templates/navthird_open.html');
                             } else {
                                 $tpl->generate('templates/navthird_off.html');
                             }

                             /* 4. Navigation level */
                           if (is_array($data['sub'])) {
                               foreach ($data['sub'] as $key => $data) {
                              if (checkCatPermission($data['idcatlang'],$data['public'])) {
                                      $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');
                                 }elseif(is_array($data['sub'])){
                                      $tpl->generate('templates/navfourth_open.html');
                                      } else {
                                          $tpl->generate('templates/navfourth_off.html');
                                      }

                                      /* 5. Navigation level */
                                    if (is_array($data['sub'])) {
                                        foreach ($data['sub'] as $key => $data) {
                                       if (checkCatPermission($data['idcatlang'],$data['public'])) {
                                               $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/navfifth_on.html');
                                               } else {
                                                   $tpl->generate('templates/navfifth_off.html');
                                               }
                                          } // end if
                                        } // end foreach
                                    } // end if
                                 } // end if
                               } // end foreach
                           } // end if
                        } // end if
                      } // end foreach
                  } // end if
               } // end if
           } // end foreach
          } // end if
    } // end if
} // end foreach

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

/* Clean buffer */
ob_end_clean();

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

duff
Beiträge: 4
Registriert: Mo 18. Apr 2005, 01:39
Kontaktdaten:

geteilte navigation.. templates für navifirst...

Beitrag von duff » Mo 19. Dez 2005, 16:15

Hallo Zusammen..

ich verwende das Modul mit der geteilten Navigation und hab nun das Problem, dass wenn man einen Link der 2. Ebene anklickt für die 1. Ebene nicht mehr das navifirst_on template verwendet wird.

ich hab das template so verändert dass die Hauptkategorie farbig hinterlegt sein soll. hier mal der link, ist schwer zu beschreiben:
http://www.speedy.selendic.de/www/conte ... p?idcat=76

ich hätte nun auch gerne die hauptkategorie farbig hinterlegt, wenn man einen unterpunkt anklickt.
hat da jemand nen tip für mich? Das ist meine erste Seite mit Contenido, also verzeiht bitte, wenn ich mich total doof anstelle :)

grüße

duff

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Re: geteilte navigation.. templates für navifirst...

Beitrag von mvf » Mo 19. Dez 2005, 16:21

befinden sich die erste ebene und die darunter in einem kategoriebaum? ansonsten verlieret die horizontale navi beim 'baumwechsel' logischerweise ihren zustand und springt auf 'off'. hast du für die navitemplates der ersten ebene die css klassen kontrolliert? die standard templates nutzen für alle ebenen die selben klassen! da muss also css technisch nochmal die erste ebene ausgegliedert werden ;) hands on
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

duff
Beiträge: 4
Registriert: Mo 18. Apr 2005, 01:39
Kontaktdaten:

Beitrag von duff » Mo 19. Dez 2005, 16:33

danke.. jetzt klappts


im navfirst_open.. hab ich´s css natürlich falsch gehabt..

grüße

duff

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Mo 19. Dez 2005, 16:44

na bestens dan happy css-ing zum stylen ;)
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

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

Beitrag von HerrB » Mo 19. Dez 2005, 17:42

Hast Du die Nutzer berechtigt?

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

#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Beitrag von #ayshe » Mo 19. Dez 2005, 22:11

Äh, HerrB, richtet sich Deine Frage an mich? Und wenn ja: Was haben die Benutzerrechte dann mit der duplizierten Hauptnavi zu tun?
*kopfkratz*

snake*sl
Beiträge: 12
Registriert: Mi 4. Jan 2006, 11:03
Kontaktdaten:

Beitrag von snake*sl » Mi 4. Jan 2006, 20:31

Hi, erstmal DANKE für Dein Modul :)

Leider funktioniert es nicht so richtig bei, dabei muss ich auch sagen, ich bin ein absoluter Contenido-Neuling. Also, ich hab im Layout so meine Navi definiert:

Code: Alles auswählen

   <div id="navibox">
            <ul id="navigation">
               CMS_CONTAINER[0]
            </ul>
        </div>

        <div id="left">
            <ul id="subnavigation">
                CMS_CONTAINER[1]
            </ul>
        </div>
In den Modulen hab ich dann ein Modul "Hauptnavigation" angelegt und das Eingabe- und Ausgabefeld mit Deinen Daten gefüttert. Schließlich noch ein Modul "Subnavigation" und das Ausgabefeld befüllt.

Unter Templates sind in meinem Template auch die richtigen Container zugewiesen worden. Mein Problem ist jetzt, dass ich keine Naviangezeigt bekomme weder Haupt- noch Sub.

Mit dem Standardscript geht's (Kategorien sind also richtig angelegt)

Hat jemand eine Idee zu meinem Problem? Hier ein Link: http://web22.clickpress.info

EDIT: Hier noch ein Link, wie's mal aussehen soll: http://www.clickpress.de/kunden/golfclub
Gruß
snake*sl

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Mi 4. Jan 2006, 20:37

bei mir läuft die geteilte navi einwandfrei, wie ich was eingebunden habe sieht man hier

auf jeden fall habe ich die navi nicht in eine <ul> eingebunden, layout ist auch online unter obigem link
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

snake*sl
Beiträge: 12
Registriert: Mi 4. Jan 2006, 11:03
Kontaktdaten:

Beitrag von snake*sl » Mi 4. Jan 2006, 21:27

@mvf: leider verstehe ich mal garnicht, wie das bei mir umsetzen soll :oops:

aber scheinbar liegt mein problem (mit dem anderen modul) bei meiner container-bezeichnung.

muss die hauptnavigation CMS_CONTAINER[0] und die subnavi die [1] bekommen?
Gruß
snake*sl

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Mi 4. Jan 2006, 21:45

na dann from the top :)

Code: Alles auswählen

<div id="headerNavigation"><container id="10" name="HeaderNavigation">HeaderNavigation</container>
</div>

Code: Alles auswählen

<div id="navigation">
<container id="12" name="MainNavigation">MainNavigation</container>
</div> 
darin stecken die module aus dem ersten post dieses threads

das ganze teilt einen baum in headernavi horizontal und ab der 2. ebene vertikal
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Mi 11. Jan 2006, 13:42

wenn man steses mr_464 mit der geteilten hauptnavi zum laufen bringen möchte, muss das modul dahingehend angepasst werden, dass die idart, in diesem fall die des startartikels mitgegen werden muss um eine url alá
mydomain.de/csm/kategorie/subkategorie/artikelname.html
sonst bekommt man nur
mydomain.de/csm/kategorie/subkategorie/
ohne artikelname

dazu habe ich das modul angepasst

input (navi 1. ebene):

Code: Alles auswählen

?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname  :  Hauptnavigation
* Author(s)  :  Jan Lengowski, Andreas Lindner, 4fb
* Copyright  :  Contenido - four for business, Andreas Lindner
* Created    :  12-08-2005
************************************************/

#Select tree
?>
<table cellspacing="0" cellpadding="0" cellpadding="4">
    <tr>
        <td class="text"><?php echo mi18n("Baum wählen");?>:</td>
        <td>
            <select name="CMS_VAR[0]">
            <option value="0">-- <?php echo mi18n("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 (navi 1. ebene):

Code: Alles auswählen

<?php

/*********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :  Hauptnavigation
* Author(s)  :  Jan Lengowski, Andreas Lindner, 4fb
* Copyright  :  Contenido - four for business, Andreas Lindner
* Created    :  12-08-2005
* Modifier   :  Oliver Simon, simon-oliver.com
* Modified   :  27-11-2005
**********************************************/

#System properties in use:
#Type: navigation, Name: idcat_homepage
#Contains idcat of tree to be displayed in main navigation

#Includes
cInclude("frontend", "includes/functions.navigation.php");

#If no tree is selected, use client setting
$start_cat = "CMS_VALUE[0]";
if ($start_cat=='') {
    $cApiClient = new cApiClient($client);
   $start_cat = $cApiClient->getProperty('navigation','idcat_homepage');
}

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, $start_cat) ) {
    $sel_idcat = $idcat;
} else {
    $sel_idcat = $start_cat;
}

/* 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, $start_cat;

        $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 != $start_cat ){

                $navitems = array();
             
                $sql = "SELECT
                            A.idcat,
                            C.name
                        C.public,
                        C.idcatlang,
                        C.startidartlang
                        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  = '".$start_cat."'
                        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);
                            $flag = false;
                     while ($db2->next_record()&&!$flag) {
                               if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
                               {
                           $flag = true;
                                   $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
   
                                   $navitems[$db->f("idcat")] = array("idcat"      => $db->f("idcat"),
                                                                       "name"      => $db->f("name"),
                                                                       "idart"      => $db->f("startidartlang"),
                                                                       "target"    => $target,
                                                                 "public" => $db->f("public"),
                                                                "idcatlang" => $db->f("idcatlang"));
                               }
                     }
                      }

           }
           
           return true;
        }

        $sql = "SELECT
                    A.idcat,
                    C.name,
                  C.public,
                    C.idcatlang,
                    C.startidartlang
                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);
            $flag = false;
                while ($db2->next_record() && !$flag) {
                   if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
                   {
                  $flag = true;
                       $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
                      
                       $tmp_nav[$db->f("idcat")] = array("idcat"   => $db->f("idcat"),
                                                         "name"    => $db->f("name"),
                                                         "idart"      => $db->f("startidartlang"),
                                                          "public" => $db->f("public"),
                                                  "idcatlang" => $db->f("idcatlang"),
                                                         "target"  => $target);
                   }
            }
        }

        $tmp_nav[$idcat]["sub"] = $navitems;
        $navitems = $tmp_nav;

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

}  // end function

$sql = "SELECT
            A.idcat,
            C.name,
          C.public,
             C.idcatlang,
             C.startidartlang
        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();
      $flag = false;
      while ($db2->next_record()&&!$flag) {
           if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
           {
            $flag = true;
               $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
      
               $navitems[$db->f("idcat")] = array("idcat"  => $db->f("idcat"),
                                                  "name"   => $db->f("name"),
                                                  "idart"      => $db->f("startidartlang"),
                                                  "public" => $db->f("public"),
                                            "idcatlang" => $db->f("idcatlang"),
                                                  "target" => $target);
           }
      }
}

/* Create Navigation Array */
if(($sel_idcat=='')||($sel_idcat=='0')){
    $cApiClient = new cApiClient($client);
    $sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}

nav($sel_idcat);

/* Start Output buffer */
ob_start();

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

    /* 1. Navigation level */
   if (checkCatPermission($data['idcatlang'],$data['public'])) {
       $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'].'&idart='.$data['idart']));

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

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

/* Clean buffer */
ob_end_clean();

/* Output buffer-contents */
echo $html;
?>
input (navi 2. - 5. ebene):

Code: Alles auswählen

bleibt leer
outputt (navi 2. - 5. ebene):

Code: Alles auswählen

<?php
/*********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :  Hauptnavigation
* Author(s)  :  Jan Lengowski, Andreas Lindner, 4fb
* Copyright  :  Contenido - four for business, Andreas Lindner
* Created    :  12-08-2005
* Modifier   :  Oliver Simon, simon-oliver.com
* Modified   :  27-11-2005
**********************************************/

/* 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;

$sql = "SELECT
            A.idcat,
            C.name,
          C.public,
             C.idcatlang,
             C.startidartlang
        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();
      $flag = false;
      while ($db2->next_record()&&!$flag) {
           if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
           {
            $flag = true;
               $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
      
               $navitems[$db->f("idcat")] = array("idcat"  => $db->f("idcat"),
                                                  "name"   => $db->f("name"),
                                                  "idart"      => $db->f("startidartlang"),
                                                  "public" => $db->f("public"),
                                            "idcatlang" => $db->f("idcatlang"),
                                                  "target" => $target);
           }
      }
}

/* Create Navigation Array */
if(($sel_idcat=='')||($sel_idcat=='0')){
    $cApiClient = new cApiClient($client);
    $sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}

nav($sel_idcat);

/* Start Output buffer */
ob_start();

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

   if (checkCatPermission($data['idcatlang'],$data['public'])) {

       /* 2. Navigation level */
       if (is_array($data['sub'])) {
           foreach ($data['sub'] as $key => $data) {
            if (checkCatPermission($data['idcatlang'],$data['public'])) {
                  $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'].'&idart='.$data['idart']));
                  $tpl->next();
                  if ($idcat == $data['idcat']) {
                      $tpl->generate('templates/navsecond_on.html');
               }elseif(is_array($data['sub'])){
                    $tpl->generate('templates/navsecond_open.html');
                  } else {
                      $tpl->generate('templates/navsecond_off.html');
                  }

          /* 3. Navigation level */
                  if (is_array($data['sub'])) {
                      foreach ($data['sub'] as $key => $data) {
                     if (checkCatPermission($data['idcatlang'],$data['public'])) {
                             $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'].'&idart='.$data['idart']));
                             $tpl->next();
         
                             if ($idcat == $data['idcat']) {
                                 $tpl->generate('templates/navthird_on.html');
                        }elseif(is_array($data['sub'])){
                             $tpl->generate('templates/navthird_open.html');
                             } else {
                                 $tpl->generate('templates/navthird_off.html');
                             }

                             /* 4. Navigation level */
                           if (is_array($data['sub'])) {
                               foreach ($data['sub'] as $key => $data) {
                              if (checkCatPermission($data['idcatlang'],$data['public'])) {
                                      $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'].'&idart='.$data['idart']));
                                      $tpl->next();
                                      if ($idcat == $data['idcat']) {
                                          $tpl->generate('templates/navfourth_on.html');
                                 }elseif(is_array($data['sub'])){
                                      $tpl->generate('templates/navfourth_open.html');
                                      } else {
                                          $tpl->generate('templates/navfourth_off.html');
                                      }

                                      /* 5. Navigation level */
                                    if (is_array($data['sub'])) {
                                        foreach ($data['sub'] as $key => $data) {
                                       if (checkCatPermission($data['idcatlang'],$data['public'])) {
                                               $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'].'&idart='.$data['idart']));
                                               $tpl->next();
                                               if ($idcat == $data['idcat']) {
                                                   $tpl->generate('templates/navfifth_on.html');
                                               } else {
                                                   $tpl->generate('templates/navfifth_off.html');
                                               }
                                          } // end if
                                        } // end foreach
                                    } // end if
                                 } // end if
                               } // end foreach
                           } // end if
                        } // end if
                      } // end foreach
                  } // end if
               } // end if
           } // end foreach
          } // end if
    } // end if
} // end foreach

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

/* Clean buffer */
ob_end_clean();

/* Output buffer-contents */
echo $html;
?>
vieleicht kann es jemand brauchen :?
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Mo 16. Jan 2006, 09:28

jetzt hänge ich schon das ganze wochenende fest :(

ich war der festen überzeugung das mittlerweile hinzukriegen aber denkste, da schlägt die grosse php-keule bitter böse auf den rookie zurück

ich würde die navi gerne ein weiteres mal teilen

1. ebene
2. ebene
3-5. ebene

um eine navi mit zwei untereinander horizontalen ebenen im header und ab der 3. ebene links vetikal zu erhalten.

erste ebene ist ja bereits gesplitet, jetzt habe ich aus dem outputcode (s.o.) die ebenen 3-5 einfach herausgenommen und die html-templates navsecond_xxx.html per CSS unter die 1. ebene horizontal gesetzt. soweit so gut, aber der code für die 3.-5. ebene bringt mich schier zur verzweiflung mittlerweile, was immer ich mache, es startet immer mit ebene 2.

kann mit bitte jemand auf die sprünge helfen ( apropos sprünge, jenau det isset nämlich) der einsprung in die 3. ebene misslingt immer :(

natürlich könnte ich auch das splitted navigation modul aus der kummerschmiede nutzen, damit wäre es wohl möglich. allerdings hat das kummersche modul nicht mehr die funktionalität den 'kategorie-pfad' mittels der 3 stati 'passive-active-open' abzubilden

any help highly appreciated , und merci natürlich


nachtrag: gelöst -> http://contenido.org/forum/viewtopic.ph ... highlight=
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

jdk
Beiträge: 58
Registriert: Di 22. Okt 2002, 13:00
Wohnort: München
Kontaktdaten:

Beitrag von jdk » Mi 18. Jan 2006, 18:39

mvf hat geschrieben: dazu habe ich das modul angepasst

[...]

vieleicht kann es jemand brauchen :?
Brauchen schon, aber: Es werden falsche Ids übergeben. Wenn ich das Menü ohne Mod_Rewrite einbaue, findest er die Seiten nicht. Mit Mod_Rewrite geht zwar die Navi - aber die Pfade sind auch nicht richtig. Woran liegts? Habe mich da aber ehrlich gesagt auch noch nicht groß reingehängt.

Dennis
Kennst du schon Content Management Professionals? CMPros ist der weltweite Verband für Content-Management-Profis und -Anwender.

Mitmachen! http://www.cmpros.org

Gesperrt