Service Navi auf eine Ebene beschränken

Gesperrt
tweety
Beiträge: 3
Registriert: Do 29. Jul 2004, 21:06
Kontaktdaten:

Service Navi auf eine Ebene beschränken

Beitrag von tweety » Di 31. Aug 2004, 16:12

Hallo zusammen,

ich verwende die Service Navigation. Dabei habe ich aber das Problem, dass die Eingestellte Kategorie zwar richtig aufgeschlüsselt wird, dh. jede Unterkategorie wird angezeigt, jedoch werden auch alle darunter liegenden Kategorien mit angehängt, dadurch wird die Servicenavigation viel zu lang.

Hat jemand das Problem schön gelöst und kann mir helfen?

Schöne Grüße
Christian

Hier ist der Ausgabe-Code:

Code: Alles auswählen

<?php

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");

$catStart = "CMS_VALUE[0]";

if ($catStart != "") {
  $catIds = conDeeperCategoriesArray($catStart);

  echo '<table cellpadding="0" cellspacing="0" border="0"><tr>';
  echo '<td><img src="images/wuerfel.gif"></td>';

  if ( is_array($catIds) ) {

    foreach($catIds as $key=>$val) {
      // Ersten Eintrag ueberspringen, weil das der Menupunkt selbst ist
      // und nicht angezeigt werden soll.
      if ($key != 0) {

        $sql = "SELECT CAT.idcat AS idcat, name FROM ".
               $cfg["tab"]["cat"]." AS CAT, ".
               $cfg["tab"]["cat_lang"]." AS CATLANG 
               WHERE CAT.idcat = ".$val."
               AND CAT.idcat = CATLANG.idcat
               AND CATLANG.idlang = '$lang'
               AND CATLANG.visible = '1'";

        $db->query($sql);

        $db2 = new DB_Contenido;
        
        while ( $db->next_record() ) {
        
           $target = "_self";
          
          /* Check for redirect and new window flag */
          $sql = "SELECT idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcat='". $db->f("idcat")."' AND is_start = '1'";
          $db2->query($sql);
          if ($db2->next_record())
          {
                $cidart = $db2->f("idart");
                $sql = "SELECT external_redirect FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '$cidart' AND idlang='$lang'";
                $db2->query($sql);
                if ($db2->next_record())
                {
                    $target = ( $db2->f("external_redirect") == 0 ) ? '_self' : '_blank';
                }
          }
          echo '<td height="21" class=".navigation" style="border: 0px; border-top:1px; border-color: #F7C473; border-style: dashed; background-color: #FFFFFF; padding-left:7px; padding-right:7px;">
          <a class="klein" target="'.$target.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td>';
        } // end while
      } // if
    }  // end foreach
  } // end if (is_array)

  echo '</tr></table>';

}
?>
[/code]

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Di 31. Aug 2004, 21:48

Wenn du sie nicht anzeigen willst, warum hast du denn dann eine Unterkategorie?

Es kann sich doch dann nur um verlinkte Seiten handeln, und die kannst du auch direkt als "nicht Startartikel" unter dem Menüpunkt speichern. Oder verstehe ich das Problem falsch.

Gruß
Florian

Doffel

Beitrag von Doffel » Mo 29. Nov 2004, 17:26

Hallo, ich möchte das Thema nochmal aufgreifen - habe nämlich auch das Problem. Nur die zweite Ebene (Impressum) soll ausgegeben werden und nicht die Unterbebenen. Bsp.:
-Startseite:
-- Impressum
--- diese hier nicht mehr
--- diese hier nicht mehr
-- Kontakt
-- usw.
Kann jemand helfen? (Contendio 4.5.2 Alpha)

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Di 30. Nov 2004, 10:49

Hallo,
im Prinzep knobele ich z.Z. an einem ähnlichen Problem.

Emergence hat einen tollen Contenido-PHP Kurs unter http://www.contenido.de/forum/viewtopic ... highlight= veröffentlich.

Nach meiner Meinung musst du in dem Bereich

Code: Alles auswählen

if ($catStart != "") { 
  $catIds = conDeeperCategoriesArray($catStart); 
eine Änderung durchführen.

Viel Erfolg
Florian
Wenn du die Lösung findest, dann lass es mich bitte wissen.

Doffel

Beitrag von Doffel » Mi 1. Dez 2004, 11:10

Sry, komme da leider nicht weiter. So aufwendig kann das doch eigentlich nicht sein. Weiß denn niemand Rat?

Gast

Beitrag von Gast » Mi 1. Dez 2004, 18:02

Hallo, ich habe inzwischen eine Lösung gefunden:

Im Modul Subnavigation musss ihm Output Teil die SQL Abfrage geändert werden:
$sql = "SELECT CAT.idcat AS idcat, name FROM ".
$cfg["tab"]["cat"]." AS CAT, ".
$cfg["tab"]["cat_lang"]." AS CATLANG, ".
$cfg["tab"]["cat_tree"]." AS CATTREE
WHERE CAT.idcat = ".$val."
AND CAT.idcat = CATLANG.idcat
AND CATTREE.idcat = CAT.idcat
AND CATLANG.idlang = '$lang'
AND CATTREE.level = 1";
In der letzten Zeile kannst du durch ändern der Zahl z.B auch <=2 den/ die Level eingeben, die angezeigt werden sollen.

Viel Erfolg
Florian

Doffel

Beitrag von Doffel » Mi 1. Dez 2004, 21:23

Hallo Gast! Das die Lösung so nahe liegt, dachte ich mir schon fast. Selber hätte ich es aber nicht hin bekommen. Vielen Dank!

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Mi 1. Dez 2004, 22:25

Ich war vorhin nicht eingeloogt, Gast ist in diesem Fall Beleuchtfix

Die Lösung habe ich auch erst nach Emergence PHP Kursus heruasbekommen, vorher war die MySQL. Anfrage einfach zu viel des Guten.

Übrigens macht es noch Sinn die Zeile
AND CATLANG.visible=1
zu ergänzen, dann werden Zweige, die Offline sind, nicht angezeigt.
Gruß
Florian

Gesperrt