Seite 1 von 1

Einzelne Kategorien in Sitemap ausblenden

Verfasst: Di 17. Apr 2007, 19:53
von nomore
Ich habe das Forum intensiv nach einer passenden Lösung durchgeforstet, aber keinen Anhaltspunkt für eine Lösung gefunden.

Es geht darum einzelne Kategorien in der Standard-Sitemap von Contenido 4.6.15 auszublenden ohne diese offline setzen zu müssen.

Geht das überhaupt?

Über einen Tipp wäre ich dankbar.

Re: Einzelne Kategorien in Sitemap ausblenden

Verfasst: Di 17. Apr 2007, 20:28
von mvf
hier mal eine variation der sitemap von ingo (aka Dodger77) mit exclude_cats array

Code: Alles auswählen

<?php
/*
cInclude("frontend", "includes/functions.navigation.php");
cInclude("classes", "class.frontend.permissions.php");
cInclude("classes", "class.frontend.groups.php");
cInclude("classes", "class.frontend.users.php");

*/



// CMS_VALUES initialisieren
$anzahlEbenen      = "3";
$startkategorie    = "1";
$ebeneNullAnzeigen = "0";

function vpSitemap($kategorie=0)
{
  global $lang, $client, $cfg, $startkategorie, $anzahlEbenen, $ebeneNullAnzeigen;

  $mvf_excludeCats = array(19);
  
  $db  = new DB_Contenido;
  $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=$kategorie
             AND level <= $anzahlEbenen
             AND C.visible=1
           ORDER by A.idtree";
    $db->query($sql);
    $treffer = $db->num_rows();
    if ($treffer) {
      if ($kategorie == $startkategorie) $result .= "<ul id=\"sitemap\">\n";
      else $result .= "<ul>\n";
    }
    while ($db->next_record())
    {
    	
    	
    	
    	if (!in_array($db->f("idcat"), $mvf_excludeCats)) {
    		$mvf_idcat = $db->f("idcat");
    	
    	
		$visible = checkCatPermission($db->f("idcatlang"),$db->f("public"));
		if ($visible) {    	
    	
    	
      $lvl = $db->f("level");
      if (($lvl > 0) || ($ebeneNullAnzeigen)) $result.=  "<li><a href='front_content.php?idcat=".$mvf_idcat."&lang=$lang&client=$client' class='item".$mvf_idcat."' title='".$db->f("name")."'>".$db->f("name")."</a>".vpSitemap($mvf_idcat, $lvl)."</li>\n";
      else $result.=  "<li>&nbsp;".vpSitemap($mvf_idcat, $lvl)."</li>\n";
      
      
		}
      
		}
    }
    if ($treffer) $result .= "</ul>\n";
    return($result);
  }

$sql = "SELECT
          level
        FROM
          ".$cfg["tab"]["cat_tree"]."
        WHERE
          idcat=$startkategorie";
$db->query($sql);
$db->next_record();
$startEbene = $db->f("level");
$anzahlEbenen += $startEbene;
if (($startkategorie==0) && ($ebeneNullAnzeigen)) $anzahlEbenen--;

echo vpSitemap($startkategorie);

?>
$mvf_excludeCats = array(19); wäre der array, kannste aber auch in eine mandanteneinstellung auslagern

Verfasst: Di 17. Apr 2007, 20:46
von nomore
Erst mal Danke für die schnelle Antwort.
Leider bin ich noch nicht so fit in PHP um das jetzt auf Anhieb zu verstehen. Kannst du das vieleicht näher erläutern?

Verfasst: Di 17. Apr 2007, 20:55
von mvf
ohm? da gibts nicht viel zu verstehen

paste den code in den output eines neuen moduls und binde das modul in das template ein

ersetze die 19 mit der idcat die nicht in der sitemap angezeigt werden soll und fertig.

wenn es mehere sind dann eben mit komma getrennt

Verfasst: Di 17. Apr 2007, 22:41
von nomore
Gibt es denn eine Möglichkeit dies auch auf die Standardsitemap anzuwenden?

Verfasst: Di 17. Apr 2007, 22:44
von mvf
nomore hat geschrieben:Gibt es denn eine Möglichkeit dies auch auf die Standardsitemap anzuwenden?
keine ahnung die funktioniert ist kurz und über css zu stylen, damit geht alles, was willste denn mehr oder überhaupt?

Verfasst: Di 17. Apr 2007, 23:03
von nomore
Hast ja Recht :D Ich habe mir die vpsitemap per CSS angepasst. Danke nochmals für den super Tipp, hat mir sehr geholfen.

Verfasst: Di 17. Apr 2007, 23:09
von mvf
nomore hat geschrieben:Hast ja Recht :D Ich habe mir die vpsitemap per CSS angepasst. Danke nochmals für den super Tipp, hat mir sehr geholfen.
np ;) vp_ module sind immer fein, also sende den dank an dodge

Verfasst: Sa 21. Apr 2007, 11:19
von nomore
Hallo hab da noch ne Frage zur vpsitemap. Was muss ich am Modul ändern, das die Unterkategorien untereinander gelistet werden?

Also:

Hauptkategorie

- Unterkategorie 1
- Unterkategorie 2
- Unterkategorie 3

Verfasst: Sa 21. Apr 2007, 11:26
von Dodger77
IMO gar nichts. Das lässt sich doch komplett über CSS gestalten. Am besten nimmst du die entsprechenden CSS-Anweisungen mal aus dem Stylesheet raus und erzeugst dir dein eigenes nach Bedarf.