Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 5
Seite [1]
Timmothey


Rock the board



Herkunft: Berlin
Beiträge: 40
# Thema - 23.01.2010 um 23:06 Uhr
Hallo liebes CSphereTeam!

Ich habe mich gerade vor eine kleine Knobelaufgabe gestellt und weil ich gerade kurz vorm verrückt werden stehe, wollte ich euch mal direkt ansprechen

Ziel: Eine Horizontale Navigation, bei der die gerade besuchte Seite hervorgehoben ist. Ich wollte das nicht über mehrere Datein lösen.

PHP Quelle (Auszug aus navlist.php) +-
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
1. / 2. / ... 
<?php
$run
=0;
$vars['links'][$run]['link']['href'] = "{url:static_view&id=1}";
$vars['links'][$run]['link']['name'] = "Home";
$vars['links'][$run]['if']['active']   = (($cs_main['def_mod']=="static") && ($cs_main['def_action']=="view") && ($cs_main['def_parameters']=="id=1")) ? true false;
$vars['links'][$run]['if']['inactive'] = !(($cs_main['def_mod']=="static") && ($cs_main['def_action']=="view") && ($cs_main['def_parameters']=="id=1")) ? true false;
$vars['links'][$run]['if']['last']     = false;
$run++;
$vars['links'][$run]['link']['href'] = "{url:news_recent}";
$vars['links'][$run]['link']['name'] = "News";
$vars['links'][$run]['if']['active']   = ($cs_main['def_mod']=="news") ? true false;
$vars['links'][$run]['if']['inactive'] = !($cs_main['def_mod']=="news") ? true false;
$vars['links'][$run]['if']['last']     = false;
$run++;
echo 
cs_subtemplate(__FILE__,$vars,'navi','navlist');
?>


navlist.tpl +-
 
1.
2.
3.
4.
5.
6.
7.
8.
1. / 2. / ... 
 {loop:links}
    {if:
active}
        <
div class="link activeLink{if:last} veryRightLink{stop:last}"><div id="pfeil">{link:name}</div></div>
    {
stop:active}
    {if:
inactive}
        <
a href="{link:href}" class="link">{link:name}</a>
    {
stop:inactive}
{
stop:links}


Folgendes passiert:
So, wie es aktuell ist, zeigt es unter beiden Links "Home" als markiert.
Invertiere ich beide Bedingungen wird unter beiden Links "News" markiert.
Für Home erstes invertiert (! davor), bei News das zweite: Beide Links nicht markiert.
Für Home zweites invertiert (! davor), bei News das erste: Beide Links markiert.

Ich weiß nicht, ob ich die Problematik einigermaßen verständlich rüberbringen konnte...
Verwende ich eure Schleifen/Bedingungen richtig?
Ich hatte schon einmal ein Beispiel implementiert (Bedingungen in Schleife) und da hat das geklappt. Nur finde ich nicht mehr, ob ich dafür Datein umgeschrieben habe...

Riesig freue ich mich über jede Hilfe

Vielen Dank im Voraus


------------------
Irgendwann will jedermann, raus aus seiner Haut;
Irgendwann denkt er dran, wenn auch nicht laut!
Inaktiv
Pred


Poststar




Herkunft: Bischofsmais
Beiträge: 762
# Antwort: 1 - 24.01.2010 um 00:52 Uhr
Wieso fragst du nicht per $_GET das aktuelle Modul ab und weisst dem link, falls das entsprechende modul aktiv ist eine classe zu?

in etwa so (sehr simpel, nur zum verständniss:
 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
1. / 2. / ... 
 
$mod 
$_GET['mod'];

if(
$mod == 'news') {
  
$data['class']['news'] = 'activ';
} else {
  
$data['class']['news'] = 'not';
}
if(
$mod == 'articles') {
  
$data['class']['articles'] = 'activ';
} else {
  
$data['class']['articles'] = 'not';
}


in die tpl dann:
 
1.
2.
3.
4.
1. / 2. / ... 
 
<a href="bla" class="{class:news}">news</>
<
a href="blabla" class="{class_articles}">artikel</a>


keine ahnung obs so besser geht... ich meine das aber mal selber so umgesetzt zu haben.


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


Inaktiv
|
Timmothey
Thread-Ersteller


Rock the board



Herkunft: Berlin
Beiträge: 40
# Antwort: 2 - 24.01.2010 um 11:53 Uhr
Ja der Ansatz wäre denkbar. Vielen Dank dafür

Nur ist das leider in meinem Beispiel nicht ganz so passend, da ein aktiver Link als div dargestellt wird (eigentlich kein Link mehr...) und klickbare links als a.
hängt damit zusammen, dass an einem aktiven link so ein pfeil dran hängt und das in einem extra div ist. geht anders nicht so gut umzusetzen.

also ist das nicht einfach nur ein ändern der klasse (was ich eigentlich auch so implementieren wollte, aber nicht gepackt habe) sondern komplett anderer code...


------------------
Irgendwann will jedermann, raus aus seiner Haut;
Irgendwann denkt er dran, wenn auch nicht laut!

Inaktiv
|
Jam2 ClanSphere Team


Highlander





Beiträge: 3291
# Antwort: 3 - 24.01.2010 um 13:45 Uhr
post mal pls die kompletten dateien im nopaste oder hänge sie an damit man selber schauen könnte^^


------------------
Gruß/ Best regards
Jam2

Nützliche Forumbeiträge/Codepastes: (Useful comments in our board / codepastes)
Template Switch for index.php
Board Navlist last posts

Edi: könnte man denn auch hier eine erweiterung einfügen?
Jam2: das web ist wie toyota.....
Edi: hö ?
Jam2: nichts ist unmöglich!


Inaktiv
|
Timmothey
Thread-Ersteller


Rock the board



Herkunft: Berlin
Beiträge: 40
# Antwort: 4 - 24.01.2010 um 14:16 Uhr
sind komplett...
oder willst du das stylesheet haben?



Bin gerade auf die Idee gekommen mich durch eien Ausgabe der kompletten $cs_main zu vergewissern, was passiert. Hab da wohl bei den vorhergehenden Tests gepennt.

Hat sich hiermit erledigt. def_xxxx sind ja die Grundeinstellungen für den Fall, dass nichts anderes kommt...

mit $cs_main['mod'] und $cs_main['action'] bekommt man ja das tatsächliche. Wie kommt man denn an die ID? $_GET['id'], das ist mir klar, aber wo wird denn das get gesendet, wenn ich nur index.php (zum Beispiel) aufrufe? Irgendwie wird's gesendet, zumindest klappt das so

Sorry für den eigentlich sinnlosen Thread und vielen Dank für die Unterstützung!

Gruß Tim


------------------
Irgendwann will jedermann, raus aus seiner Haut;
Irgendwann denkt er dran, wenn auch nicht laut!

Inaktiv
|
Pred


Poststar




Herkunft: Bischofsmais
Beiträge: 762
# Antwort: 5 - 24.01.2010 um 14:59 Uhr
24.01.2010 um 11:53 Uhr - Timmothey:
Ja der Ansatz wäre denkbar. Vielen Dank dafür

Nur ist das leider in meinem Beispiel nicht ganz so passend, da ein aktiver Link als div dargestellt wird (eigentlich kein Link mehr...) und klickbare links als a.
hängt damit zusammen, dass an einem aktiven link so ein pfeil dran hängt und das in einem extra div ist. geht anders nicht so gut umzusetzen.

also ist das nicht einfach nur ein ändern der klasse (was ich eigentlich auch so implementieren wollte, aber nicht gepackt habe) sondern komplett anderer code...


Du kannst ja statt der Klasse auch das Div, oder den kompletten link ausgeben lassen.


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


Inaktiv
|
Antworten: 5
Seite [1]


Sie müssen sich registrieren, um zu antworten.