Dynamisches CSS Menü will nicht mit Contentseiten

Begonnen von katrin-sdt, 19 Oktober 2007, 10:59:07

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

katrin-sdt

Ich möchte die Navigation dynamisch mit CSS erstellen, und zwar so das der Link der besuchten Seite die Farbe ändert. (ähnlich Themes Rainbow)

Es funktioniert auch bei den Modulen, nur wenn ich einzelne Contentseiten verlinkt habe, passiert nichts.

Ich stelle den Code mal hier rein. Aufgerufen wird dieser mit Platzhalter cssmenu

function cssmenu()
{
# menucurrent
            $news="<li><a href=\"modules.php?name=News\" class=\"menu\">NEWS</a></li>";
         $news1="<li><a href=\"modules.php?name=News\" class=\"menucurrent\">NEWS</a></li>";
         $gallery="<li> <a href=\"modules.php?name=Content&pa=showpage&pid=4\" class=\"menu\">GALLERY</a></li>";
         $gallery1="<li> <a href=\"modules.php?name=Content&pa=showpage&pid=4\" class=\"menucurrent\">GALLERY</a></li>";
         $artists="<li> <a href=\"artists.html\" class=\"menu\">ARTISTS</a></li>";
         $artists1="<li> <a href=\"artists.html\" class=\"menucurrent\">ARTISTS</a></li>";
         $exhibitions="<li><a href=\"modules.php?name=Content&pa=showpage&pid=3&nav=e\" class=\"menu\">EXHIBITIONS</a></li>";
         $exhibitions1="<li><a href=\"modules.php?name=Content&pa=showpage&pid=3&nav=e\" class=\"menucurrent\">EXHIBITIONS</a></li>";
         $publications="<li><a href=\"modules.php?name=Content&pa=showpage&pid=5\" class=\"menu\">PUBLICATIONS</a></li>";
         $publications1="<li><a href=\"modules.php?name=Content&pa=showpage&pid=5\" class=\"menucurrent\">PUBLICATIONS</a></li>";
         $contact="<li><a href=\"modules.php?name=Content&pa=showpage&pid=1\" class=\"menu\">CONTACT</a></li>";
         $contact1="<li><a href=\"modules.php?name=Content&pa=showpage&pid=1\" class=\"menucurrent\">CONTACT</a></li>";

$im['Default'] = "".$news."".$gallery."".$artists."".$exhibitions."".$publications."".$contact."";
$im['News'] = "".$news1."".$gallery."".$artists."".$exhibitions."".$publications."".$contact."";

//hier wird Contentseite definiert, einfach immer das array erweitern, vorn die pid der Contentseite

$imcontent['1']    = "".$news."".$gallery."".$artists."".$exhibitions."".$publications."".$contact1."";
$imcontent['3']    = "".$news."".$gallery."".$artists."".$exhibitions1."".$publications."".$contact."";
$imcontent['4']    = "".$news."".$gallery1."".$artists."".$exhibitions."".$publications."".$contact."";
$imcontent['5']    = "".$news."".$gallery."".$artists."".$exhibitions."".$publications1."".$contact."";

    if (isset($GLOBALS['home'])) {
        return $im['Home'];
    }
    else if (defined('MX_MODULE') && isset($im[MX_MODULE]))
    {
      if (MX_MODULE == "Content")
      {
       if (!empty($_GET['pid']) &&  isset ($imcontent[$_GET['pid']]) )
      
      {
       
      return $imcontent[$_GET['pid']];
        }
        else
        {
          return $im[MX_MODULE];
        }
      }
      else
      {
        return $im[MX_MODULE];
      }
    } else if (defined("mxAdminFileLoaded")) {
        return $im['AdminLoaded'];
    } else {
        return $im['Default'];
    }
}

cihan

Hallo  :)
Damit sich die Farbe deiner besuchten Links ändert, könntest du z.B. in style.css von deinem verwendeten Theme folgendes eintragen:

.menu a:visited {
   color: #deine_farbe;
           }

Für alle andere Klassen verfährst du genau so. Weiß nicht, ob es das ist, was du wissen wolltest, hoffe es hilft dir.
lg

katrin-sdt

Die style.css ist schon geändert. Es klappt ja auch z. B. bei News. Aber wenn ich eine Seite aus dem Content lade eben nicht. Dann bleibt die Navigation nicht mit geänderter Farbe stehen.

katrin-sdt


lemming

kann man das mal live sehen, damit mans bisle nachvollziehen kann zB. mit firebug.
greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*

katrin-sdt


lemming

ohne dass ich mir den code oben jetzt großartig angesehen habe gäbe es da noch ne andere lösung:

News ist ja ein Modul und der Rest alles Contentseiten. Du könntest jetzt ganz einfach hergehen und aus den anderen Contentseiten ebenso Module machen. Das hört sich erstmal aufwendig an, ist es aber nicht.

Vorteile:
# Besserer Ranking in Suchmaschinen, weil "Artists" etc. dann auch in der Url ist (Modulname=Artists)
# Deine Navi funktioniert

Nachteile:
# Keine WYSIWYG Editor mehr. Müsstest den Inhalt dann quasi im Code ändern.

-------------------

aufwand das ganze auf module umzustellen wär nicht groß.


http://www.pragmamx.org/Downloads-op-view-lid-643.html

da gibts son standardmodul. hab das selber noch nicht getestet, ich hab mir damals glaub das Impressum Modul einfach runtergestrickt aber versuch erstmal das Modul oben.

dann gehst im pragma auf deine Contentseite, SPAW Editor und lässt dir den Code anzeigen, den packst dann in die Index.php an der richtigen stelle und fertig.

da du oben schon mit code hantierst denk ich ist das für dich kein problem. ansonsten wenn das ne lösung für dich wäre, kann ich dir da auch nochmal helfen.

gruß
greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*

siggi

#7
Hallo,
Etwas umständlich, was ich da so lese ... :cool:

Tipp:
Du schreibst dir eine Funktion in die functions.php des Themes,  zb. function css_color_switch(), die mittels
$_GET die Parameter der jeweiligen URL einliest und einen String zurückgibt.
Anhand dieses Wertes sprichst du dann im Theme die vorher festgelegte
Class in der CSS an.

z.b.
Zitat
if(isset($_GET['name'])  && $_GET['name'] == 'Content')
{
if(isset($_GET['pid']))
{
  $pid = $_GET['pid'];
  return "my_style_".$pid;
}
}

liefert bei
Zitatmodules.php?name=Content&pa=showpage&pid=3

den string 'my_style_3'

css_switch_color()  wäre im Prinzip ein String mit dem Inhalt 'my_style_3'

Zitat von: theme
:
<div class="<?=css_switch_color() ?>">foo</div>
:

in der style muss natürlich die Klasse my_style_3 definiert sein.

zb.
Zitat

.my_style_3 {
color : #F59638;
background-color: #52923E;
}


Wenn sich die 'pid' nicht ständig ändert, wäre das ein Möglichkeit. Sicherlich gibt es
noch mehr Lösungsansätze. Ist halt nur ein Beispiel :)   
Wenn man an Gras zieht wächst es auch nicht schneller.

katrin-sdt

Hallo Siggi,

auch ne gute Idee, werd ich mal probieren.

Lemming: wenn ich die Seiten selber pflegen würde, kein Problem, aber alles in einzelne Module packen ist hier leider keine gute Idee. Der Editor wird gebraucht.