Seite 1 von 1

kleines PHP prob bei modifizierter Servicenavigation

Verfasst: Do 26. Jul 2007, 13:31
von nicnac
Hallo ihr lieben,

ich merke es immer wieder. Ich mache eindeutig zu selten php...
kann mir mal einer auf die Sprünge helfen?
Ich will die Standardservicenavi anpassen, ne Sprachweiche brauche ich nicht.

Ich brauche für jeden Navigationspunkt eine andere Klasse, daher wollte ich das so auslesen...

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Hilfsnavigation
* Author(s)   :     Andreas Lindner
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     05.08.2005
************************************************/

cInclude("frontend", "includes/functions.navigation.php");
cInclude('classes', 'class.template.php');
	
$catStart = "CMS_VALUE[0]";
if(($catStart=='')||($catStart=='0')){
    $cApiClient = new cApiClient($client);
    $catStart= $cApiClient->getProperty('navigation', 'idcat_hilfsnavi');
}
if(!is_object($oClient)) {
	$oClient = new cApiClient($client);
}

$navigation = array();
$navigation = createNavigationArray($catStart, $db);

if (count($navigation) > 0) {
		echo '<ul class="service">';
		foreach ($navigation as $key => $data) {
	   $zaehler++;
     if ($zaehler==1) {
				echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" class="search">'.$data['name'].' </a><form method="post" action="/suchergebnis/" class="suche" name="formsearch" id="formsearch"><label for="searchterm" class="nolabel"></label>
				<input type="text" name="searchterm" id="searchterm" value="" class="suchfeld" title="Klick zum Start der Suche" onfocus="this.value=\'\'" /> 
				</form></li>';
		}
     if ($zaehler==2) {
				echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" class="contact">'.$data['name'].' </a></li>';
		}
     if ($zaehler==3) {
				echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" class="imprint">'.$data['name'].' </a></li>';
		}
     if ($zaehler==4) {
				echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" class="sitemap">'.$data['name'].' </a></li>';
		} else {
				echo '<p>please ask the admin</p>';
		}
		}
	echo '</ul>';
}?>

Da schon zwei Punkte in der Servicenavigation existieren, erhalte ich jetzt zweimal: please ask the admin.

snief, manchmal stellt man sich aber auch blöd an...

Verfasst: Fr 27. Jul 2007, 08:54
von emergence
der code ist etwas gruselig..

Code: Alles auswählen

if ($zaehler==4) { 
            echo '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'" class="sitemap">'.$data['name'].' </a></li>'; 
      } else { 
            echo '<p>please ask the admin</p>'; 
      }
wie oft ist der $zaehler exakt 4 ?
ich schätze genau 1* die anderen male wird "please ask the admin"
ausgegeben...

sieh dir doch mal die switch case anweisungen in php an...

Verfasst: Fr 27. Jul 2007, 09:31
von nicnac
lacht.

ok. werde ich machen, hatte ich sogar schon, dachte nur, dass das die bessere variante wäre...

wie oft $zaehler exakt 4 ist? im mom wohl gar nicht, denn es wird nur "please ask the admin" ausgegeben. und das 2 mal, da 2 Navigationspunkte existieren.
na dann versuch ich noch mal mein glück aber mit der switch/case anweisung hatte ich glaub ich auch kein glück.
*snief* muß ich wohl doch bis nächste woche warten bis unser programmierer wieder da ist. na mal schaun... vielleicht habe ich ja nicht alles verlernt.

Verfasst: Fr 27. Jul 2007, 10:50
von nicnac
hm. kriegs nicht hin mit switch. bin eindeutig zu blond und mache zu selten php...
kann mir vielleicht jemand auf die sprünge helfen?
das der code von mir nicht allererste sahne ist, ist mir ja selber klar - schließlich funktioniert er ja auch nicht, die Aussage allein hilft mir bei meinem Problem aber leider auch nicht weiter... :(

Ich weiß nicht, was ich abfragen kann/ welche Variable ich setzen kann um folgendes zu erreichen:

der 1. Navigationspunkt erhält diese Klasse,
der 2. Navigationspunkt erhält diese Klasse,
der 3. ...

büdde büdde ;-)

Verfasst: Fr 27. Jul 2007, 16:06
von HerrB
Warum benennst Du die Klassen nicht über die ID? Sowas wie class1, class7, ...

Gruß
HerrB

Verfasst: Fr 27. Jul 2007, 16:09
von kummer
nicnac hat geschrieben:Ich weiß nicht, was ich abfragen kann/ welche Variable ich setzen kann um folgendes zu erreichen:

der 1. Navigationspunkt erhält diese Klasse,
der 2. Navigationspunkt erhält diese Klasse,
der 3. ...

büdde büdde ;-)
wenn man fragen darf: willst du denn tatsächlich, dass jeder navigationspunkt anders aussieht? oder meinst du nicht am ende navigationsebenen anstatt navigationspunkte?

das vorgehen wäre nämlich in beiden fällen grundsätzlich unterschiedlich.

wenn jeder navigationspunkt anders aussehen sollte, dann wäre das von HerrB vorgeschlagene vorgehen das vermutlich einfachste.

Verfasst: Fr 27. Jul 2007, 16:19
von nicnac
hi,

ich meine navigationspunkte. der designer hatte die glorreiche idee für jeden navigationspunkt der servicenavigation andere icons zu benutzen. dass habe ich per klasse über den link mittels hintergrundbild abgefedert.
siehe hier: www.pixel-coach.de/hautschutz

Verfasst: Fr 27. Jul 2007, 16:23
von nicnac
HerrB hat geschrieben:Warum benennst Du die Klassen nicht über die ID? Sowas wie class1, class7, ...

Gruß
HerrB
sorry. das ist mir jetzt gerade eindeutig zu hoch. theoretisch verstehe ich was du meinst, aber umgesetzt bekomme ich es selber wohl eher nie.

Verfasst: Fr 27. Jul 2007, 16:28
von kummer
hmmm....

ich würde folgendes vorgehen vorschlagen:

du verwendest als kategoriebezeichner etwas in der art:

Code: Alles auswählen

meinBild1.png$Suche
dann kannst du den kategoriebezeichner sowie das zu verwendende bild mit...

Code: Alles auswählen

$kategorie = split('$', $kategoriebzeichner);
zur laufzeit herausfinden. in $kategorie[0] steht dann der bildpfad und in $kategorie[1] der kategoriebezeichner. so brauchst du nicht verschiedene klassen, sondern kannst es über styles lösen. bei einem neuen navigationspunkt mit einem neuen bild musst du dann auch keine anpassungen am navigationsmodul machen.

Verfasst: Fr 27. Jul 2007, 16:33
von nicnac
kummer hat geschrieben: zur laufzeit herausfinden. in $kategorie[0] steht dann der bildpfad und in $kategorie[1] der kategoriebezeichner. so brauchst du nicht verschiedene klassen, sondern kannst es über styles lösen. bei einem neuen navigationspunkt mit einem neuen bild musst du dann auch keine anpassungen am navigationsmodul machen.
das hört sich richtig gut an. An die Problematik mit Anpassungen hatte ich auch schon gedacht, bin aber auf keine adäquate Lösung gekommen. Vielen Dank.

Verfasst: Fr 27. Jul 2007, 16:48
von kummer
wenn du die navigationUniversell verwendest (siehe signatur), dann hast du das problem schon gelöst. die dröselt nämlich standardmässig den kategoriebezeichner auf:

der kategoriebezeichner Suche$$$meinBild.png wird dabei in {name1} und {name2} aufgelöst.

in der maske kannst du diese platzhalter dann verwenden.

Verfasst: Fr 27. Jul 2007, 17:00
von nicnac
kummer hat geschrieben:wenn du die navigationUniversell verwendest (siehe signatur), dann hast du das problem schon gelöst. die dröselt nämlich standardmässig den kategoriebezeichner auf:

der kategoriebezeichner Suche$$$meinBild.png wird dabei in {name1} und {name2} aufgelöst.

in der maske kannst du diese platzhalter dann verwenden.
Danke für den Tipp!

Verfasst: Fr 27. Jul 2007, 17:17
von HerrB
Und ich meinte, dass Du als Klasse z.B. "class".$data['idcat'] verwendest (also statt class="contact" wäre es z.B. class="class".$data['idcat']).

Du kannst natürlich auch das Modul verwenden (denn für die andere Lösung musst Du eben für jede interne Kategorie-ID eine CSS-Klasse anlegen).

Gruß
HerrB

Verfasst: Fr 27. Jul 2007, 17:22
von nicnac
HerrB hat geschrieben:Und ich meinte, dass Du als Klasse z.B. "class".$data['idcat'] verwendest (also statt class="contact" wäre es z.B. class="class".$data['idcat']).

Du kannst natürlich auch das Modul verwenden (denn für die andere Lösung musst Du eben für jede interne Kategorie-ID eine CSS-Klasse anlegen).
Ah. Das habe ich jetzt auch verstanden. ;-)
Danke auch für Deinen Tipp.