1

ユーザーがページの言語を選択するための言語セレクター ボックスの代わりに、多言語の magento サイトでフラグ イメージを使用したいと考えています。これに関する素晴らしい記事がhttp://www.atwix.com/magento/replace-language-selector-flag-icons/にあります。 唯一の問題は、「店舗コードを URL に追加」オプションを使用することです。私はこのコードをハッキングしましたが、改良を加えて、より Magento に見えるようにすることができます。

    <?php if(count($this->getStores())>1): ?>
    <div class="form-language">
        <div class="langs-wrapper">
        <?php foreach ($this->getStores() as $_lang): ?>
            <?php if ($_lang->getCode() != 'default'): ?>   
            <?  
                $base_url = Mage::getBaseUrl();
                // remove language in base url
                $base_url = str_replace('/en/' , "" , $base_url);       
                $base_url = str_replace('/fr/' , "" , $base_url);                   
                $current_url = $this->helper('core/url')->getCurrentUrl();
                // take out base url and language code
                $rest_of_url = str_replace($base_url , "" , $current_url);                  
                $rest_of_url = str_replace('/en/' , "" , $rest_of_url);     
                $rest_of_url = str_replace('/fr/' , "" , $rest_of_url);      
                // assmble new url
                $new_url = $base_url . '/' . $_lang->getCode()  . '/' . $rest_of_url;                       
            ?>      
            <a class="lang-flag" href="<?php echo $new_url ;?>"><img src="<?php echo $this->getSkinUrl('images/flags/' . $_lang->getCode() . '.png');?>" alt=""></a>
            <?php endif;?>
        <?php endforeach;?>
        </div>
    </div>
    <?php endif;?>
4

1 に答える 1

3

テンプレート ファイル (path/to/template/file.phtml):

<?php if(count($this->getStores()) > 1): ?>
<div class="form-language">
    <?php foreach ($this->getStores() as $_lang): ?>
        <?php $selected = $_lang->getId() == $this->getCurrentStoreId() ?>
        <a class="lang-flag<?php $selected && print ' selected' ?>" href="<?php echo $_lang->getCurrentUrl() ?>">
            <img src="<?php echo $this->getSkinUrl('images/flags/' . $_lang->getCode() . '.png');?>" alt="<?php echo $this->htmlEscape($_lang->getName()) ?>">
        </a>
    <?php endforeach ?>
</div>
<?php endif ?>

次の行をレイアウト更新 xml ファイルに追加します (スイッチ ブロックを定義していない場合)。

<block type="page/switch" name="lang.switcher" template="path/to/template/file.phtml" />

すでにお持ちの場合:

<reference name="store_language">
    <action method="setTemplate"><tmpl>path/to/template/file.phtml</tmpl></action>
</reference>
于 2012-07-02T21:14:16.100 に答える