neues modul :: splittedNavigation

bundeswehr_soldat
Beiträge: 7
Registriert: Mi 21. Jun 2006, 07:35
Kontaktdaten:

Beitrag von bundeswehr_soldat » Mi 21. Jun 2006, 07:39

Ich habe jetzt soweit alles eingebunden. Bin erst mal an der Hauptnavigation dran.
Diese befindet sich bei mir horizontal über der Seite.
Es gibt inzwischen auch keine Fehlermeldungen, also scheine ich den Code richtig eingegeben zu haben.
Es wird aber kein Menü ausgeben.
Ich hatte den Verdacht, dass es keine Daten zum Ausgeben hat, deshalb hab ich den Code an dieser Stelle geändert, sodass er eine Ausgabe macht:

Code: Alles auswählen

elseif (!$output && $this->navigationTree[$parentId][$next]['postid'] == 0) {
            /*
             * Die Navigation enthält nichts.
             */
             echo 'Die Navigation enthält nichts';
}
Meine Befürchtung hat sich bestätigt und es wird
Die Navigation enthält nichts
ausgegeben.
Muss ich irgendwo noch das richtige Menü ausgeben, oder wißt ihr ne andere Lösung?

Grüße Tom

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mi 21. Jun 2006, 07:45

bloede Frage, aber hast du die Kategorie oder den Artikel konfiguriert? Dabei muss der Navigationsbaum ausgewaehlt werden, sonst weiss Contenido nicht, was angezeigt werden soll.
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

bundeswehr_soldat
Beiträge: 7
Registriert: Mi 21. Jun 2006, 07:35
Kontaktdaten:

Beitrag von bundeswehr_soldat » Mi 21. Jun 2006, 07:55

du meinst direkt im content unter kategorie,
Kategorie - Hauptnavigation, dann Kategorie konfigurieren,
Modul in Container ... Hauptnavigationsmodul ausgewählt und Hauptnavigation als Baum ausgewählt.

Ergebniss:
Die Navigation enthält nichts

bundeswehr_soldat
Beiträge: 7
Registriert: Mi 21. Jun 2006, 07:35
Kontaktdaten:

Beitrag von bundeswehr_soldat » Mi 21. Jun 2006, 09:19

ok, problem gelößt...

--> Es war eine 2. Sprache angelegt. Diese gelöscht -> Navigation funkt
Danke

KrissKrass
Beiträge: 86
Registriert: Mi 2. Jun 2004, 16:01
Wohnort: Bochum
Kontaktdaten:

Beitrag von KrissKrass » Fr 14. Jul 2006, 16:06

Habe das Modul eingebaut es es funktioniert super... Nur das mit dem before und after nicht. was habe ich falschgemacht?

Hier mein Quellcode:

Code: Alles auswählen

<?php
if (!class_exists('navigation')) {

   class navigation {

      /**
       * Konstruktor der Klasse.
       * @param Integer  Primärschlüssel der Startkategorie.
       */
      function navigation($startId) {

         global $client, $lang, $idcat;

         $this->startId = $startId;

         $this->client = $client;
         $this->lang = $lang;
         $this->idcat = $idcat;

         $this->before = '';
         $this->beforeEach = '';
         $this->between = '';
         $this->after = '';

         $this->db = new DB_Contenido();

         $this->setStartIds();

         $this->getNavigation();
      }

      /**
       * Auslesen der Navigationsstruktur aus der Datenbank.
       */
      function getNavigation() {

         global $cfg;

         if ($this->startId != $this->id[0]) {
            /*
             * Wenn die StartId nicht identisch ist mit der höchsten Ebene der
             * aktuell selektierten Kategorie, dann liegt die gewählte Kategorie
             * folgerichtig ausserhalb des für die Navigation gewählten Baumes.
             * In diesem Fall ist nur die Hauptnavigation einzublenden.
             */
            $this->id[0] = $this->startId;
            for ($i = 1; $i <= 3; $i++) {
               $this->id[$i] = -1;
            }
         }

         $this->db->query("" .
               "SELECT " .
               "   a.idcat, " .
               "   a.parentid, " .
               "   a.preid, " .
               "   a.postid, " .
               "   a.parentid, " .
               "   b.visible, " .
               "   b.name, " .
               "   b.idlang " .
               "   FROM {$cfg['tab']['cat']} AS a " .
               "LEFT JOIN {$cfg['tab']['cat_lang']} AS b ON a.idcat = b.idcat " .
               "WHERE " .
               "   a.idclient = {$this->client} " .
               "   AND (" .
               "      a.parentid = {$this->id[0]} " .
               "      OR a.parentid = {$this->id[1]} " .
               "      OR a.parentid = {$this->id[2]} " .
               "      OR a.parentid = {$this->id[3]} " .
               "   ) " .
               "");

         $this->navigationTree = array();

         $this->firstId[0] = 0;
         $this->firstId[1] = 0;
         $this->firstId[2] = 0;
         $this->firstId[3] = 0;
         while ($this->db->next_record()) {
            for ($i = 0; $i <= 3; $i++) {
               if (($this->firstId[$i] == 0 && $this->db->f('parentid') == $this->id[$i] && $this->db->f('preid') == 0 && $this->db->f('idlang') == $this->lang) || ($this->firstId[$i] == 0 && $this->db->f('parentid') == $this->id[$i] && $this->db->f('preid') == 0 && $this->db->f('idlang') == null)) {
                  $this->firstId[$i] = $this->db->f('idcat');
               }
            }
            $this->navigationTree[$this->db->f('parentid')][$this->db->f('idcat')] = array('preid'=>$this->db->f('preid'), 'postid'=>$this->db->f('postid'), 'visible'=>$this->db->f('visible'), 'name'=>$this->db->f('name'), 'idlang'=>$this->db->f('idlang'));
         }
      }

      /**
       * Ausgabe der Navigation an die Standardausgabe.
       * @param String  Navigationstyp
       */
      function showNavigation($type, $next = -1) {

         static $first;
         static $output = false;

         if ($next == 0) {
            return false;
         }

         if ($next == -1) {
            echo $this->before;
            $next = $this->firstId[$type];
            $first = true;
         }

         $parentId = $this->id[$type];

         $link = 'front_content.php?idcat='.$next;

         if ($this->navigationTree[$parentId][$next]['visible'] == 1 && $this->navigationTree[$parentId][$next]['idlang'] == $this->lang) {
            if (!$first) {
               echo $this->between;
            }
            if ($this->isSelected($next)) {
                echo '<td width="117" height="33" bgcolor="#DCDCDC" align="center"><a href="'.$link.'" class="navigation_active">'.$this->navigationTree[$parentId][$next]['name'].'</a></td><td width="5" bgcolor="#FFFFFF"><img src="images/space.gif" width="5" height="5" alt=""></td>';
            } else {
                echo '<td width="117" height="33" bgcolor="#DCDCDC" align="center"><a href="'.$link.'" class="navigation">'.$this->navigationTree[$parentId][$next]['name'].'</a></td><td width="5" bgcolor="#FFFFFF"><img src="images/space.gif" width="5" height="5" alt=""></td>';
            }

            $first = false;
            $output = true;
         } elseif (!$output && $this->navigationTree[$parentId][$next]['postid'] == 0) {
            /*
             * Die Navigation enthält nichts.
             */
             echo ' ';
         }

         $this->showNavigation($type, $this->navigationTree[$parentId][$next]['postid']);
      }

      /**
       * Ausgabe vor der Navigation
       * @param String  Ausgabe vor der Navigation.
       */
      function before($text) {
         echo '';
      }

      /**
       * Ausgabe vor jedem Eintrag
       * @param String  Ausgabe vor jedem Eintrag.
       */
      function beforeEach($text) {
         $this->beforeEach = $text;
      }

      /**
       * Ausgabe vor jedem selektierten Menueintrag
       * @param String  Ausgabe vor jedem selektierten Menueintrag.
       */
      function beforeSelected($text) {
         $this->beforeSelected = $text;
      }

      /**
       * Ausgabe zwischen zwei Hauptmenupunkten
       * @param String  Ausgabe zwischen zwei Hauptmenupunkten.
       */
      function between($text) {
         $this->between = $text;
      }

      /**
       * Ausgabe nach der Navigation
       * @param String  Ausgabe nach der Navigation.
       */
      function after($text) {
         echo '';
      }

      /**
       * Gibt das Level der Kategorie zurück.
       * @param Integer  Primärschlüssel der Kategorie.
       * @return Integer Level der spezifizierten Kategorie.
       */
      function getLevel($idcat) {

         global $cfg;

         if (empty($idcat)) {
            return 0;
         }

         $this->db->query("" .
               "SELECT level FROM {$cfg['tab']['cat_tree']} " .
               "WHERE " .
               "   idcat = $idcat" .
               "");
         if ($this->db->next_record()) {
            return $this->db->f('level');
         } else {
            return 0;
         }
      }

      /**
       * Gib die Tiefe relativ zum Hauptmenu an.
       * @param Integer  Primärschlüssel der Kategorie
       * @return Integer Level relativ zum Hauptmenu
       */
      function getNetLevel($idcat) {

         return $this->getLevel($idcat) - $this->getLevel($this->startId);
      }

      /**
       * Ermittlung des jeweils ersten Kategorieeintrages jeder Ebene. Die
       * Speicherung dieser Daten erfolgt in das Klassenattribut id.
       */
      function setStartIds() {

         $id = $this->idcat;

         $level = $this->getNetLevel($id);
         $this->id[$level] = $id;

         while ($level > 0) {
            $this->id[$level-1] = $this->getParentId($id);
            $id = $this->id[$level-1];
            $level = $this->getNetLevel($id);
         }

         if (empty($this->id)) {
            $this->id[0] = $this->startId;
         }
         for ($i = 1; $i <= 3; $i++) {
            if (empty($this->id[$i])) {
               $this->id[$i] = -1;
            }
         }
         ksort($this->id);
      }

      /**
       * Ermittlung des Elternelementes der Kategorie mit dem Primärschlüssel
       * idcat
       * @param Integer  Primärschlüssel des Kindelementes, dessen Elternelement
       * ermittelt werden soll.
       * @return Integer Primärschlüssel des Elternelementes.
       */
      function getParentId($idcat) {

         global $cfg;

         $this->db->query("" .
               "SELECT parentid FROM {$cfg['tab']['cat']} " .
               "WHERE " .
               "   idcat = $idcat " .
               "");
         if ($this->db->next_record()) {
            return $this->db->f('parentid');
         } else {
            return 0;
         }
      }

      /**
       * Anzeige, ob eine Navigationsebene Elemente enthält oder nicht.
       * @param Integer  Navigationsstufe.
       * @return Boolean True, wenn die Navigationsstufe leer ist (keine Elemente
       * enhält). Sonst false.
       */
      function navigationEmpty($level) {

         if ($this->firstId[$level] == 0) {
            return true;
         }

         return false;
      }

      /**
       * Anzeige, ob eine Kategorie selektiert ist oder nicht. Eine Kategorie gilt
       * als selektiert, wenn sie die aktuelle Kategorie ist oder ein direktes
       * oder indirektes Elternelement der aktuellen Kategorie.
       * @param Integer  Primärschlüssel der Kategorie, deren Status gefragt ist.
       * @return Boolean True, wenn die gefragte Kategorie mit der aktuellen
       * Kategorie übereinstimmt oder ein direktes oder indirektes Elternelement
       * der aktuellen Kategorie darstellt.
       */
      function isSelected($idcat) {

         return in_array($idcat, $this->id);
      }
   }
}

$navigation = new navigation("CMS_VALUE[0]");
$navigation->after('</tr></table></td></tr><tr><td bgcolor="#FFFFFF"><img src="images/space.gif" width="10" height="5" alt=""></td></tr></table>');
$navigation->before('<table width="100%"  border="0" cellspacing="0" cellpadding="0"><tr><td bgcolor="#DCDCDC"><table border="0" cellspacing="0" cellpadding="0"><tr>');
$navigation->showNavigation(0);
?>
Dabke für die Hilfe.

broedi
Beiträge: 8
Registriert: Do 6. Jul 2006, 13:59
Kontaktdaten:

Beitrag von broedi » Mi 26. Jul 2006, 17:15

philippe hat geschrieben: und nun kam eine sprache hinzu (kurz vor launch)
und im deutschen bereich (lang1) ist die navi weg.
:shock:

any idea??
zum sprachenproblem:

in der funktion getNavigation() des moduls den folgenden sql-code (ab FROM) ersetzen hat zumindest bei mir geholfen:

Code: Alles auswählen

               "   FROM {$cfg['tab']['cat']} AS a " .
               "INNER JOIN {$cfg['tab']['cat_lang']} AS b ON a.idcat = b.idcat " .
               "WHERE " .
               "   b.idlang = ". $this->lang." " .
               "   AND a.idclient = {$this->client} " .
               "   AND (" .
               "      a.parentid = {$this->id[0]} " .
               "      OR a.parentid = {$this->id[1]} " .
               "      OR a.parentid = {$this->id[2]} " .
               "      OR a.parentid = {$this->id[3]} " .
               "   ) " .
               "");
gruss
broedi

alwin4711
Beiträge: 5
Registriert: Fr 3. Feb 2006, 16:18
Wohnort: Berlin
Kontaktdaten:

Immernoch fehlende Einbindung von AFTER

Beitrag von alwin4711 » Di 1. Aug 2006, 00:36

Hallo,

könnte mal jemand von den php-Spezialisten mir die Änderungen mitteilen
um die Funktion

function after($text) {
$this->after = $text;
}



im Navigationsmodul zu aktivieren.

So wie es im Moment ist, geht die Navigation leider nicht richtig.

Vielen Dank im voraus
Alwin

shadows
Beiträge: 24
Registriert: Mo 8. Mai 2006, 12:54
Wohnort: Hannover
Kontaktdaten:

Problem mit gesplitteter Navigation und Hilfsnavi

Beitrag von shadows » Do 3. Aug 2006, 12:34

Hallo ihrs,

ich habe die gesplittete Navigation eingebaut und diese funktioniert auch sehr gut. Allerdings habe ich nun eine Hilfsnavigation (Impressum|Sitemap|Suche) eingebaut und bekomme die Fehlermeldung:

Fatal error: Call to a member function showNavigation() on a non-object in C:\Programme\xampp\htdocs\contenido-cms\cms\front_content.php(792) : eval()'d code on line 525

Nehme ich die Hilfsnavi raus, läuft's wieder korrekt. Wo liegt denn mein Fehler? Kann mir jemand helfen?

Vielen Dank schon mal!
shadows

Deddy
Beiträge: 79
Registriert: Do 1. Jun 2006, 09:00
Kontaktdaten:

Re: Problem mit gesplitteter Navigation und Hilfsnavi

Beitrag von Deddy » Mo 28. Aug 2006, 10:43

Hallo!

Ich habe da noch ein kleines Problemchen.

Meine Navigation sieht so aus:

Code: Alles auswählen

+Hauptnavigation
    +meine Familie
      -Ich
      -mein Bruder
    +Kontakt
      -Kontaktformular
    +Impressum

Funktioniert soweit gut. Die gesplittete Subnavi wir wunderbar angezeigt. Auch die Hauptnavi. Wähle ich aber die Seite "mein Bruder" aus, wird mir in der gesplitteten Navigation nur meine Famile angezeigt. Ich verwende die Release: 4.6.8.

Wäre prima, wenn mir da jemand helfen würde. Ich komme einfach nicht weiter.

Gruß Deddy

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

    Re: Problem mit gesplitteter Navigation und Hilfsnavi

    Beitrag von mvf » Mo 28. Aug 2006, 12:49

    Deddy hat geschrieben:Hallo!

    Ich habe da noch ein kleines Problemchen.

    Meine Navigation sieht so aus:

    Code: Alles auswählen

    +Hauptnavigation
        +meine Familie
          -Ich
          -mein Bruder
        +Kontakt
          -Kontaktformular
        +Impressum

    Funktioniert soweit gut. Die gesplittete Subnavi wir wunderbar angezeigt. Auch die Hauptnavi. Wähle ich aber die Seite "mein Bruder" aus, wird mir in der gesplitteten Navigation nur meine Famile angezeigt. Ich verwende die Release: 4.6.8.

    Wäre prima, wenn mir da jemand helfen würde. Ich komme einfach nicht weiter.

    Gruß Deddy

      ähm wie ???

      genau das ist doch der sinn einer gesplitteten navi

      level 1 zb horizontal im header =
      meine fam - kontakt - impressum

      click auf meine fam öffnet dann z.b. in einer column oder an anderer stelle im layout
      - ich
      - mein bruder

      clcik auf eines der beiden zeigt den startikel


      verstehe nicht was du meinst
      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

      Deddy
      Beiträge: 79
      Registriert: Do 1. Jun 2006, 09:00
      Kontaktdaten:

      Beitrag von Deddy » Di 29. Aug 2006, 07:21

      Manchmal sieht man den Wald vor lauter Bäumen nicht mehr.

      Hat sich erledigt :)

      DocET
      Beiträge: 30
      Registriert: Mi 22. Mär 2006, 17:16
      Wohnort: München
      Kontaktdaten:

      Beitrag von DocET » Di 5. Sep 2006, 16:04

      funktioniert die navi auch mit adv.modrewrite?

      lg

      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 5. Sep 2006, 16:52

      schon aml probiert? ;)
      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

      simas
      Beiträge: 153
      Registriert: Fr 7. Mär 2003, 11:15
      Wohnort: Gampelen, Schweiz
      Kontaktdaten:

      Beitrag von simas » Sa 28. Okt 2006, 16:12

      Ist es auch möglich, Navigation 1 in einem Container und Navigation 2, 3 etc. so wie es bei der Standardnavigation ist darzustellen?

      Vielen Dank
      Simon

      rene04
      Beiträge: 600
      Registriert: Mo 10. Okt 2005, 12:28
      Wohnort: Kaiserslautern
      Kontaktdaten:

      Beitrag von rene04 » Mo 30. Okt 2006, 09:08

      @simas:
      wie meinst du das genau? etwa so: www.sieda.com ?

      gruesse rene

      Gesperrt