Logisch! 

 Das ist ja auch das Gute daran.
Ich vermute mal, dass es daran liegt.
Code: Alles auswählen
/**
* Check if a category is child
* of another category
*
* @return boolean true/false
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
*/
function catIsChildOf($id, $idparent) {
  global $cfg, $client, $lang;
  $db = new DB_Contenido;
  $parent = $id;
  while ( $parent != 0 ) {
    $sql = "SELECT
                    a.parentid
            FROM
                    ".$cfg["tab"]["cat"]." AS a,
                    ".$cfg["tab"]["cat_lang"]." AS b
            WHERE
                    a.idclient  = '".$client."' AND
                    b.idlang    = '".$lang."' AND
                    a.idcat     = b.idcat AND
                    a.idcat   = '".$parent."'";
    $db->query($sql);
    $db->next_record();
    $parent = $db->f("parentid");
    if ($parent == $idparent) {
      return true;
    }
  }
  return false;
}
if ( catIsChildOf($idcat, 'CMS_VALUE[0]') ) {
  $sel_idcat = $idcat;
} else {
  $sel_idcat = 'CMS_VALUE[0]';
}
So wie ich das hier verstehe, läuft die WHILE-Schleife so lange, wie $parent ungleich 0 ist. Außerhalb der Schleife erhält $parent die ID des aktuell geöffneten Artikels. Innerhalb der Schleife wird $parent mit dem Wert parentid aus der Tabelle con_cat überschrieben.
Im Moment weiß ich nicht, woran es liegt. Wähle ich nämlich in der Template-Konfiguration eine Kategorie aus, die unterhalb der obersten liegt, wird nichts angezeigt. Was kann es denn sein?