Seite 1 von 1

sitemap erste ebene ausblenden

Verfasst: Mi 31. Aug 2005, 09:25
von astar
Hallo,

Ich habe mir aus dem Forum folgende Sitemap installiert:

Eingabe

Code: Alles auswählen

// selected category
$selected = "CMS_VALUE[0]";

echo  "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">\n".
        "  <tr valign=\"top\">\n".
        "    <td>Kategorie wählen:</td>\n".
        "    <td>\n".
        "      <select name=\"CMS_VAR[0]\">\n".
        "        <option value='0'>---Alle---</option>\n";

// fetch all categorys
$query = "SELECT A.idcat, A.level, 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 ORDER BY A.idtree";

// execute query
$db->query($query);

// loop result and build the options
while ($db->next_record()) 
{
  // indent spacer
  $spaces = "";

  // how many levels
  $levels = $db->f("level");

  for ($i = 0; $i > $levels; $i ++) 
  {
     // add 2 spaces for every level
     $spaces = $spaces . "  ";
  } // end for

  if ($selected == $db->f("idcat")) 
  {
     // selected category
     echo "        <option selected=\"selected\" value=\"". 
             $db->f("idcat") ."\">". 
             $spaces . $db->f("name") ."</option>";
  } 
  else 
  {
     // category
     echo  "        <option value=\"". 
             $db->f("idcat") ."\">". 
             $spaces . $db->f("name") ."</option>";
  } // end if

} // end while

echo  "      </select>\n".
         "     </td>\n".
         "   </tr>\n".
         "   <tr>\n".
         "     <td>Anzahl Ebene:</td>\n".
         "     <td>\n".
         "       <input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\">\n".
         "     </td>\n".
         "   </tr>\n".
         " </table>\n";


Ausgabe

Code: Alles auswählen

<?php
  
  $amountLevel = "CMS_VALUE[1]";
  $newcat = "CMS_VALUE[0]";
  $color = array("#F7C473", "#FCC33","#f4a460","#daa520");
  
  function sitemap($newcat=0)
  {
    global $lang, $client, $amountLevel, $color, $startLevel, $cfg;
    $db  = new DB_Contenido;
    $sql  = "SELECT * 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 ".
              "B.parentid =$newcat AND level <= $amountLevel AND C.visible=1 ".
              "ORDER by A.idtree";
    $db->query($sql);
    $result = "<table border=0 cellspacing=1 cellpadding=0 border=0>";
    while ($db->next_record())
    {  
      $lvl = $db->f("level");
      if ($lvl==1)
      {
        $result.="<tr><td> </td></tr>";
      }
      $colorID=$lvl-$startLevel;
      if ($colorID > count($color)-1)
      {
        $colorID=count($color)-1;
      }
      $result	.=  "<tr><td width='140 px' bgcolor='".$color[$colorID].
                  "' valign=top><a href='front_content.php?idcat=".$db->f("idcat").
                  "&lang=$lang&client=$client' class='lmLink'>".
                  $db->f("name")."</a></td><td>".sitemap($db->f("idcat")).
                  "</td></tr>";
    }
    $result.= "</table>";
    return($result);
  }
  
  $sql = "SELECT level FROM $cfgTab_cat_tree WHERE idcat=$newcat";
  $db->query($sql);
  $db->next_record();
  $startLevel = $db->f("level");
  $amountLevel +=  $startLevel;
  if ($newcat==0){$amountLevel--;}
  echo sitemap($newcat);
?>         
die funktioniert auch einwandfrei.

Um die Sitemap in der Breite ein bisschen einzugrenzen, wollte ich die erste Ebene ausblenden (Hauptnavigation, Servicenavigation,...)

Kann mir jemand sagen wo ich im Code die Einstellung finde?

Verfasst: Mi 31. Aug 2005, 09:42
von Beleuchtfix

Code: Alles auswählen

 "B.parentid =$newcat AND level <= $amountLevel AND C.visible=1 ". 
da müsste noch ein and level >1 dazu, damit werden die Level von der anderen Seite abgefangen.

Viel Erfolg
Florian

Verfasst: Mi 31. Aug 2005, 10:16
von astar
Danke für die schnelle Antwort.

Habe gerade das "and level >1" versucht einzufügen.

Entweder es kommt bei mir dann gar keine Sitemap mehr, oder mit allen Ebenen.

Habe es wie folgt probiert.

bleibt gleich

Code: Alles auswählen

"B.parentid =$newcat AND level >1 <= $amountLevel AND C.visible=1 ".
nix mehr

Code: Alles auswählen

"B.parentid =$newcat AND level and level >1 <= $amountLevel AND C.visible=1 ".

Verfasst: Mi 31. Aug 2005, 10:40
von Beleuchtfix

Code: Alles auswählen

"B.parentid =$newcat AND level >1 and level<= $amountLevel AND C.visible=1 ".
Viel Erfolg
Florian

Verfasst: Mi 31. Aug 2005, 10:55
von astar
Da ist noch irgendwo der Wurm drinnen.

Code: Alles auswählen

"B.parentid =$newcat AND level >1 and level<= $amountLevel AND C.visible=1 ".
zeigt mir keine Ausgabe an.

Drehe ich jedoch das "And level > 1" um also "And level < 1"

zeigt mir die Sitemap nur die erste Ebene (also die die ich ausgeblendet haben möchte.

Verfasst: Mi 31. Aug 2005, 10:57
von Beleuchtfix
versuch mal >= 1 oder >0

Florian

Verfasst: Mi 31. Aug 2005, 12:09
von astar
bringt leider auch keinen erfolg. die seite bleibt immer leer.

Verfasst: Mi 31. Aug 2005, 12:44
von Beleuchtfix
hast du auch keine "rote Ampel" bei der Codeeingabe?
Florian

Verfasst: Mi 31. Aug 2005, 13:00
von astar
ne ampel ist grün.

Und wenn ich dass ">" umdrehe habe ich als Ausgabe ja nur die erste Ebene.
(Die die ich eigentlich ausblenden möchte.)

Verfasst: Mi 31. Aug 2005, 13:15
von Beleuchtfix
tut mir leid, da muss ich jetzt passen. Vielleicht erbarmt sich noch einer.

Viel Erfolg
Florian

Verfasst: Mi 31. Aug 2005, 14:54
von Beleuchtfix
Eine Idee habe ich aber noch,

wenn du nicht zu viele Bäume hast, vielleicht kannst du 2 Module einsetzen und jeweils eine Stufe tiefer anfangen. Alledrings weiß ich nicht, ob man das Modul 2 x auf der gleichen Seite ohne anpassung aufrufen kann.

Gruß
Florian

Verfasst: Do 1. Sep 2005, 09:42
von astar
ui das klingt kompliziert.

was ich nicht so ganz verstehe, ist das wenn ich das "<" umdrehe es funktioniert das ebenen ausgeblendet werden. (leider werden alle bis auf die erste ausgeblendet und ich will nur die erste ausblenden.)

Verfasst: Do 1. Sep 2005, 10:09
von Beleuchtfix
Das < bewirkt das gleiche wie die Begrenzung auf eine bestimmte Anzahl von Ebenen. Die Suche im Kategoriebum scheint rekusiv zu sein, und wenn Ebene 0 nicht gewählt wird, wird wohl der Startpunkt verpasst. Aber da blicke ich nicht genau durch. Man muss also den Kategoriepunkt finden, darf ihn aber nicht anzeigen. Zum Knobeln habe ich im Moment weder Zeit noch Lust.

Viel Erfolg
Florian

Verfasst: Do 1. Sep 2005, 14:08
von astar
verzwickt verzwackt einfach komisch...

danke für die bemühungen.