Sprachwechsel

CreativPur

Erfahrenes Mitglied
Hi,

ich habe eine Flagge (png) neben meinem Dropdown-Feld für Fremdsprachen platziert.
Nun möchte ich, dass die Flaggen sich je nach Sprache wechseln.

Der Quellcode sieht folgend aus:

Code:
<?php if(count($this->getStores())>1): ?>
<div class="form-language">
    <div class="input-group">
     
        <div style="float:left; margin-right: 5px; padding-top:7px;"><?php echo "<img src='/bilder/flags/de.png' />"; ?> </div>
     
         <select id="select-language" title="<?php echo $this->__('Your Language') ?>" onchange="window.location.href=this.value">
        <?php foreach ($this->getStores() as $_lang): ?>
            <?php $_selected = ($_lang->getId() == $this->getCurrentStoreId()) ? ' selected="selected"' : '' ?>
            <option value="<?php echo $_lang->getCurrentUrl() ?>"<?php echo $_selected ?>><?php echo $this->escapeHtml($_lang->getName()) ?></option>
        <?php endforeach; ?>
        </select>
    </div>
</div>
<?php endif; ?>

Ich habe schon hin und her gebastelt.. Bekomme es aber nicht hin..
Hat jemand eine Idee, wie ich dies umsetzen kann ?

Vielen Dank
 
Zuletzt bearbeitet:
Hi, ich würde dies mit ein Cookie oder Session lösen. welche ansetzte hast du den schon versucht?

Gruß
 
Hi, ich würde dies mit ein Cookie oder Session lösen. welche ansetzte hast du den schon versucht?

Gruß
Ich versuche gerade folgenden Code:

Code:
<?php if(count($this->getStores())>1): ?>
<div class="form-language">
    <div class="input-group">

    <img src="<?php echo $this->__getSkinUrl('images/flags/'.$_lang->getCode().'.png'); ?>">
          <select id="select-language" title="<?php echo $this->__('Your Language') ?>" onchange="window.location.href=this.value">
        <?php foreach ($this->getStores() as $_lang): ?>
            <?php $_selected = ($_lang->getId() == $this->getCurrentStoreId()) ? ' selected="selected"' : '' ?>
            <option value="<?php echo $_lang->getCurrentUrl() ?>"<?php echo $_selected ?>><?php echo $this->escapeHtml($_lang->getName()) ?></option>
        <?php endforeach; ?>
        </select>
    </div>
</div>
<?php endif; ?>

Aber somit verschwindet sogar das select-feld..

Und wie löse ich es mit Cookie, bzw. Session ?
 
Kannst du bitte mal den Code teilen posten, der ausgeführt wird wenn man eine Sprache im "select-feld" gewählt hat?
 
So zeigt er alle sprachen an, die ich installiert habe. Aber immer noch nicht diejenige, die für die aktuelle Sprache sein soll..

Code:
<?php if(count($this->getStores())>1): ?>

<div class="form-language">
    <div class="input-group">
   
   
    
<div class="language-switcher" id="easyflags">
    <?php foreach ($this->getStores() as $_lang): ?>
        <a href="<?php echo $_lang->getCurrentUrl() ?>"><img src="<?php echo $this->getSkinUrl('images/flags/' . $this->htmlEscape($_lang->getCode()) . '.png') ?>" alt="<?php echo $this->htmlEscape($_lang->getName()) ?>"/></a>
    <?php endforeach; ?>
</div>


   
          <select id="select-language" title="<?php echo $this->__('Your Language') ?>" onchange="window.location.href=this.value">
        <?php foreach ($this->getStores() as $_lang): ?>
            <?php $_selected = ($_lang->getId() == $this->getCurrentStoreId()) ? ' selected="selected"' : '' ?>
            <option value="<?php echo $_lang->getCurrentUrl() ?>"<?php echo $_selected ?>><?php echo $this->escapeHtml($_lang->getName()) ?></option>
        <?php endforeach; ?>
        </select>
    </div>
</div>
<?php endif; ?>
 
Wie ich sehe beziehst du die Daten aus einer Datenbank, die jetzige gewählte ID wäre in dem sinne ja
PHP:
 $this->getCurrentStoreId()

Nun müsste man schauen welche ID welche Sprache ist ferner welche Flagge sie hat

PHP:
<?php
    function checkFlag($flag) {
        switch ($flag) {
            case '1':
                $flag = 'de';
                break;
            case '2':
                $flag = 'en';
                break;
            default:
                $flag = 'de';
            }

        return $flag;
    }

    ?>
<?php  if(count($this->getStores())>1): ?>
<div class="form-language">
    <div class="input-group">
<div class="language-switcher" id="easyflags">
    <?php  foreach ($this->getStores() as $_lang): ?>
        <a href="<?php  echo $_lang->getCurrentUrl()  ?>"><img src="<?php  echo $this->getSkinUrl('images/flags/' . checkFlag($this->htmlEscape($this->getCurrentStoreId())) . '.png')  ?>" alt="<?php  echo $this->htmlEscape($_lang->getName())  ?>"/></a>
    <?php  endforeach; ?>
</div>
          <select id="select-language" title="<?php  echo $this->__('Your Language')  ?>" onchange="window.location.href=this.value">
        <?php  foreach ($this->getStores() as $_lang): ?>
            <?php  $_selected = ($_lang->getId() == $this->getCurrentStoreId()) ? ' selected="selected"' :''  ?>
            <option value="<?php  echo $_lang->getCurrentUrl()  ?>"<?php  echo $_selected  ?>><?php  echo $this->escapeHtml($_lang->getName())  ?></option>
        <?php  endforeach; ?>
        </select>
    </div>
</div>
<?php  endif; ?>

Ist nicht getestet :D
 
Super.. Vielen Dank..
Es hat soweit geklappt.

Leider gibt es noch ein Problem..
Ich habe 4 Sprachen und jedes mal wird die aktuelle Flagge jetzt auch vier mal angezeigt.

flags.jpg


Sie sollte aber nur einmal erscheinen.
Wo liegt da im Script noch der Fehler ?

Die ID sind folgendermaßen:
de = Id1
en = Id2
fr = Id3
nl = Id4
 
Zuletzt bearbeitet:
Edit: ich sehe grade das dieser Code auch falsch sein wird.... ich schaue mir es an, wenn ich zuhause bin hier habe ich kein Editor :D

Der Fehler mit den Doppelten Flaggen ist die foreach die du durchlaufen lässt...
Gruß
 
Zuletzt bearbeitet:
Habe es auch gerade festgestellt. Es ist keine Änderung vorhanden. Dennoch vielen Dank für Deine Bemühungen
 
Ich habe eine Webseite in vier verschiedenen Sprachen. Diese werden durch ein Dropdown-Menü ausgewählt. Neben dem Menü hätte ich gern die zur Sprache gehörige Flagge.
Dies funktioniert auch soweit, allerdings wird mir die Flagge so oft wie die Anzahl der Sprachen angezeigt.

flags.jpg


Der Quelltest ist folgend:

Code:
<?php  if(count($this->getStores())>1): ?>
<?php
    function checkFlag($flag) {
        switch ($flag) {
            case '1':
                $flag = 'de';
                break;
            case '2':
                $flag = 'en';
                break;
            case '3':
                $flag = 'fr';
                break;
            case '4':
                $flag = 'nl';
                break;
            default:
                $flag = 'de';
            }
        return $flag;
    }?>
<div class="form-language">
    <div class="input-group">
<div class="language-switcher" id="easyflags">
    <?php  foreach ($this->getStores() as $_lang): ?>
        <a href="<?php  echo $_lang->getCurrentUrl()  ?>"><img src="<?php  echo $this->getSkinUrl('images/flags/' . checkFlag($this->htmlEscape($this->getCurrentStoreId())) . '.png')  ?>" alt="<?php  echo $this->htmlEscape($_lang->getName())  ?>"/></a>
    <?php  endforeach; ?>
</div>
          <select id="select-language" title="<?php  echo $this->__('Your Language')  ?>" onchange="window.location.href=this.value">
        <?php  foreach ($this->getStores() as $_lang): ?>
            <?php  $_selected = ($_lang->getId() == $this->getCurrentStoreId()) ? ' selected="selected"' :''  ?>
            <option value="<?php  echo $_lang->getCurrentUrl()  ?>"<?php  echo $_selected  ?>><?php  echo $this->escapeHtml($_lang->getName())  ?></option>
        <?php  endforeach; ?>
        </select>
    </div>
</div>
<?php  endif; ?>
Wo liegt das Problem ??
Danke für eure Hilfe
 
Zuletzt bearbeitet:
Zurück