Der Fehler bestand darin, dass die IF-Abfragen (visible) zu früh geschlossen wurden.
Der richtige Code für die Sitemap Ausgabe:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Sitemap
* Author(s) : Jan Lengowski, Jose Rodriguez
* Copyright : Contenido - four for business
* Created : 15-08-2002
************************************************/
#System properties in use:
#Type: navigation, Name: idcat_homepage
#Contains idcat of tree to be displayed in sitemap
#Includes
cInclude("frontend", "includes/functions.navigation.php");
cInclude("classes", "class.frontend.permissions.php");
cInclude("classes", "class.frontend.groups.php");
cInclude("classes", "class.frontend.users.php");
cInclude("classes", "class.template.php");
#If no tree is selected, use client setting
$newcat = "CMS_VALUE[0]";
if ($newcat=='') {
$cApiClient = new cApiClient($client);
$newcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}
#Get cat tree
$sql = "SELECT level FROM ".$cfg["tab"]["cat_tree"]." WHERE idcat=$newcat";
$db->query($sql);
$db->next_record();
echo sitemap($newcat);
function sitemap($newcat) {
global $lang, $client, $cfg, $printing;
#Initialize database objects
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$db3 = new DB_Contenido;
$tpl = new Template;
$tpl2 = new Template;
$tpl3 = new Template;
$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 C.visible=1 "."ORDER by A.idtree";
$db->query($sql);
#Build level 1
$tpl->reset();
while ($db->next_record()) {
#Check permissions, determine visibility
$visible = checkCatPermission($db->f("idcatlang"),$db->f("public"));
if ($visible) {
$tpl->set("d","URL","front_content.php?idcat=".$db->f("idcat"));
$tpl->set("d","NAME",$db->f("name"));
$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 =".$db->f("idcat")." AND C.visible=1 "."ORDER by A.idtree";
$db2->query($sql);
#Build level 2
$tpl2->reset();
$level2 = '';
$j = 0;
while ($db2->next_record()) {
$visible = checkCatPermission($db2->f("idcatlang"),$db2->f("public"));
if ($visible) {
$tpl2->set("d", "URL", "front_content.php?idcat=".$db2->f("idcat"));
$tpl2->set("d", "NAME", $db2->f("name"));
$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 =".$db2->f("idcat")." AND C.visible=1 "."ORDER by A.idtree";
$db3->query($sql);
#Build level 3
$tpl3->reset();
$level3 = '';
$k = 0;
while ($db3->next_record()) {
$visible = checkCatPermission($db3->f("idcatlang"),$db3->f("public"));
if ($visible) {
$tpl3->set("d", "URL", "front_content.php?idcat=".$db3->f("idcat"));
$tpl3->set("d", "NAME", $db3->f("name"));
$tpl3->next();
$k ++;
} // ENDE if l3
} // ENDE while l3
$level3 = $tpl3->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level3.html",1,0);
$j++;
$tpl2->set("d", "LEVEL3", $level3);
$tpl2->next();
} // ENDE if l2
} // ENDE while l1
$level2 = $tpl2->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level2.html",1,0);
$tpl->set("d", "LEVEL2", $level2);
$tpl->next();
} // ENDE if l1
}
$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level1.html");
}
?>