Service Nav 1 -> Aktiver Link wenn keine Kategorie active

Gesperrt
dampfradio
Beiträge: 62
Registriert: Do 2. Jun 2005, 09:41
Wohnort: BaWü
Kontaktdaten:

Service Nav 1 -> Aktiver Link wenn keine Kategorie active

Beitrag von dampfradio »

Wie kann ich in der Service Nav 1 folgendes realisieren:

Wenn keine Kategorie (> Ebene 0) "activated" ist, soll immer automatisch meine erste Kategorie in Ebene 1 "activated" sein.

Hintergrund: Wenn ich eine Seite a la domain.tld aufrufe, ist ja erstmal keine Kategorie aktiv. Es sei denn, ich leite meine idcat=1 auf die entsprechende Home-Kategorie weiter. Das will ich aber vermeiden. Es soll aber dennoch "Home" in meiner Navigation "activated" werden.

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt..

Hier das verwendete Modul:

Code: Alles auswählen

<?php
/******************************************
* File      :   Service Nav 1 CSS
* Project   :   Contenido
* Descr     :   Output Modul
*
* Author    :   unknown
* modified  :   Florian Behrendt
* Created   :   01.03.2005
* Modified  :   01.03.2005
* 
* Version   :   1.0
* © GPL ? 
*****************************************/

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");
if (!function_exists("catIsChildOf")) // Function nur neu, falls sie noch nicht exisitiert!
{
    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;

    }  //End Function ("catIsChildOf"))
}
// Endif (!function_exists("catIsChildOf"))


$catStart="CMS_VALUE[0]";

if ($catStart != "") {
  $catIds = conDeeperCategoriesArray($catStart);

  echo '

<div id="headnav">
  <ul class="list-snav-1">'; // erstes Listenelemment
  if ( is_array($catIds) ) {


    foreach($catIds as $key=>$val) {
      // Ersten Eintrag ueberspringen, weil das der Menupunkt selbst ist
      // und nicht angezeigt werden soll.
      if ($key != 0) {

        $sql = "SELECT CAT.idcat AS idcat, name FROM ".
               $cfg["tab"]["cat"]." AS CAT, ".
               $cfg["tab"]["cat_lang"]." AS CATLANG, ".
               $cfg["tab"]["cat_tree"]." AS CATTREE
               WHERE CAT.idcat = ".$val."
               AND CAT.idcat = CATLANG.idcat
               AND CATTREE.idcat = CAT.idcat
               AND CATLANG.idlang = '$lang'
               AND CATTREE.level = '1'
               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';
                }
          }
           // jetzt kommt die Abfrage ob aktiver Menüpunkt um den Hintergrund zu setzen
           // zunächst normale Abfrage ob aktiver Menüpunkt.
              if ($idcat == $db->f("idcat")) {
          //   if ( catIsChildOf($idcat, $db->f("idcat"))) {
              echo '
		  <li class="snav-1 activated">
		    <a target="'.$target.'" href="front_content.php?idcat='.$db->f("idcat").'">
		      '.$db->f("name").'
		      </a></li>
          ';}// End if
            // Abfrage ob übergeordnete Kategorie, für Unterpunkte.
            // if ($idcat == $db->f("idcat")) {
           elseif ( catIsChildOf($idcat, $db->f("idcat"))) {
              echo '
		  <li class="snav-1 activated">
		      <a target="'.$target.'" href="front_content.php?idcat='.$db->f("idcat").'">
		      '.$db->f("name").'
		      </a></li>
          ';}// End if  if ($idcat == $data['idcat'] || is_array($data['sub']))
          else
          {
          echo '<li class="snav-1 inactive">
		      <a target="'.$target.'" href="front_content.php?idcat='.$db->f("idcat").'">
		      '.$db->f("name").'
		      </a></li>
          ';}// End else    if ($idcat == $data['idcat'] || is_array($data['sub']))

        } // end while
      } // if
    }  // end foreach
  } // end if (is_array)

echo '<li class="stinger">&nbsp;</li></ul></div>';

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

Re: Service Nav 1 -> Aktiver Link wenn keine Kategorie ac

Beitrag von emergence »

dampfradio hat geschrieben:Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt..
ähm nein
*** make your own tools (wishlist :: thx)
dampfradio
Beiträge: 62
Registriert: Do 2. Jun 2005, 09:41
Wohnort: BaWü
Kontaktdaten:

Beitrag von dampfradio »

Na gut.. dann versuch ich's nochmal etwas genauer:

Ich habe auf meiner Seite als Ober-Navigation die Service-Nav verwendet mit nur einer Ebene. Dort gibts als ersten Tab "Home" also die Seite, die direkt erscheint, wenn man meine domain.tld eingibt.

Nun ist es aber so, dass "Home" die erste Unterkategorie meines Kategorie-Baums "www.domain.tld" ist. Ich möchte aber, dass "Home" meine Startseite ist. Also quasi die Root-Kategorie.
Zur Zeit leite ich aber von der Root-Kategorie (in meinem Falle idcat=28) auf die Home-Kategorie (idcat=29) weiter.
Das mache ich, damit der Reiter "Home" aktiviert erscheint.
Wenn ich direkt über die Root-Kategorie gehen würde, dann würde "Home" nicht highlighted, weil man sich zu dem Zeitpunkt ja noch nicht in der Home-Kategorie befindet. Es würde aber den User verwirren, wenn er auf die Seite kommt, aber kein Reiter/Tab aktiviert ist (zumal es mir dann etwas meine Navi entstellt).

Ggf. kann ich dir per PM mal meine URL schicken, damit du dir direkt ein Bild machen kannst.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ähm, versteh nicht was du damit erreichen willst...

du möchtest das home markiert ist wenn du die seite betrittst ?
das machst du bisher mit einer weiterleitung...
sprich 28 leitet auf 29 weiter...
nun ist ja home markiert oder nicht ?

oder willst du das idcat 28 und 29 zwei verschiedene seiten sind und in beiden fällen soll home markiert sein ?
*** make your own tools (wishlist :: thx)
dampfradio
Beiträge: 62
Registriert: Do 2. Jun 2005, 09:41
Wohnort: BaWü
Kontaktdaten:

Beitrag von dampfradio »

Ich wollte halt die Weiterleitung direkt am Einstieg vermeiden..

Möchte eigentlich, dass die Startseite ohne interne Weiterleitung direkt erreichbar ist (wegen Sumas usw.)
Und dann einfach auf die "echte" Startseite (idcat=28) das gleiche Template wie auf die Home-Seite legen.
Aber dann wäre wie gesagt Home nicht highlighted.
Einzige Möglichkeit die ich sähe wäre in der Root-Startseite die Nav statisch einzubauen mit Home-Highlight.. aber das ist natürlich auch humbug..
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

Code: Alles auswählen

           // jetzt kommt die Abfrage ob aktiver Menüpunkt um den Hintergrund zu setzen 
           // zunächst normale Abfrage ob aktiver Menüpunkt. 
              if ($idcat == $db->f("idcat") || ($idcat==28 && 29 == $db->f("idcat")) ) {
sollte es tun...
*** make your own tools (wishlist :: thx)
dampfradio
Beiträge: 62
Registriert: Do 2. Jun 2005, 09:41
Wohnort: BaWü
Kontaktdaten:

Beitrag von dampfradio »

Perfekt. Funktioniert. Danke dir!
Gesperrt