Sitemap mit mehr als 3 Level

Gesperrt
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Sitemap mit mehr als 3 Level

Beitrag von mvf »

hallo community

ich habe versucht das standard modul sitemap um zunächst eine weitere ebene zu erweitern, also 4 Level [im endeffekt benötige ich vieleicht sogar 5]

:?: input scheint meinen kenntnissen nach keine veränderung zu benötigen.

output habe ich folgendermassen erweitert [sitemap_level4.html] existiert auch, ausgabe ampel ist grün:

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;
	$db4 = new DB_Contenido;
		
	$tpl = new Template;
	$tpl2 = new Template;
	$tpl3 = new Template;
	$tpl4 = 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"));
                            $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 =".$db3->f("idcat")." AND C.visible=1 "."ORDER by A.idtree";
                            $db4->query($sql);

                            #Build level 4
                            $tpl4->reset();
                            $level4 = '';
                            $l = 0;
                            while ($db4->next_record()) {
                                $visible = checkCatPermission($db4->f("idcatlang"),$db4->f("public"));
                                
                                if ($visible) {
                                    $tpl4->set("d", "URL", "front_content.php?idcat=".$db4->f("idcat"));
                                    $tpl4->set("d", "NAME", $db4->f("name"));
                                    $tpl4->next();
                                    $l ++;
								}
							}
                            $level4 = $tpl4->generate($cfgClient[$client]["path"]["frontend"]."templates/"."sitemap_level4.html",1,0);
                            $k++;
                        }							
                        $tpl3->set("d", "LEVEL4", $level4);
                        $tpl3->next();
                    }							
					$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");
}

?> 
http://dev1.elflein-kosmetik.de/cont46d ... p?idcat=39

zeigt im navipath und links in der catbox die tiefe, die sitemap aber nach wie vor nur bis level3 (classics) sollte aber auch subkat1 zeigen.

danke für eure hilfe
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

Hi,

probiere mal die vpSitemap die sollte das glaube ich können. wenn man es individueller haben möchte, sollte man sich nur mit css und listenformatierungen auskennen, aber das ist ein anderes thema ...
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

stese hat geschrieben:Hi,

probiere mal die vpSitemap die sollte das glaube ich können. wenn man es individueller haben möchte, sollte man sich nur mit css und listenformatierungen auskennen, aber das ist ein anderes thema ...
die habe ich noch icht angeschaut, werde ich aber umgehend machen. nur damitkein missverstädnis entsteht, es geht mir nicht um das format, da noch keine klassen eingebunden sind, es fehlt einfach die letzte ebene also subkat1

der code der standard geht über 3 level also bei mir

Code: Alles auswählen

portfolio
  anwendungen
     classics
meine erweiterung sollte eigentlich

Code: Alles auswählen

portfolio
  anwendungen
     classics
       subkat1
zeigen, so hoffte ich :(

egal ob ich die original oder erweiterte einbinde, geht immer nu bis classics
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

dank blackmeeswhite habe ich nun folgende sitemap im einsatz

input

Code: Alles auswählen

// 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("#aaaaff", "#bbbbff","#ccccff","#ddddff");

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 B.idclient='$client' AND B.parentid =$newcat ORDER by A.idtree";

$db->query($sql);
  $result = "<table border=0 cellspacing=0 cellpadding=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='140px' valign='top' > <img src=\"images/weiter.gif\" width=\"20\" height=\"20\" alt=\"Imex Deutschland\" align=\"absbottom\"> <a href='front_content.php?idcat=".$db->f("idcat")."&lang=$lang&client=$client' >".$db->f("name")."</a><br/> </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);



?>
die warnung :

Code: Alles auswählen

Dieses Modul verwendet Variablen und/oder Funktionen, die in dieser Contenido-Version nicht mehr vorhanden sind. Bitte stellen Sie sicher, daß sie aktuelle Module verwenden.
wie gesagt funzt auch mit warnung. jetzt wäre ich glücklich wenn jemand hilft beim ready-for-'4.6.2' machen, damit alle Variablen und Funktionen den aktuellen entsprechen.
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

Bei der vpSitemap kann angegeben werden, wie viele Ebenen angezeigt werden sollen. Man sollte sich halt nur ein wenig mit CSS auskennen.
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

Dodger77 hat geschrieben:Bei der vpSitemap kann angegeben werden, wie viele Ebenen angezeigt werden sollen. Man sollte sich halt nur ein wenig mit CSS auskennen.
da bin ich grad auch am probieren ;)
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

vpsitemap läft auch hervorragend, danke ingo

css ist dann kein problem mehr, die ganze seite ist bisher vom layout nur css, module noch nicht alle ;)
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

zu früh gebrüllt löwe :(

die vpsitemap zeigt mir die ebene 0 nur an wenn ich kategorie 'alle' auswähle, ansonsten geht es immer erst ab ebene 1 los ?
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

mvf hat geschrieben:die vpsitemap zeigt mir die ebene 0 nur an wenn ich kategorie 'alle' auswähle, ansonsten geht es immer erst ab ebene 1 los ?
Die Konfiguration "Ebene 0 anzeigen" hat nur dann einen Effekt, wenn alle Kategorien angezeigt werden sollen. Das ist auch so gedacht.

Mit Ebene "0":

Code: Alles auswählen

-Hauptnavigation
--Punkt1
--Punkt2
-Bottomnavigation
--Impressum
--Sitemap
Ohne Ebene "0":

Code: Alles auswählen

-Punkt1
-Punkt2
-Impressum
-Sitemap
Denn was bringt es dir die Ebene 0 anzuzeigen, wenn nur ein Baum (z.B. Hauptnavigation) ausgewählt ist?

Das sähe dann so aus:

Code: Alles auswählen

-Hauptnavigation
--Punkt1
--Punkt2

Gruß

Ingo
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Beitrag von derSteffen »

Also komisch! Ich habe Contenido 4.6.4 in lokaler Umgebung mit Xampp zu laufen! Bei der Installation habe ich mit Beispielmodulen und ohne Inhalte gewählt.

Die Sitmap hat auch funktioniert nur hat mir gestört, dass die Wörter "Hauptnavigation" ud "Unternavigation" mit aufgeführt worden sind, sowie alle Systemseiten, welche ja nichts in der Sitmap zu suchen haben! Wie kann man denn deklarieren, dass alle Artikel der Hauptnavigation und Unternavigation ohne "Ebene 0" und ohne Systemseiten angezeigt werden?!?!

Als zweiten Lösungsansatz habe ich mich für die vPSitemap entschieden, d.h. ich habe das installierte Sitemapmodul behalten und ein neues (die vPSitemap) - Modul angelegt und das Sitemap2 genannt! Änderung im Tempelate vorgenommen und raus kam: Drei Listenpunkte - nicht mehr (keine Links) es sind drei Listenpunkte weil ich wahrscheinlich 3 Bäume in der Kategorie angelegt habe!

Stören sich meine zwei Sitemapmodule gegenseitig? Oder funktioniert vPSitemap nicht mit 4.6.4???

Vielen Dank
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

derSteffen hat geschrieben:Stören sich meine zwei Sitemapmodule gegenseitig? Oder funktioniert vPSitemap nicht mit 4.6.4???
Doch, klar läuft die mit der 4.6.4. Siehe:

http://spielwiese.contenido-tutorials.de/vpsitemap/
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Beitrag von derSteffen »

Stimmt beide Sitemaps laufen! Hatte nur nicht das richitge Tempelate zugeordnet - Danke

MfG
Gesperrt