Navigations Links teilweise mit flascher idcat

Gesperrt
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Navigations Links teilweise mit flascher idcat

Beitrag von stefkey »

Hallo,

und plötzlich funktionieren 2 Navigationspunkte nicht mehr. In der Statuszeile wird eine idcat angezeigt wleche falsch ist.

Kann ich das in der DB korrigieren? Welche Tabelle?


Vielleicht weiß jemand rat. Danke!

Grüße,
stefkey
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

okay noch ne info:

bei dem Startartikel ist idart ungleich idartlang!
der Links hat idart 291
im Backend hat der Artikel aber idart 243 und idartlang 291

Hat da jemadn eine Idee dazu?


Grüße,
stefkey
mfweb
Beiträge: 270
Registriert: Mo 12. Sep 2005, 18:31
Kontaktdaten:

Beitrag von mfweb »

Ich fürchte ohne Modulangabe oder Modulcode wird dir nur jemand helfen können, der seine Glaskugel nicht in Reparatur hat. ;-)

Tritt der Fehler nur bei zwei Kategorien auf und alle anderen sind richtig?

Dass idart ungleich idartlang ist, ist eigentlich der Normalzustand.

Grüße
mfweb
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

Hallo,

das Problem ist ja erst nach dem Update 4.8.7 > 4.8.10 aufgetaucht.

Ich habe aber nun herausgefunden, dass der Fehler eigentlich vorher schon bestand. Das Mod-Rewrite Plug-In hat den Fehler aber bisher "repariert", deswegen fällt der Fehler jetzt erst auf.

Hier das Modul welches ich verwende, vielleicht kannst du den Fehler finden. Ich habe testweise mal ziemlich weit unten "idart" in "idartlang" geändert, dann geht es! Nur denke ich, dass der Fehler aber ursprünglich irgendwo anders entsteht. Ich finde es aber nicht. Ich denke an verschiedenen Stellen muss aus "idartlang" vielleicht "idart" werden

Kann es jemand finden?


Code: Alles auswählen

<?php 


/********************************************* 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname  :  Hauptnavigation 
* Author(s)  :  Jan Lengowski, Andreas Lindner, 4fb 
* Copyright  :  Contenido - four for business, Andreas Lindner 
* Created    :  12-08-2005 
* Modifier   :  Oliver Simon, simon-oliver.com 
* Modified   :  27-11-2005 
**********************************************/ 

#System properties in use: 
#Type: navigation, Name: idcat_homepage 
#Contains idcat of tree to be displayed in main navigation 

#Includes 
cInclude("frontend", "includes/functions.navigation.php"); 

#If no tree is selected, use client setting 
$start_cat = "CMS_VALUE[0]"; 
if ($start_cat=='') { 
    $cApiClient = new cApiClient($client); 
   $start_cat = $cApiClient->getProperty('navigation','idcat_homepage'); 
} 

if ( !is_object($db2) ) { 
    $db2 = new DB_Contenido; 
} 

/** 
 * 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, $start_cat) ) { 
    $sel_idcat = $idcat; 
} else { 
    $sel_idcat = $start_cat; 
} 

/* Include Template Class */ 
include_once($cfg["path"]["contenido"] . 'classes/class.template.php'); 

/** 
 * Array storing alle the 
 * navigation data 
 */ 
$navitems = array(); 


/* Template Instance */ 
$tpl = new Template; 

/** 
 * Recursive function for creating 
 * the navigation array 
 * @param Int $idcat Category id 
 */ 
function nav($idcat) { 

        global $navitems, $client, $lang, $cfg, $start_cat; 

        $db  = new DB_Contenido; 
        $db2 = new DB_Contenido; 

        $sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'"; 

        $db->query($sql); 
        $db->next_record(); 

        $parentid = $db->f("parentid"); 

        if ( $parentid == 0 ) { 

           if ( $idcat != $start_cat ){ 

                $navitems = array(); 
              
                $sql = "SELECT 
                            A.idcat, 
                            C.name 
                        C.public, 
                        C.idcatlang, 
                        C.startidartlang 
                        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 
                            B.idclient  = '$client' AND 
                            C.idlang    = '$lang'   AND 
                            C.visible   = '1'       AND 
                            B.parentid  = '".$start_cat."' 
                        ORDER 
                            BY A.idtree"; 

                      $db->query($sql); 

                      while ($db->next_record()) { 

                            /* Check for external redirects... */ 
                            $sql = "SELECT 
                                        a.external_redirect AS ext, 
                                        a.idartlang AS idartlang 
                                    FROM 
                                        ".$cfg["tab"]["art_lang"]." AS a, 
                                        ".$cfg["tab"]["cat_art"]." AS b, 
                                        ".$cfg["tab"]["cat"]." AS c 
                                    WHERE 
                                        b.idcat     = '".$db->f("idcat")."' AND 
                                        c.idclient  = '".$client."' AND 
                                        c.idcat     = b.idcat AND 
                                        a.idart     = b.idart AND 
                                        a.idlang    = '".$lang."'"; 

                            $db2->query($sql); 
                            $flag = false; 
                     while ($db2->next_record()&&!$flag) { 
                               if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang)) 
                               { 
                           $flag = true; 
                                   $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 
    
                                   $navitems[$db->f("idcat")] = array("idcat"      => $db->f("idcat"), 
                                                                       "name"      => $db->f("name"), 
                                                                       "idart"      => $db->f("startidartlang"), 
                                                                       "target"    => $target, 
                                                                 "public" => $db->f("public"), 
                                                                "idcatlang" => $db->f("idcatlang")); 
                               } 
                     } 
                      } 

           } 
            
           return true; 
        } 

        $sql = "SELECT 
                    A.idcat, 
                    C.name, 
                  C.public, 
                    C.idcatlang, 
                    C.startidartlang 
                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 
                    B.idclient  = '$client' AND 
                    C.idlang    = '$lang'   AND 
                    C.visible   = '1'       AND 
                    B.parentid  = '$parentid' 
                ORDER BY 
                    A.idtree"; 

        $db->query($sql); 

        while ($db->next_record()) { 

                /* Check for external redirects... */ 
                $sql = "SELECT 
                            a.external_redirect AS ext, 
                            a.idartlang AS idartlang 
                        FROM 
                            ".$cfg["tab"]["art_lang"]." AS a, 
                            ".$cfg["tab"]["cat_art"]." AS b, 
                            ".$cfg["tab"]["cat"]." AS c 
                        WHERE 
                            b.idcat     = '".$db->f("idcat")."' AND 
                            c.idclient  = '".$client."' AND 
                            c.idcat     = b.idcat AND 
                            a.idart     = b.idart AND 
                            a.idlang    = '".$lang."'"; 

                $db2->query($sql); 
            $flag = false; 
                while ($db2->next_record() && !$flag) { 
                   if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang)) 
                   { 
                  $flag = true; 
                       $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 
                      
                       $tmp_nav[$db->f("idcat")] = array("idcat"   => $db->f("idcat"), 
                                                         "name"    => $db->f("name"), 
                                                         "idart"      => $db->f("startidartlang"), 
                                                          "public" => $db->f("public"), 
                                                  "idcatlang" => $db->f("idcatlang"), 




                                                         "target"  => $target); 
                   } 
            } 
        } 

        $tmp_nav[$idcat]["sub"] = $navitems; 
        $navitems = $tmp_nav; 

        /* Function call */ 
        nav($parentid); 

}  // end function 

$sql = "SELECT 
            A.idcat, 
            C.name, 
          C.public, 
             C.idcatlang, 
             C.startidartlang 
        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 
            B.idclient  = '$client' AND 
            C.idlang    = '$lang'   AND 
            C.visible   = '1'       AND 
            B.parentid  = '$sel_idcat' 
        ORDER BY 
            A.idtree"; 

$db->query($sql); 

while ( $db->next_record() ) { 

        /* Check for external redirects... */ 
        $sql = "SELECT 
                    a.external_redirect AS ext, 
                    a.idartlang AS idartlang 
                FROM 
                    ".$cfg["tab"]["art_lang"]." AS a, 
                    ".$cfg["tab"]["cat_art"]." AS b, 
                    ".$cfg["tab"]["cat"]." AS c 
                WHERE 
                    b.idcat     = '".$db->f("idcat")."' AND 
                    c.idclient  = '".$client."' AND 
                    c.idcat     = b.idcat AND 
                    a.idart     = b.idart AND 
                    a.idlang    = '".$lang."'"; 

        $db2->query($sql); 
        #$db2->next_record(); 
      $flag = false; 
      while ($db2->next_record()&&!$flag) { 
           if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang)) 
           { 
            $flag = true; 
               $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 
      
               $navitems[$db->f("idcat")] = array("idcat"  => $db->f("idcat"), 
                                                  "name"   => $db->f("name"), 
                                                  "idart"      => $db->f("startidartlang"), 
                                                  "public" => $db->f("public"), 
                                            "idcatlang" => $db->f("idcatlang"), 
                                                  "target" => $target); 
           } 
      } 
} 

/* Create Navigation Array */ 
if(($sel_idcat=='')||($sel_idcat=='0')){ 
    $cApiClient = new cApiClient($client); 
    $sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage'); 
} 

nav($sel_idcat); 

/* Start Output buffer */ 
ob_start(); 

foreach ($navitems as $key => $data) { 

    /* 1. Navigation level */ 
   if (checkCatPermission($data['idcatlang'],$data['public'])) { 
       $tpl->reset(); 
       $tpl->set('d', 'NAME',  $data['name']); 
       $tpl->set('d', 'TARGET', $data['target']); 
       $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'].'&idart='.$data['idart'])); 

       $tpl->next(); 
       if ($idcat == $data['idcat']) { 
           $tpl->generate('templates/navfirst_on.html'); 
      }elseif(is_array($data['sub'])){ 
           $tpl->generate('templates/navfirst_open.html'); 
       } else { 
           $tpl->generate('templates/navfirst_off.html'); 
       } 
   } // end if 
} // end foreach 

/* Read out buffer */ 
$html = ob_get_contents(); 

/* Clean buffer */ 
ob_end_clean(); 

/* Output buffer-contents */ 
echo $html; 

?>
Gesperrt