Seite 1 von 1

Sitemap für 4.4 - "Versteckte" Seiten ausblenden

Verfasst: So 11. Jan 2004, 18:56
von Andreas
hallo miteinander,
ich versuche gerade die Sitemap (für 4.4) einzubauen.
funktioniert auch alles, aber in der Ausgabeseite erscheint immer eine Spalte mit den Punkten "Hauptnavigation", Servicenavigation" und den Seiten, die gar nicht angezeigt werden sollen! Die sollen natürlich NICHT dargestellt werden!

Habe mich schon im Forum umgeschaut und die Lösungen ausprobiert.
Leider ohne Erfolg. Kann jemand helfen? Verzweifele langsam...


Hier das verwendete Modul:

Code: Alles auswählen

/*********************************************** 
* CONTENIDO MODUL - INPUT 
* 
*  Modulname  :     Sitemap 
* Author(s)   :     Jan Lengowski, Jose Rodriguez 
* Copyright   :     Contenido - four for business, Jose Rodriguez 
* Created     :     15-08-2002 
* Modified    :     14-01-2003 by nik wyss 
* Modified    :     29-12-2003 by Sascha Benkart. 
*                   - Adapt to Contenido V4.4 
************************************************/ 
// 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";

Code: Alles auswählen

<?php 
  /*********************************************** 
  * CONTENIDO MODUL - OUTPUT 
  * 
  *  Modulname   :     Sitemap 
  * Author(s)      :    Nik Wyss 
  * Copyright   :     None 
  * Created     :     14-01-2003 
  * Modified    :     14-01-2003 
  * Modified    :     29-12-2003 by Sascha Benkart. 
  *                   - Adapt to Contenido V4.4 
  *                   - Output only shows visible items 
  ************************************************/ 

  $amountLevel = "CMS_VALUE[1]"; 
  $newcat = "CMS_VALUE[0]"; 
  $color = array("#e8e8e8", "#e8e8e8","#e8e8e8","#e8e8e8"); 

  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='120px' 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 * FROM $cfgTab_cat_tree AS A, $cfgTab_cat AS B, $cfgTab_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 C.visible=1 ORDER by A.idtree";


  $db->query($sql); 
  $db->next_record(); 
  $startLevel = $db->f("level"); 
  $amountLevel +=  $startLevel; 
  if ($newcat==0){$amountLevel--;} 
  echo sitemap($newcat); 
?>

Verfasst: Mo 12. Jan 2004, 11:16
von stony
aber du hast schon in der template konfigutation alles ordentlich eingetragen?

Verfasst: Mo 12. Jan 2004, 11:27
von Andreas
stony hat geschrieben:aber du hast schon in der template konfigutation alles ordentlich eingetragen?
Ja. War eigentlich alles o.k. - bis auf das beschriebene Problem.
Allerdings ist es noch schlimmer gekommen.
Am nächsten tag war die komplette Seite (im Backend) nicht mehr sichtbar...
Nachdem ich die Sitemap entfernt habe (und einige Zeit warten mußte) ging sie wieder.

Also:
Die Sitemap funktioniert leider nicht!
Gibt es denn keine andere variante des Moduls?

Verfasst: Mo 12. Jan 2004, 18:18
von stony
bist du dir sicher das du die version 4.4. benutz? bei mir hat die tatelos funktioniert.

gruss stony

Verfasst: Di 13. Jan 2004, 09:15
von Andreas
stony hat geschrieben:bist du dir sicher das du die version 4.4. benutz? bei mir hat die tatelos funktioniert.
Ja. Version 4.4.2
Verstehe ich auch nicht...
Könntest Du mir denn den Code "zukommen lassen"?
Ich weiß, dass er auch auf der Contenido-Seite ist... nur zur Sicherheit.
Wäre sehr hilfreich.

Gruss
Andreas

Verfasst: Di 13. Jan 2004, 11:13
von stony
bin leider selber nicht so ganz zufrieden mit der ausgabe, da das tabellen layout ja nicht mehr den heutigen standards entsprich, habe ich das ganze über ein listing ausgeben lassen, was aber auch nur unsauber ausgegeben wird.

gruss stony

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
*  Modulname  :     Sitemap
* Author(s)   :     Jan Lengowski, Jose Rodriguez
* Copyright   :     Contenido - four for business, Jose Rodriguez
* Created     :     15-08-2002
* Modified    :     14-01-2003 by nik wyss
* Modified    :     29-12-2003 by Sascha Benkart. 
*                   - Adapt to Contenido V4.4
************************************************/
// 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";

Code: Alles auswählen


<?php
  /***********************************************
  * CONTENIDO MODUL - OUTPUT
  *
  *  Modulname   :     Sitemap
  * Author(s)      :    Nik Wyss
  * Copyright   :     None
  * Created     :     14-01-2003
  * Modified    :     14-01-2003
  * Modified    :     29-12-2003 by Sascha Benkart. 
  *                   - Adapt to Contenido V4.4
  *                   - Output only shows visible items
  ************************************************/
  
  $amountLevel = "CMS_VALUE[1]";
  $newcat = "CMS_VALUE[0]";
  $color = array("#aaaaff", "#bbbbff","#ccccff","#ddddff");
  
  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 = "<ol>";
    while ($db->next_record())
    {  
      $lvl = $db->f("level");
      if ($lvl==1)
      {
        $result.="";
      }
      $colorID=$lvl-$startLevel;
      if ($colorID > count($color)-1)
      {
        $colorID=count($color)-1;
      }
      $result	.=  "<li><a class='dunkel' href='front_content.php?idcat=".$db->f("idcat").
                  "&lang=$lang&client=$client' class='lmLink'>".
                  $db->f("name")."</a>".sitemap($db->f("idcat"))."</li>";
    }
    $result.= "</ol>";
    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);
?>         
[/code]

Verfasst: Mi 21. Jan 2004, 12:52
von Snoopy
Ich habe auch einmal gebastelt mit der Sitemap. Kann man sich auf http://www.ajus-hamburg.de anschauen. wenn Interesse an dem layout besteht melden. die Hintergrund gifs bitte dort kopieren.

Gruss aus Hamburg :wink:

Verfasst: Mi 21. Jan 2004, 18:22
von stony
ja besteht :> kannste das modul mal posten?

Verfasst: Mi 21. Jan 2004, 21:49
von maTTos
Sieht gut aus. Hätte auch großes Interesse daran. Bitte posten. Hat sich schon mal jemand an eine vertikale Sitemap rangemacht, so wie sie auf 4fb zu sehen ist: http://www.4fb.de/cms/view.php?idcat=36 ... m=&y=3&x=0

Verfasst: Mi 21. Jan 2004, 22:50
von emergence
sind beides wirklich sehr schöne varianten...
fehlt eigentlich nur mehr eine wo die hauptkategorien + subartikel angezeigt wird... ;-)

Verfasst: Do 22. Jan 2004, 15:50
von Snoopy
Sorry Mein lieber, aber die Hauptkategorien weden dargestellt. Das einzige ich habe zwei Bäume Druck einspaltig und Druck zweispaltig, Die habe ich Offline geschaltet. Die Artikel werden dennoch angezeigt. wenn Du auf die jeweiligen Buttons für Drucken klickst. denk an den Tread Printerfriendly Methode easy.

Im Input des Moduls kannst Du bestimmen welche Bäume du zeigen willst

Zu der Frage nach der vertikalversion dann muss ich auf meinem winzigweich system nochmal in den Papierkorb schaun, ist genauso vorhanden wie auf 4fourB gezeigt.

Gruss aus Hamburg Snoopy :wink: