Modul Sitemap zeigt nur Startartikel einer Kategorie an

Gesperrt
laurisilva
Beiträge: 40
Registriert: Di 11. Nov 2003, 19:16
Kontaktdaten:

Modul Sitemap zeigt nur Startartikel einer Kategorie an

Beitrag von laurisilva » Sa 17. Jan 2004, 21:01

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
-------------------------------------------------------
www.anian-leistner-webdesign.de

stony
Beiträge: 360
Registriert: Di 10. Jun 2003, 09:02
Wohnort: Berlin
Kontaktdaten:

Beitrag von stony » Di 20. Jan 2004, 11:54

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

Snoopy
Beiträge: 239
Registriert: Mo 15. Sep 2003, 18:45
Kontaktdaten:

Beitrag von Snoopy » Mi 21. Jan 2004, 12:48

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:

Gesperrt