Jump to content
xt:Commerce Community Forum

Horizontales Menü mit MouseOver Effekt - kleines Sprachenproblem


e-h-bikestore

Recommended Posts

so, hab jetzt zig Stunden daran zugebracht, das horzontale menü (warenkorb, Kasse, Kontoerstellung etc..) mit MouseOver Bildern zu belegen. Habs jetzt zu 90% fertig. Das ganze funktioniert mit nem kleinen code in der stylesheet.css

Code:

.wechsel5 a {

background: url('buttons/german/button_conditions2.gif') no-repeat;

display:block; width:98px; /* Linkbereich begrenzen */

}

.wechsel5 img {

display:block; width:98px; height:35px; border:0;

}

.wechsel5 a:hover img {

visibility: hidden;

}

.wechsel5 a:hover { /* Workaround fuer IE 5.5 und 6 */

border:0;

}

* html #wechsel5 a {

margin-right:1px;

}

* html #wechsel5 a:hover {

width:98px; margin-right:0; /* Workaround fuer IE 5.01 */

}

</style>

Hier klicken zum ansehen>

Das einzige Problem dabei ist, dass es im Momet nur mit den Bildern auf deutsch funktioniert. Leider habe ich keine ahnung, wie ich im css angeben, kann dass er sich die Bilder aus dem ausgewählten sprachordner , also

template/buttons/language/derbenötigtebutton

holt. im Monet verweise ich noch direkt auf den ordner "buttons/german/"

Im endeffekt möchte ich, dass er automatisch erkennt, ob er den deutschen oder englischen button nehmen soll. In der index.html ist das ja so gelöst:

<img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_cash_box.gif"

Wie bekomm ich den Code in die css-Datei? Hat irgendwer nen Ansatz oder eine Idee? theoretisch sollte das ja irgendwie möglich sein....

Link to comment
Share on other sites

Hallo Heiko,

in der css Datei habe ich kein PHP. Das ist schon richtig, dass die Spracherkennug eigentlich in der html steht.

In der index.html werden ja bei den Bildern auch schon die Sprachausgaben angegeben (s.o.).

Ich wills nochmal ein wenig erläutern:

Also, ich habe für die Horzontalen Menüpunkte Bilder eingesetzt. Diese werden sprachabhängig in der index.html angezeigt. Nun habe ich in der stylesheet.css nen Code angegeben, der einen MouseOver effekt steuert. Dabei wird das Bild aus der index.html auf 100% transparenz geschaltet wodurch das in der stylesheet.css angegebene Hintergrundbild der Tabelle sichtbar wird. Diese Hintergrundbild wird im Moment jedoch noch nicht sprachabhängig ausgegeben, sondern nur für german.

Ist wohl nen kleines Mißverständnis - natürlich will ich nicht den PHP code so direkt in die stylesheet packen. aber es muss doch irgendwie machbar sein, dass je nach Sprache das Hintergrundbild entweder aus dem ordner english oder german geholt wird.

Ich hoffe, ich konnte das Problem nochmal etwas verdeutlichen,

grüße sascha

Link to comment
Share on other sites

Vielleicht steh ich ja auf dem schlauch.

Aber was soll´s.

Ich kann ja wohl im stylesheet diese klassen doppelt anlegen

und dann im template in abhängigkeit von $_SESSION['language'] die eine oder die andere zuweisen.

Oder gleich in header.php sprachabhängig gleich eine andere .css ??

<link rel="stylesheet" type="text/css" href="<? if ($_SESSION['language'] == 'german') {echo 'templates/'.CURRENT_TEMPLATE.'/stylesheet_1.css';}else{echo 'templates/'.CURRENT_TEMPLATE.'/stylesheet_2.css';}?>" />

Heiko

Link to comment
Share on other sites

Hmm... an eine 2. css Datei hatte ich auch schon gedacht. kann ich dazu direkt den Code verwenden, den du geschriebenn hast? Also

<link rel="stylesheet" type="text/css" href="<? if ($_SESSION['language'] == 'german') {echo 'templates/'.CURRENT_TEMPLATE.'/stylesheet_1.css';}else{echo 'templates/'.CURRENT_TEMPLATE.'/stylesheet_2.css';}?>" /> ???

Link to comment
Share on other sites

Der MouseOver effekt funktioniert nun 2-sprachig. Jetzt ist nur noch ein Problem d, dass ich noch beheben muss.

wenn man nicht angemeldet ist, wird der button "Abmelden" nicht gezeigt. In diesem falle weist er der "Ihr konto" Tabelle die class der "abmelden" Tabelle zu, sodass dort beim drüberfahren mit der Maus der Button "abmelden" statt "Ihr Konto" erscheint.

Wie kann ich das unterbinden? Sobald ich das habe, ist das Template fertig.

Link to comment
Share on other sites

Kann ich gerade nicht nachvollziehen. Da ist ein unclosed if tag auf der index und ich sehe ncht gerade viel ;.)

Ich fände die Lösung die klassen mehrfach anzulegen und im template zu differenzieren etwas eleganter als gleich eine 2. css. wenn das dann der einzige unterschied zwischen den sprachen ist.

Heiko

Link to comment
Share on other sites

Das Problem taucht nur auf, wenn man nicht eingeloggt ist. sobald man sich einoggt werden die classes wieder korrekt zugewiesen. Wenn man nicht eingeloggt ist, schmeoßt er die class für die "Mein Konto" Tabelle raus und gibt der Tabelle dir class der "abmelden" Tabelle.

Hier mal der code aus der index.html:

<td width="98" valign="middle" class="wechsel1" height="35" align="center">{if $account}{php}if (isset($_SESSION['customer_id'])){{/php}<a href="{$logoff}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_logoff.gif" border="0" width="98" height="35"></a></td>

<td width="98" valign="middle" class="wechsel2" height="35" align="center">{php}}{/php}{/if}{if $account}<a href="{$account}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_account.gif" border="0" width="98" height="35"></a></td>

<td width="98" valign="middle" class="wechsel3" height="35" align="center">{/if}<a href="{$cart}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_cart.gif" border="0" width="98" height="35"></a> </td>

<td width="98" valign="middle" class="wechsel4" height="35" align="center"><a href="{$checkout}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_cash_box.gif" width="98" height="35" border="0"></a></td>

<td width="98" valign="middle" class="wechsel5" height="35" align="center"><b><font size="2" face="Verdana" color="black"><a href="shop_content.php?coID=3"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_conditions.gif" width="98" height="35" border="0"></a></font></b></td>

<td width="17" height="35" class="nav_top_XV"></td>

</tr>

Ich bin mir ziemlich sicher, dass es was mit der index.html zu tun hat. Kann aber leider nicht herausfinden, wo der Fehler sitzt.

Link to comment
Share on other sites

Hallo Heiko,

den Fehler habe ich immer noch nicht weg. Habe mir nun überlegt, für die erste Tabelle ("$logoff") doppelt zu vergeben. Das Ziel soll sein, dass im Falle, dass man angemeldet ist dort ein Button mit der aufschrift "Abmelden" erscheint und wenn man nicht eingeloggt ist, ein button mit der Aufschrift "Anmelden".

Wenn ich das mit Texten mache, also ohne Bilder ist das ne recht simple Sache. Aber ich weiß noch nicht genau, welchen code ich brauche um in der Tabelle auf die entsprechende Class zu verweisen, "wenn der kunde einen account hat, dann "Abmelden", wenn der Kunde keinen Account hat, "Anmelden"

Link to comment
Share on other sites

Aktueller Stand:

Die Buttons werden nun je nach Login-status getauscht, also entweder der "Anmleden"-Button oder der "Abmelden"-Button. Fuktionieren tut das ganze soweit tadellos. Aber es bleibt immernoch das Problem beim MouseOver, dass bei einigen Tabellen die falsche class zuweist.

Nen bißchen Hilfe dafür wäre toll. Also wo liegt der Fehler, bzw. wie unterbinde ich das? Kann ich dazu evntl. zu ein und derselben Tabellenzeile 2 classes zuweisen? also (if_$account)class:"1" (if_kein_$account)class:"2"???

Bin dankbar für jede Hilfe.....

Link to comment
Share on other sites

Ob es daran liegt weiß ich nicht ...

Alle html-ausgaben die innerhalb einer if abfrage stehen werden in dem erzeugten quelltext nicht enthalten sein wenn die abfrage "false" liefert.

Hier ein Teil aus deinem Quelltext

In dem Fall dass $_SESSION['customer_id'] nicht gesetzt ist (kein login) fehlt der Teil zwischen den ||||||| in deiner html-ausgabe

<td width="98" valign="middle" class="wechsel1" height="35" align="center">

|||||||{if $account}{php}if (isset($_SESSION['customer_id'])){{/php}

<a href="{$logoff}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_logoff.gif" border="0" width="98" height="35"></a>

</td>

<td width="98" valign="middle" class="wechsel2" height="35" align="center">

{php}}{/php}{/if}|||||||

{if $account}

<a href="{$account}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_account.gif" border="0" width="98" height="35"></a>

</td>

sieht dann so aus

<td width="98" valign="middle" class="wechsel1" height="35" align="center">

<a href="{$account}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_account.gif" border="0" width="98" height="35"></a>

</td>

nicht eingeloggt

===>

class="wechsel1" wird auf den kontolink angewendet

eingeloggt

===>

class="wechsel1" wird auf logoff angewendet

class="wechsel2" wird auf den kontolink angewendet

Du muss die IF´se anders setzen

Gruß

Heiko

Link to comment
Share on other sites

Hallo Heiko,

vielen Dank für deine reichliche Unterstützung. Meinst du es ist möglich mit if und else zu arbeiten? Werd wohl mal nen bißchen rumexperimentieren müssen bei den if Tags. Bin leider nicht so der crack bei diesen ganzen Programmierungssachen und hangel mich immer stück für Stück zum gewünchten Ergebnis.

Hast du ne Idee, wie man die if Tags anders setzen könnte? Kann dazu auch gerne mal den kompletten Quellcode meiner index.html posten. Oder zumindest den Teil, der für die buttons zuständig ist.....

auf jeden Fall schonmal DANKE!!!!

Link to comment
Share on other sites

So dass in diesem fall der td-tag entweder vollständig da oder weg ist

{if}

<td width="98" valign="middle" class="wechsel1" height="35" align="center">

<a href="{$account}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_account.gif" border="0" width="98" height="35"></a>

</td>

{/if}

oder auch so

<td width="98" valign="middle" class="wechsel1" height="35" align="center">

{if}

<a href="{$account}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_account.gif" border="0" width="98" height="35"></a>

{/if}

</td>

je nachdem ob das fehlen der td dein design verschiebt.

Link to comment
Share on other sites

Hallo Heiko,

habe es mal mit beiden codes Versucht und bekomme damit den folgenden Fehler:

atal error: Smarty error: [in bike-tuning/index.html line 28]: syntax error: 'if' statement requires arguments (Smarty_Compiler.class.php, line 1256) in /hp/aa/ac/ke/www/bike-tuning/testshop/shop/includes/classes/Smarty_2.6.10/Smarty.class.php on line 1088

Werd nochmal ein wenig rumprobieren, vllt. finde ich irgendwie einen Weg dafür...

Link to comment
Share on other sites

Hallo Heiko....

habs hinbekommen...

{if $account}{php} if (!isset($_SESSION['customer_id'])) { {/php}<td width="98" height="35" valign="middle" class="wechsel0" align="center"><a href="{$account}"><img src="{$tpl_path}buttons/{php}print_r($_SESSION['language']){/php}/button_login_top.gif" border="0" width="98" height="35"></td>

Wenn man die if-Sachen komplett vor die Tabelle packt, läufts...

Ohne deinen Tipp, dass die if`s anders stehen müssen, wär ich wohl nie drauf gekommen, dass so zu machen.... Bin heilfroh, dass es nun läuft.... Ich glaub, ich hab jetzt knappe 80 std. an der Navi gesessen,....

Gruß, Sascha

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...