Hauptnavi 3geteilt (gelöst dank emergence!)

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

Hauptnavi 3geteilt (gelöst dank emergence!)

Beitrag von mvf » Mo 16. Jan 2006, 18:25

ich poste das ergebnis mal hier oben, ist einfacher zum suchen und pflegen ;)

also ausgangsbasis ist der code von OSI (dank an dieser stelle)
der die standard navigation über 5 level in level1 und level2-5 geteilt hat

damit lies sich schon prima level1 horizontal im header der rest dann links oder rechts vertikal abbilden. ich benötigte nun das ganze nochmal aufgteilt also 3 module level1 level2 und level3-5 um (siehe ende des ersten postings) eine 3geteilte navi abbilden zu können.

man benötigt also zunächst die geteilte hauptnavi von OSI
http://contenido.org/forum/viewtopic.php?t=10487
im 2. output dann den code auf die 2. Navigationsebene kürzen

sieht dann so aus

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');
                  }

               } // 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;
?>
und dann als weiteres modul einen dritten ouputcode no input wie auch schon beim zweiten 'Split'

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
* Modifier   :  Guido Unger (mvf), 'contenido'.funjumping.de
* Modified   :  16-01-2005
* Changes    :  included 'startidartlang' for compatibility with stese's mr_464_org
                modification to extract 3rd-5th level for seperat display 
**********************************************/

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

/* -mvfbof- fetch third level array -> $thirdLevel */
foreach ($navitems as $key => $data) {

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

                  if (is_array($data['sub'])) {
                        $thirdLevel = $data['sub'];
                    }

    } // end if
} // end foreach

/* -mvfeof- fetch third level */


/* Start Output buffer */
ob_start();

foreach ($thirdLevel as $key => $data) { // -mvf $thirdLevel statt $navitems

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

       /* 2. Navigation level */
       if (is_array($data['sub'])) {  // -mvf überbrückt die 2. ebene

          /* 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 if
} // end foreach

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

/* Clean buffer */
ob_end_clean();

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


?>
das ganze kann man dann wie üblich über die html templates und per css frei gestalten, 3 stati on-active-off

wichtig ist nur, dass alle 3 module in einem template sein müssen, denn der 'baum' wird 1x über das erste modul im input geregelt/abgefragt.

wer's brauchen kann ;)



und hier der eigentliche erste thread mit der anfrage:
mvf hat geschrieben:habe das zwar hier schon mal gepostet aber im grunde ist es ja ein neuer request

ich möchte die geteilte hauptnavi 4.6.2.BETA von OSI nochmals teilen :? um diese 3 teile dann auch frei wie nachfolgend im layout positionieren zu können

ziel:

Code: Alles auswählen

ebene1 - horizontal im header
ebene2 - horizontal im header unter ebene1

ebene3 - vertikal untereinander links
   ebene4 - vertikal untereinander links 
      ebene5 - vertikal untereinander links
ebene1 ist ja bereits fertig aus dem ursprungsmodul 'entkoppelt' und kann per html_template horizontal abgebildet werden, dann wirft das modul von OSI die ebene2-5 wie folgt aus

Code: Alles auswählen

ebene1 - horizontal 


ebene2 - vertikal
   ebene3 - vertikal 
      ebene4 - vertikal 
         ebene5 - vertikal
wenn ich den 2.outputcode von OSI's modul nun um die ebene 3-5 kürze dann kann ich schon mal

Code: Alles auswählen

ebene1 - horizontal im header
ebene2 - horizontal im header unter ebene1
abbilden

allerdings geht es danach wie immer ich auch den 'dritten' output gestalte auf folgendes hinaus

Code: Alles auswählen

ebene1 - horizontal im header
ebene2 - horizontal im header unter ebene1


ebene2 - vertikal
   ebene3 - vertikal 
      ebene4 - vertikal 
         ebene5 - vertikal
kann mir da bitte jemand helfen :oops: ich sitze nun schon seit freitag abend dran und langsam ist es wirklich zum verzweifeln.

jeder hinweis ist willkommen, denn mir ist immer noch nicht ganz klar wie der code überhaupt arbeitet :(

ziel ist also die ebene2 aus dem 2. outputcode zu entkoppeln und einen dritten frei plazierbaren outputcode für ebene3-5 zu bekommen :?:

merci vielmal und
Zuletzt geändert von mvf am Di 17. Jan 2006, 01:35, insgesamt 2-mal geändert.
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

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 16. Jan 2006, 21:41

hmm...

ich versuch mal etwas anders zu helfen...

alles bis zu dem punkt

Code: Alles auswählen

foreach ($navitems as $key => $data) {
dient nur dazu einen array zu erzeugen...

d.h alle daten die du benötigst befinden sich bereits in dem array...
eine neu generierung ist nicht notwenig...

ab den zeitpunkt mit dem foreach findet nur mehr eine ausgabe der daten des arrays statt...

du kannst dir ja mal den array ansehen in dem du vor obriger code zeile

Code: Alles auswählen

echo "<pre>";print_r($navitems);echo"</pre>";
ergänzt...

so wie die routine geschieben ist findet bei jedem durchlauf eine auswertung statt ob

Code: Alles auswählen

if (is_array($data['sub'])) { 
existiert...
das ist wiederum ein ein array und so weiter und so fort...

d.h man könnte an ein anderes modul diesen array übergeben und diesen array wie die erste ebene anzeigen lassen...

ist immer das selbe spielchen...

vielleicht hilfts dir ja etwas weiter ;-)
*** make your own tools (wishlist :: thx)

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, 22:00

emergence hat geschrieben:

Code: Alles auswählen

foreach ($navitems as $key => $data) {
dient nur dazu einen array zu erzeugen...
das habe ich verstanden und daher ist es auch egal welche navigationebene man raus nimmt, die sind sozusagen immer nur 'eine weitere ebene tiefer' aber eben nicht explizit level1 2 3 usw, mit ausnahme der daran gekoppelten templates (ich taste mich heran)
emergence hat geschrieben: d.h alle daten die du benötigst befinden sich bereits in dem array...
eine neu generierung ist nicht notwenig...
korrekt, verstanden
emergence hat geschrieben: du kannst dir ja mal den array ansehen in dem du vor obriger code zeile

Code: Alles auswählen

echo "<pre>";print_r($navitems);echo"</pre>";
ergänzt...
das ja mal für nen selfmademan und rookie wie mich ein echter tipp ;) nicht lachen :lol:
emergence hat geschrieben: so wie die routine geschieben ist findet bei jedem durchlauf eine auswertung statt ob

Code: Alles auswählen

if (is_array($data['sub'])) { 
existiert...
das ist wiederum ein ein array und so weiter und so fort...
korrekt, da kommen wir der sache ja auch näher, woher kommt die info wo ich nun eigentlich bin also mein aktuelles level, des array hält ja den ganzen baum vor :?

im code findet sich der part wo das array erstellt wird mit

Code: Alles auswählen

$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... */
da wird auf die $sel_idcat referiert und die kann ich nicht verfolgen :( irgendwie muss ich ja an die con_cat_tree dran um zu definieren, dass es nur ab level3 losgeht dachte ich. witers ist mir der part mit dem redirect dann auch ned klar :( jaja die phpskills, aber ich wiederhole mich, ich beisse ;)
emergence hat geschrieben: d.h man könnte an ein anderes modul diesen array übergeben und diesen array wie die erste ebene anzeigen lassen...


da kann ich zugegebener masse nicht ganz folgen, mein problem ist ja nach wie vor dem modul den einsprung 3.level mitzuteilen :( [@emmergence:eben doch skills]
emergence hat geschrieben: vielleicht hilfts dir ja etwas weiter ;-)

auf jeden fall und merci für den input
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

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 16. Jan 2006, 22:07

gut, eh nicht schlecht mit gekommen.. ;-)

nur bei der schlüssel position bist du ausgestiegen
mvf hat geschrieben:
emergence hat geschrieben: so wie die routine geschieben ist findet bei jedem durchlauf eine auswertung statt ob

Code: Alles auswählen

if (is_array($data['sub'])) { 
existiert...
das ist wiederum ein ein array und so weiter und so fort...
korrekt, da kommen wir der sache ja auch näher, woher kommt die info wo ich nun eigentlich bin also mein aktuelles level, des array hält ja den ganzen baum vor :?
ähm um deine frage zu beantworten das siehst du an den kommentaren in dem modul...

wenn du das weisst übergibst du diesen array an eine variable
so wie hier

beispiel:

Code: Alles auswählen

if (is_array($data['sub'])) {
    $thirdLevel = $data['sub'];
}
in einem anderen modul behandelst du nun $thirdLevel wie $navitems

gecheckt ?
*** make your own tools (wishlist :: thx)

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, 22:14

emergence hat geschrieben: gecheckt ?
noned ganz

aber ich habs auch nur überflogen, ich werde jetzt mal was essen, die letzte feste mahlzeit hiess auch irgendwie Dinner und scheint mir doch schon länger her ;)

45 mins und dann gebe ich feedback. ;)

mahlzeit!

ach ja nochmal zum thema österreich, bin ganz grosser fan von

INDIEN - HITERHOLZ8 - MUTTERTAG - ATOMPILZ VON LINKS - usw ;)
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, 23:03

emergence hat geschrieben: wenn du das weisst übergibst du diesen array an eine variable
so wie hier

beispiel:

Code: Alles auswählen

if (is_array($data['sub'])) {
    $thirdLevel = $data['sub'];
}
in einem anderen modul behandelst du nun $thirdLevel wie $navitems

gecheckt ?
fast ;) also der array der ausgespuckt wird sieht z.b. so aus:

Code: Alles auswählen

Array
(
    [2] => Array
        (
            [idcat] => 2
            [name] => FIREPLACES
            [idart] => 2
            [public] => 1
            [idcatlang] => 2
            [target] => _self
            [sub] => Array
                (
                    [4] => Array
                        (
                            [idcat] => 4
                            [name] => Gas
                            [idart] => 4
                            [public] => 1
                            [idcatlang] => 4
                            [target] => _self
                            [sub] => Array
                                (
                                    [13] => Array
                                        (
                                            [idcat] => 13
                                            [name] => Modern
                                            [idart] => 12
                                            [public] => 1
                                            [idcatlang] => 13
                                            [target] => _self
                                        )

                                    [14] => Array
                                        (
                                            [idcat] => 14
                                            [name] => Traditional
                                            [idart] => 13
                                            [public] => 1
                                            [idcatlang] => 14
                                            [target] => _self
                                        )

                                )

                        )

                    [5] => Array
                        (
                            [idcat] => 5
                            [name] => Electrical
                            [idart] => 15
                            [public] => 1
                            [idcatlang] => 5
                            [target] => _self
                        )

                    [6] => Array
                        (
                            [idcat] => 6
                            [name] => Wood or Fuel
                            [idart] => 6
                            [public] => 1
                            [idcatlang] => 6
                            [target] => _self
                        )

                )

        )

    [3] => Array
        (
            [idcat] => 3
            [name] => BESPOKE DESIGNS
            [idart] => 3
            [public] => 1
            [idcatlang] => 3
            [target] => _self
        )

    [9] => Array
        (
            [idcat] => 9
            [name] => STOVES
            [idart] => 9
            [public] => 1
            [idcatlang] => 9
            [target] => _self
        )

    [10] => Array
        (
            [idcat] => 10
            [name] => ACCESSORIES
            [idart] => 10
            [public] => 1
            [idcatlang] => 10
            [target] => _self
        )

    [11] => Array
        (
            [idcat] => 11
            [name] => SHOWROOM
            [idart] => 11
            [public] => 1
            [idcatlang] => 11
            [target] => _self
        )

)
deinen worten kann ich wohl folgen, also die logic, den array auszulesen und die einzelnen subs dann $level_x variablen zuzuweisen

aber da werde ich wohl noch reichlich bücher wälzen müssen, denn mal eben so bilde ich das nicht ab :(

vorallem, nicht das ich deinen ansatz nicht schätze, aber wenn es osi gelungen ist einfach das erste level aus der standardnavi zu kapseln sollte das doch auch mit den weiteren gehen.

soviele wege und dabei möchte ich gar nicht nach rom :oops:

auf jeden fall werde ich deinen ansatz mal weiter verfolgen, denn da fehlt mir lediglich die syntax, denn wie gesagt die logic kann ich wenigstens nachvollziehen, that keeps me going

und auf geht's in den tag4 der navisplittung

und abermals "Danke, ganz lieb, 3-2-1 .. " (nee das dann doch nicht)
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, 23:32

step by step

@emmergence im speziellen ;) natürlich aber auch den rest der community

mal so zum vetändnis

wenn ich den output aus der 4.6.3 geteilte navi für level 2-5 also den 2. output hernehme, dann habe ich ja genau meinen array (s.o.) bereits ,$navitems.

anstatt den jetzt durch die schleife foreach mit ale subs durchzulaufen und templates zuzuweisen, gehe ich nun wie emmergnce beschrieben hat vor.

also

Code: Alles auswählen

if (is_array($data['sub'])) {
    $thirdLevel = $data['sub'];
}
dann habe ich sozusagen jede 'ebene'/level aus dem array in einer variablen $firstlevel $secondlevel ... usw.

und dann? :oops: :oops: :oops: :oops: schietkram ich checks ned :twisted:
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 » Di 17. Jan 2006, 01:01

es funktioniert

man ein meilenstein in meiner php karriere
contenidos und contenidas ich glaub ich hab endlich den umgang mit arrays begriffen

emmergence was so ein schubs doch manchmal für eine wirkung hat, merci vielmal

ich werde mir das jetzt noch ein wenig anschauen, ganz gefällt es mir noch nicht, denn die ausgabe stimmt zwar im frontend aber im code habe ich da noch soviele fragmente, dass des noch cleaning bedarf

verspreche aber 'och und eiliitsch' hier morgen mein hinrexcrement zu posten.

mich beschleicht so ein wohlig warmes gefühl als hätte sich gerade eine tür in eine in den contenidogarten aufgetan. ab heute nur noch vollgas, yippiehhhhhhhhhhhh

emmergence D A N K E

nachtrag:
habe jetzt alles brav im ersten posting eingestellt ;)
korrekturen highly appreciated !!!
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

raoulkimba
Beiträge: 3
Registriert: Sa 1. Apr 2006, 22:11
Kontaktdaten:

Re: Hauptnavi 3geteilt (gelöst dank emmergence!)

Beitrag von raoulkimba » Sa 1. Apr 2006, 22:47

mvf hat geschrieben:damit lies sich schon prima level1 horizontal im header der rest dann links oder rechts vertikal abbilden. ich benötigte nun das ganze nochmal aufgteilt also 3 module level1 level2 und level3-5 um (siehe ende des ersten postings) eine 3geteilte navi abbilden zu können....
Hi mvf... ich habe Deine Lösungen eingebaut... und habe stets einen Fehler... habe sogar nochmal mit einer standard installation alles gemacht... vielleicht kannst Du mir auf die Sprünge helfen..

Die 3. Ebene sieht man prima.. aber sobald man drauf klickt... erscheint ein Fehler der nicht mehr loszubringen ist... und der komplette 2. Ebene und 3. Ebene verschwindet nur noch die 1. bleibt.

Warning: Invalid argument supplied for foreach() in /serverpfad/cms/front_content.php(792) : eval()'d code on line 827

Ich habe ein wenig getestet.. das ganze scheint damit zu tun an der Stelle, wo in Deinem 3. Modul der 3. Level abgefragt wird... wenn ich das ausblende bekomme ich zwar keinen Fehler, habe aber auch unerwünschter Weise die 2. Ebene doppelt drin...
/* -mvfbof- fetch third level array -> $thirdLevel */
foreach ($navitems as $key => $data) {

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

if (is_array($data['sub'])) {
$thirdLevel = $data['sub'];
}

} // end if
} // end foreach

/* -mvfeof- fetch third level */

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

Re: Hauptnavi 3geteilt (gelöst dank emmergence!)

Beitrag von mvf » Sa 1. Apr 2006, 22:53

kann ich nicht nachvollziehen :?

bei mir läuft des auf verschiedenen 4.6.4mr2901 ohne probleme

z.b. hier http://anu.funjumping.de/home/developme ... index.html

bis level 4 siehe url
home
development
test
subkat1

suche mal im board nach

Invalid argument supplied for foreach()
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 » Sa 1. Apr 2006, 22:56

Na, ganz so einfach ist es nicht. Die Fehlermeldung kommt daher, dass das Array leer ist oder nicht existiert.

Ich habe mich damit nicht weiter beschäftigt, aber gibt es denn Kategorien darunter bzw. werden die Module auch in der richtigen Reihenfolge ausgeführt?

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

raoulkimba
Beiträge: 3
Registriert: Sa 1. Apr 2006, 22:11
Kontaktdaten:

Re: Hauptnavi 3geteilt (gelöst dank emmergence!)

Beitrag von raoulkimba » So 2. Apr 2006, 12:26

mvf hat geschrieben:kann ich nicht nachvollziehen :?
Invalid argument supplied for foreach()
HerrB hat geschrieben:...das Array leer ist oder nicht existiert... gibt es denn Kategorien darunter bzw. werden die Module auch in der richtigen Reihenfolge ausgeführt?
Ok... Kategorien gibt es ... ob die richtige Reihenfolge der Module abgearbeitet werden, weiss ich nicht, versuche aber mal das heraus zu bekommen... Die Container liegen jedenfalls "untereinander"...

würde mir helfen, wenn ich mal ein template (inkl. css) bekommen könnte, bei dem es mit diesen Modulen geht... dann kann ggf. ich nachvollziehen, worin der fehler liegen könnte.

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

Beitrag von HerrB » Mo 3. Apr 2006, 14:07

Du kannst auch in der contenico/includes/config.misc.php mal den debug-Mode aktivieren (=true). Dann erhältst Du im Frontend den gesamten Code, wie er ausgeführt wird. In Kombination mit fummeln im Modul solltest Du dann dahinterkommen können.

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

Dinkel
Beiträge: 565
Registriert: Di 22. Mär 2005, 14:52
Kontaktdaten:

Beitrag von Dinkel » So 23. Apr 2006, 19:57

also das Problem mit dem Invalid argument supplied for foreach() hab ich auch... gibt es inzwischen eine Lösung dafür?
selbstentwickelte Module:
Downloads und Infos zu den Modulen: gibt es hier.
Modul: Forum | Version 0.9 | getestet: 4.6.24 MR, 4.8.11, 4.8.11 AMR
Modul: Galleriffic | Version: 0.3.4 BETA | getestet: 4.8.11, 4.8.11 AMR, 4.8.12, 4.8.12 AMR
Modul: Metadata | Version: 2.0 | getestet: 4.9.7, 4.9.7 AMR
Modul: Slider Gallery | Version: 1.0 | getestet: 4.9.12 AMR
Modul: Up- & Download | Version: 4.1 | getestet: 4.9.12 AMR

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

Beitrag von HerrB » So 23. Apr 2006, 20:04

Bestimmt, es wollte nur keiner verraten... :twisted:
Du kannst auch in der contenico/includes/config.misc.php mal den debug-Mode aktivieren (=true). Dann erhältst Du im Frontend den gesamten Code, wie er ausgeführt wird. In Kombination mit fummeln im Modul solltest Du dann dahinterkommen können.
Und die Lösung natürlich nicht vergessen...

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

Gesperrt