1

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

app/design/frontend/base/default/template/page/switch/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()

但我不知道把它放在我的代码中的什么地方。

4

3 回答 3

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; ?>
于 2012-10-09T12:02:21.543 回答
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; ?>
于 2012-10-09T12:02:27.970 回答
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; ?>
于 2012-10-09T12:32:58.920 回答