Seite 1 von 1

Modul Sitemap zeigt nur Startartikel einer Kategorie an

Verfasst: Sa 17. Jan 2004, 21:01
von laurisilva
Hallo,
ich verwende das Standart Sitemap-Modul (Code siehe unten). Leider kann es nur die Startartikel und nicht alle in einer Kategorie befindlichen Artikel anzeigen. Kann mir jemand sagen wie ich die DB-Abfrage ändern muss, dass ALLE Artikel angezeigt werden?

Input

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


// Variablendeklarationen
// Das Modul ist für eine ältere Contenido-VErsion - offensichtlich hießen Variablen damals anders...

$cfgTab_cat_tree = $cfg['tab']['cat_tree'];
$cfgTab_cat = $cfg['tab']['cat'];
$cfgTab_cat_lang = $cfg['tab']['cat_lang'];

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

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

            // fetch all categorys
            $query = "SELECT A.idcat, A.level, C.name 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 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>
          </td>
        </tr>
        <tr>
          <td>Anzahl Ebene:</td>
          <td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\"></td>
        </tr>
      </table>";
Output

Code: Alles auswählen

<?
//echo "<pre>";
//print_r($GLOBALS);
//echo "</pre>";
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
*  Modulname   :     Sitemap
* Author(s)      :    Nik Wyss
* Copyright   :     None
* Created     :     14-01-2003
* Modified    :     14-01-2003
************************************************/

// Variablendeklarationen
// Das Modul ist für eine ältere Contenido-VErsion - offensichtlich hießen Variablen damals anders...

$cfgTab_cat_tree = $cfg['tab']['cat_tree'];
$cfgTab_cat = $cfg['tab']['cat'];
$cfgTab_cat_lang = $cfg['tab']['cat_lang'];


$amountLevel = "CMS_VALUE[1]";
$newcat = "CMS_VALUE[0]";
$color = array("#7D93D4", "#B8C2D6","#C9D4EA","#D7E3FA");

function sitemap($newcat=0){
  global $lang, $client, $amountLevel, $color, $startLevel, $cfgTab_cat, $cfgTab_cat_tree, $cfgTab_cat_lang;
  $db = new DB_Contenido;
  $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 C.visible = '1' AND B.idclient='$client' AND B.parentid =$newcat ORDER by A.idtree";

$db->query($sql);
  $result = "<table width=100% align=left 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 class=\"news\" href='front_content.php?idcat=".$db->f("idcat")."' 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);



?>
Ich habe das Modul leicht verändert, um es Google freundlicher zu machen.


Gruss
Laurisilva

Verfasst: Di 20. Jan 2004, 11:54
von stony
ja das wäre mal ne gute sache, ein sitemap modul das wirklcih alle seiten in allen ordner anzeigen würde.
vielleicht könnte sowas in der 4.4.3 realisiert werden?

gruss stony

Verfasst: Mi 21. Jan 2004, 12:48
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: