3-teilige Navigation mit Benutzer-und Onlineprüfung

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

3-teilige Navigation mit Benutzer-und Onlineprüfung

Beitragvon revod » 8. Okt 2007, 17:56

Die Navigation soll in 3 separaten Teilen ausgegeben werden ($navLevel1/2/3). Das klappt soweit ohne Probleme.

Nun stolpere ich aber an der Benutzerprüfung. Ich hab mir die vorhandenen Beispiele angeschaut, bin aber nicht zum Ziel gekommen.

In der foreach-Schleife habe ich jeweils folgendes eingefügt:

Code: Alles auswählen
if ($user_typ >= $lev1->getTypeId()):



Wichtig ist, dass ein Menueintrag nur stehen darf, wenn der Startartikel der jeweilgen Navigationsebene nicht geschützt ist, deshalb muss der $user_typ festgestellt werden.


Code: Alles auswählen
<?php
// EXPLODE PATH
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

// GET CURRENTS
$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];


$user_typ = 1;
if ($FORM['USR_TYP'] != 0) {
   $user_typ = $FORM['USR_TYP'];
}


/* START 1st level categories */
$navLevel1 .= '<ul class="nav1st">';

/* START 2nd level categories */
$navLevel2 .= '';

/* START 3rd level categories */
$navLevel3 .= '';

foreach (OOCategory::getRootCategories() as $lev1) {

  if ($user_typ >= $lev1->getTypeId()):
   if ($lev1->isOnline(true)):
      if ($lev1->getId() == $path1) {
         $navLevel1 .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
      }
      // 2nd level - no active link
      else {
         $navLevel1 .= '<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
      }
         
      // 1st level had categories? -> go on
      $lev1Size = sizeof($lev1->getChildren());
   
      if ($lev1->getId() == $path1) {
         if ($lev1Size != "0") {
            $navLevel2 .= '<ul class="nav2nd">';

            // START 2nd level categories
            foreach ($lev1->getChildren() as $lev2):
         
         if ($user_typ >= $lev2->getTypeId()):
           
            if ($lev2->isOnline(true)) {
                  // 2nd level - active link
                  if ($lev2->getId() == $path2) {
                     $navLevel2 .= '<li class="active"><a class="current" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  }
                  // 2nd level - no active link
                  else {
                     $navLevel2 .= '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  }
                 
                  // 2nd level had categories? -> go on
                  $lev2Size = sizeof($lev2->getChildren());
   
                  if ($lev2->getId() == $path2) {
                     if ($lev2Size != "0") {
                        $navLevel3 .= '<ul class="nav3rd">';

                        // START 3rd level categories
                        foreach ($lev2->getChildren() as $lev3):
                           
                     if ($user_typ >= $lev3->getTypeId()):
                     
                     if ($lev3->isOnline(true)) {
                              // 3rd level - active link
                              if ($lev3->getId() == $path3) {
                                 $navLevel3 .= '<li class="active"><a class="current" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
                              }
                              // 3rd level - no active link
                              else {
                                 $navLevel3 .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
                              }
                           }
                     
                  
                        endforeach;
                        // END 3rd level categories
     
                        $navLevel3 .= '</ul>';
                     } // END by if ($lev2Size != "0"):
                  }
                  $navLevel2 .= '</li>';
               }
         
            endforeach;
            // END 2nd level categories
     
            $navLevel2 .= '</ul>';
         } // END by if ($lev1Size != "0"):
      }
      $navLevel1 .= '</li>';

   endif; // END by if ($lev1->isOnline())

}
$navLevel1 .= '</ul>';
// END 1st level categories


?>





(Ich hatte es zuerst mit der Navigation von Raybeam probiert - diese hier scheint mir für meine Bedürfnisse etwas schlanker)
Zuletzt geändert von revod am 10. Okt 2007, 12:37, insgesamt 1-mal geändert.
revod
 
Beiträge: 9
Registriert: 7. Okt 2007, 15:47

Beitragvon revod » 10. Okt 2007, 12:36

weiss da niemand rat?

danke für eure antworten!
revod
 
Beiträge: 9
Registriert: 7. Okt 2007, 15:47

Beitragvon revod » 18. Nov 2007, 14:05

So hat geklappt. Vielleicht findet jemand Verwendung dafür.

Gruss revod



Für die Einbindung also einfach die 3 Navigationsstufen an gewünschter Stelle ausgeben lassen:

Code: Alles auswählen
<?php

print $navLevel1."<br/>";
print $navLevel2."<br/>";
print $navLevel3."<br/>";

?>


Die Authentifizierung ist gleich integriert.

Code: Alles auswählen
<?
$errorArticleId = "20";

setlocale(LC_ALL,"de_DE");

// -------------------------------------------------------------- USER AUTH

session_start();

$FORM['USR'] = false;

$user_id = 0;
$user_name = "";

if($REX['CUR_CLANG']== "0"){
   $error_lang = "de";
}
else{
   $error_lang = "en";
}

if ($_SESSION['UID']['rexsite'] !="" OR $FORM['loginname'] != "" OR $FORM['logout'] != "") {

   $FORM['USER'] = new rex_login();
   $FORM['USER']->setSqlDb(1);
   $FORM['USER']->setSysID("rexsite");
   $FORM['USER']->setLanguage($error_lang);
   $FORM['USER']->setSessiontime(3000);
   $FORM['USER']->setLogin($FORM['loginname'],$FORM['loginpasswort']);
   if ($FORM['LOGOUT'] == 1) {
      $FORM['USER']->setLogout(true);
   }
   $FORM['USER']->setUserID("rex_2_user.id");
   $FORM['USER']->setUserquery("SELECT *
                        FROM    rex_2_user
                        WHERE    id='USR_UID'
                        AND    login_activation=1
                        AND    user_status='1'
                        AND user_typ>'0'");
   $FORM['USER']->setLoginquery("SELECT *
                        FROM    rex_2_user
                        WHERE   user_login='USR_LOGIN'
                        AND      user_password='USR_PSW'
                        AND    login_activation='1'
                        AND      user_status='1'");

   if ($FORM['USER']->checkLogin()) {
      $FORM['USR']     = true;
      $user_id        = $FORM['USER']->getValue("rex_2_user.id");
      $user_name        = $FORM['USER']->getValue("rex_2_user.user_name");
      $FORM['USR_ID']  = $user_id;
      $FORM['USR_TYP'] = $FORM['USER']->getValue("rex_2_user.user_typ");
   }
   else {
      $FORM['USR'] = false;
      $err_msg        = $FORM['USER']->message;
      $FORM['USR_ID']  = 0;
      $FORM['USR_TYP'] = 0;
   }
}
else {
   // nicht eingeloggt und kein login
   $FORM['USR_ID'] = 0;
   $FORM['USR_TYP'] = 0;
}



// EXPLODE PATH
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");
$aid = $this->getValue("article_id");

// GET CURRENTS
$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];

/* START 1st level categories */
$navLevel1 .= '<ul class="nav1st">';

/* START 2nd level categories */
$navLevel2 .= '';

/* START 3rd level categories */
$navLevel3 .= '';

foreach (OOCategory::getRootCategories() as $lev1) {

      if ($lev1->getTypeId() == 1 || $lev1->getTypeId() > 1 && $FORM[USR]) {
            if ($lev1->isOnline(true)):
               if ($lev1->getId() == $path1) {
                  $navLevel1 .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
               }
               // 2nd level - no active link
               else {
               $navLevel1 .= '<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
               }


       
      // 1st level had categories? -> go on
      $lev1Size = sizeof($lev1->getChildren());
   
      if ($lev1->getId() == $path1) {
         if ($lev1Size != "0") {
            $navLevel2 .= '<ul class="nav2nd">';

            // START 2nd level categories
            foreach ($lev1->getChildren() as $lev2):
              if ($lev2->getTypeId() == 1 || $lev2->getTypeId() > 1 && $FORM[USR]) {
               if ($lev2->isOnline(true)) {
                  // 2nd level - active link
                  if ($lev2->getId() == $path2) {
                     $navLevel2 .= '<li class="active"><a class="current" href="'.$lev2->getUrl().'">&raquo; '.$lev2->getName().'</a>';
                  }
                  // 2nd level - no active link
                  else {
                     $navLevel2 .= '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
                  }
                 
                  // 2nd level had categories? -> go on
                  $lev2Size = sizeof($lev2->getChildren());
   
                  if ($lev2->getId() == $path2) {
                     if ($lev2Size != "0") {
                        $navLevel3 .= '<ul class="nav3rd">';

                        // START 3rd level categories
                        foreach ($lev2->getChildren() as $lev3):
                         if ($lev3->getTypeId() == 1 || $lev3->getTypeId() > 1 && $FORM[USR]) {
                           if ($lev3->isOnline(true)) {
                              // 3rd level - active link
                              if ($lev3->getId() == $path3) {
                                 $navLevel3 .= '<li class="active"><a class="current" href="'.$lev3->getUrl().'">&raquo; '.$lev3->getName().'</a></li>';
                              }
                              // 3rd level - no active link
                              else {
                                 $navLevel3 .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
                              }
                           }
                  }
                        endforeach;
                        // END 3rd level categories
     
                        $navLevel3 .= '</ul>';
                     } // END by if ($lev2Size != "0"):
                  }
                  $navLevel2 .= '</li>';
               }
         }
            endforeach;
            // END 2nd level categories
     
            $navLevel2 .= '</ul>';
         } // END by if ($lev1Size != "0"):
      }
      $navLevel1 .= '</li>';

   endif; // END by if ($lev1->isOnline())
}
}
$navLevel1 .= '</ul>';
// END 1st level categories


?> 
revod
 
Beiträge: 9
Registriert: 7. Okt 2007, 15:47


Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast