Horizontale Navigation: Kategorie geschützt? Eingeloggt?

Gesperrt
jcf
Beiträge: 44
Registriert: Fr 22. Dez 2006, 17:30
Kontaktdaten:

Horizontale Navigation: Kategorie geschützt? Eingeloggt?

Beitrag von jcf »

Hallo mal wieder!

Ich setze eine zweigeteilte, horizontale Navigation ein, bei der alle Kategorien der ersten und zweiten Ebene angezeigt werden - unabhängig davon, ob sie geschützt sind oder nicht. So will ich es eigentlich haben. Allerdings würde ich zusätzlich gerne solche Kategorien "highlighten", die geschützt sind und wiederum anders "highlighten", wenn sie geschützt sind, der User aber eingeloggt ist. Eine ähnliche Funktion bietet bereits die Standardnavigation. Allerdings steige ich nicht so recht durch die SQL-Abfragen. Was muss ich am unten stehenden Code (das ist ein Auszug) abändern, um die gewünschten Dinge einarbeiten zu können? Welche Abfragen muss ich machen?

Code: Alles auswählen

// submenu erstellen



// jetzt ist der startpunkt zum menü-generieren die parent-kategorie
$tht_catSub = $tht_activ_cat;

if ($tht_catSub != "") {
  $catIds = thomas_DeeperCategoriesArray($tht_catSub);

  if ( is_array($catIds) ) {

    foreach($catIds as $key=>$val) {

        $sql = "SELECT CAT.idcat AS idcat, name FROM ".
               $cfg["tab"]["cat"]." AS CAT, ".
               $cfg["tab"]["cat_lang"]." AS CATLANG
               WHERE CAT.idcat = ".$val."
               AND CAT.idcat = CATLANG.idcat
               AND CATLANG.idlang = '$lang'
               AND CATLANG.visible = '1'";

        $db->query($sql);

        $db2 = new DB_Contenido;
       
        while ( $db->next_record() ) {
       
           $target = "_self";
         
          /* Check for redirect and new window flag */
          $sql = "SELECT idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcat='". $db->f("idcat")."' AND is_start = '1'";
          $db2->query($sql);
          if ($db2->next_record())
          {
                $cidart = $db2->f("idart");
                $sql = "SELECT external_redirect FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '$cidart' AND idlang='$lang'";
                $db2->query($sql);
                if ($db2->next_record())
                {
                    $target = ( $db2->f("external_redirect") == 0 ) ? '_self' : '_blank';
                }
          }
// link erzeugen
      if ($idcat == $db->f("idcat")) {
          echo '<li><a class="aktuell" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></li> ';
       } else {
          echo '<li><a href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></li> ';
      }
// ende link erzeugen
        } // end while
    }  // end foreach
  } // end if (is_array)
}


// das ende der tabelle ausgeben.
Herzlichen Dank im Voraus,

jcf
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

also beim sql query müsstest du die public mit selektieren lassen...
ich schätze mal so:

Code: Alles auswählen

$sql = "SELECT CAT.idcat AS idcat, name, CATLANG.public, CATLANG.idcatlang FROM ". 
               $cfg["tab"]["cat"]." AS CAT, ". 
               $cfg["tab"]["cat_lang"]." AS CATLANG 
               WHERE CAT.idcat = ".$val." 
               AND CAT.idcat = CATLANG.idcat 
               AND CATLANG.idlang = '$lang' 
               AND CATLANG.visible = '1'";
wenn public == 0 ist weisst du eigentlich das die kategorie geschützt ist..

Code: Alles auswählen

if (0 == $db->f("public")) {
    echo "geschützt";
}
idcatlang brauchst du eigentlich nur dann wenn du auch checken möchtest ob der aktuelle benutzer darauf zugriff hat... siehe modul -> hauptnavigation -> checkCatPermission

ist nicht getestet...
*** make your own tools (wishlist :: thx)
jcf
Beiträge: 44
Registriert: Fr 22. Dez 2006, 17:30
Kontaktdaten:

Beitrag von jcf »

super! So einfach. Hat geklappt und sieht gut aus! ;-)

VIELEN DANK!
Gesperrt