Magento更改语言选择器

时间:2012-10-09 11:23:09

标签: html magento select php

在我的项目中,我必须以两种语言显示网上商店。 默认情况下,您可以使用以下代码选择语言:

应用程序/设计/前端/碱/默认/模板/页/开关/ language.phtml

<?php if(count($this->getStores())>1): ?>
<div class="form-language">
<label for="select-language"><?php echo $this->__('Your Language:') ?></label>
<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->htmlEscape($_lang->getName()) ?></option>
<?php endforeach; ?>
</select>
</div>
<?php endif; ?>

这当然会显示一个选择框,其中的选项是所有语言。

但我想改变它,以便它成为单独的链接。 我只是不知道该怎么做。

这就是我现在所拥有的。

<?php if(count($this->getStores())>1): ?>
<div class="form-language">
<?php foreach ($this->getStores() as $_lang):?>
    <a href="" title=""><?php echo $this->htmlEscape($_lang->getName()) ?></a>
<?php endforeach;?>
</div>
<?php endif; ?>

PS:我没有在默认的magento代码中更改它。我在app / design / frontend / default / projectname / template / page / switch / language.phtml中工作。

所以我设法通过这段代码自行完成了这项工作:

<?php if(count($this->getStores())>1): ?>
<div class="form-language">
<?php foreach ($this->getStores() as $_lang):?>
    <a href="<?php echo Mage::getUrl() . '?___store=' . $_lang->getId()?>" title=""><?php echo $this->htmlEscape($_lang->getName()) ?></a>
<?php endforeach;?>
</div>
<?php endif; ?>

但现在当我改变语言时。它重定向到主页。 我发现我应该使用:

$_lang->getCurrentUrl()

但我不知道在我的代码中将它放在哪里。

3 个答案:

答案 0 :(得分:4)

你非常接近,你只需要包含URL!

<?php if(count($this->getStores())>1): ?>
<div class="form-language">
<?php foreach ($this->getStores() as $_lang):?>
    <a href="<?php echo $_lang->getCurrentUrl() ?>" title="<?php echo $this->htmlEscape($_lang->getName()) ?>"><?php echo $this->htmlEscape($_lang->getName()) ?></a>
<?php endforeach;?>
</div>
<?php endif; ?>

答案 1 :(得分:1)

与社区相比,企业似乎有所不同。这就是Magento Enterprise v1.12中的代码。也许它有用,或者也许它也可以。

<?php if(count($this->getStores())>1): ?>
<div class="switch switcher-language">
    <label><?php echo $this->__('Language') ?>:</label>
    <div class="switch-wrapper" id="languageSelect">
        <strong class="current language-<?php echo $this->htmlEscape(Mage::app()->getStore()->getCode()) ?>">
            <?php echo $this->htmlEscape(Mage::app()->getStore()->getName()) ?>
        </strong>
        <span class="switcher-holder">(<span onclick="popUpMenu(this);" class="switcher"><?php echo $this->__('Change')?></span>)</span>
        <ul style="display:none" id="popId-languageSelect">
            <li class="current language-<?php echo $this->htmlEscape(Mage::app()->getStore()->getCode()) ?>">
                <span><?php echo $this->htmlEscape(Mage::app()->getStore()->getName()) ?></span>
            </li>   
            <?php foreach ($this->getStores() as $_lang): ?>
                <?php if($_lang->getId()!=$this->getCurrentStoreId()): ?>
                    <li class="language-<?php echo $this->htmlEscape($_lang->getCode()); ?>">
                        <a href="<?php echo $_lang->getCurrentUrl() ?>"><?php echo $this->htmlEscape($_lang->getName()) ?></a>
                    </li>
                <?php endif; ?>
            <?php endforeach; ?>
        </ul>
    </div>
</div>
<?php endif; ?>

答案 2 :(得分:0)

试试这段代码。我在EE 1.12中测试过。

<?php if(count($this->getStores())>1): ?>
    <ul>
    <?php foreach ($this->getStores() as $_lang): ?>
      <?php if($_lang->getId()!=$this->getCurrentStoreId()): ?>
        <li class="language-<?php echo $this->htmlEscape($_lang->getCode()); ?>">
        <a href="<?php echo $_lang->getCurrentUrl() ?>"><?php echo $this->htmlEscape($_lang->getName()) ?></a>
        </li>
      <?php endif; ?>
     <?php endforeach; ?>
    </ul>
    <?php endif; ?>