1

私のプロジェクトでは、ウェブショップを 2 つの言語で表示する必要があります。デフォルトでは、次のコードで言語を選択できます。

アプリ/デザイン/フロントエンド/ベース/デフォルト/テンプレート/ページ/スイッチ/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 に答える