Seite 1 von 1

Sitemap mehrmals einsetzen

Verfasst: Fr 10. Feb 2006, 11:36
von Salech
Hallo,
ich will bzw. muss eine Sitemap (Standard Sitemap) mehrmals auf einer Seite einsetzen.
Nur ich erhalte leider einer Fehler:

Fatal error: Cannot redeclare sitemap() (previously declared in
c:\contenido\htdocs\cms\front_content.php(770) : eval()'d code:51) in
c:\contenido\htdocs\cms\front_content.php(770) : eval()'d code on line 157

Kann mir einer helfen?

Verfasst: Fr 10. Feb 2006, 11:54
von rezeptionist
http://contenido.org/forum/viewtopic.php?t=11663

schau mal das 2te Post an das gilt auch für die Sitemap

Verfasst: Fr 10. Feb 2006, 12:07
von Dodger77
rezeptionist hat geschrieben:http://contenido.org/forum/viewtopic.php?t=11663

schau mal das 2te Post an das gilt auch für die Sitemap
Nein, das ist so nicht richtig. "Cannot redeclare..." bedeutet, dass eine Funktion (in diesem Falle "sitemap") eben nicht zweimal deklariert werden darf.

Wenn man um den Code der Funktion eine Abfrage schaltet, ob diese bereits deklariert wurde, könnte man das evtl. mehrmals zum laufen bekommen. Etwa in der Form:

Code: Alles auswählen

if (!function_exists('sitemap')) {

  function sitemap () {
    // hier ist der Code der Funktion
  }

}

Verfasst: Fr 10. Feb 2006, 12:45
von Salech
Jetzt verstehe ich leider nix mehr.

Wo - wahrscheinlich in der front_content.php ;-)
Wo genau - keine Ahnung
Wie - keine Ahnung

Verfasst: Fr 10. Feb 2006, 13:16
von Dodger77
Salech hat geschrieben:Jetzt verstehe ich leider nix mehr.

Wo - wahrscheinlich in der front_content.php ;-)
Wo genau - keine Ahnung
Wie - keine Ahnung
Nein, im Output des Moduls. Such da mal nach der Funktion "sitemap".

Verfasst: Sa 11. Feb 2006, 13:56
von Salech
So endlich Zeit gefunden, den Tipp zu testen.
Leider kommt jetzt der Fehler:
Fatal error: Call to undefined function: sitemap() in /.../cms/contenido/includes/include.con_editcontent.php(649) : eval()'d code on line 246

Hier ist der geänderte Code:

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);

if (!function_exists('sitemap')) { 

		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 ++;
								}
							}
							$level3 = $tpl3->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level3.html",1,0);
							$j++;
						}
						$tpl2->set("d", "LEVEL3", $level3);
						$tpl2->next();
					}
					$level2 = $tpl2->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level2.html",1,0);
				}
				$tpl->set("d", "LEVEL2", $level2);
				$tpl->next();
			}
			$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level1.html");
		}

}

?>         

Verfasst: Sa 11. Feb 2006, 15:59
von HerrB
Diesen Teil nach den if(!function _exist... }-Block verschieben:

Code: Alles auswählen

#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);
Gruß
HerrB

Verfasst: Sa 11. Feb 2006, 16:33
von Salech
Also alles, außer den Includes! ;-)
gemacht...aber jetzt kommt dieser Fehler:
Fatal error: Call to undefined function: sitemap() in /.../cms/cms/front_content.php(914) : eval()'d code on line 73

Verfasst: Sa 11. Feb 2006, 19:06
von HerrB
Wenn Du magst, kannst Du mir mal Anmeldedaten per PM senden, komme aber erst morgen dazu.

Gruß
HerrB

Verfasst: Sa 11. Feb 2006, 19:18
von Salech
Sorry - im Moment nur lokal am laufen!

Verfasst: Sa 11. Feb 2006, 19:23
von Dodger77
Salech hat geschrieben:Also alles, außer den Includes! ;-)
gemacht...aber jetzt kommt dieser Fehler:
Fatal error: Call to undefined function: sitemap() in /.../cms/cms/front_content.php(914) : eval()'d code on line 73
Versuch es mal mit folgendem Moduloutput:

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 (!function_exists('sitemap')) {
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 ++;
						}
					}
					$level3 = $tpl3->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level3.html",1,0);
					$j++;
				}
				$tpl2->set("d", "LEVEL3", $level3);
				$tpl2->next();
			}
			$level2 = $tpl2->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level2.html",1,0);
		}
		$tpl->set("d", "LEVEL2", $level2);
		$tpl->next();
	}
	$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level1.html");
}
}

#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);

?>         
Bei mir funktioniert das damit.

Verfasst: Sa 11. Feb 2006, 19:47
von Salech
Bei mir auch!
Vielen Dank!

Verfasst: So 12. Feb 2006, 18:37
von HerrB
Habe ich etwas anderes geschrieben ...?

Gruß
HerrB

Verfasst: So 12. Feb 2006, 19:43
von Dodger77
HerrB hat geschrieben:Habe ich etwas anderes geschrieben ...?
Ne, aber war wohl mit dem kompletten Code einfacher.

Verfasst: So 12. Feb 2006, 19:57
von HerrB
Bin ich ja beruhigt... :wink:

Gruß
HerrB