4

Magento には、SEO に適したカスタム URL キーを作成するための製品とカテゴリのフィールドがあります。ただし、複数のストアがある場合、フィールド url_key はデフォルトで「GLOBAL」であるため、通常、ストアごとに異なる URL キーを持つことはできません。商品の場合、url_key 属性の is_default フィールドを属性管理から「Store Views」に更新できます。しかし、カテゴリの url_key フィールドについては、Magento にはそのオプションがありません。ただし、フィールドは同じ属性コードでデータベースに存在しますが、backend_model が異なるため、データベースに直接アクセスして「is_global」フィールド 1 を 0 に変更する必要があります。

参照: http://www.devraju.com/magento/different-category-url-keys-for-different-store-views-in-magento/ ページ下部のコメントを参照してください。

ここで同じ問題: Magento multilanguage - 言語の二重変更が 404 で返されます (または、ビューではなくストア内で言語を変更する方法)

この戦略は古いバージョンでは機能しているようですが、7.1 では問題が発生しています。カタログ >> 属性 >> 属性の管理に移動すると、url_key 属性は既にストア ビューに設定されています。下の画像を参照してください。

ここに画像の説明を入力

さらに、属性テーブルは適切に構成されているように見えます。以下の SQL を参照してください。

切り替えコードは次のようになります。

    <?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; ?>        

SQL

SELECT * FROM eav_attribute WHERE attribute_code LIKE '%url_key%';  

attribute_id Attribute Id   entity_type_id Entity Type Id   attribute_code Attribute 
    Edit    Delete  43  3   url_key  catalog/category_attribute_backend_urlkey  
    Edit    Delete  97  4   url_key  catalog/product_attribute_backend_urlkey  


SELECT attribute_id, is_global FROM catalog_eav_attribute WHERE attribute_id=43;
SELECT attribute_id, is_global FROM catalog_eav_attribute WHERE attribute_id=97;


Full Texts  attribute_id Attribute ID   is_global Is Global
    Edit    Delete  43  0


Full Texts  attribute_id Attribute ID   is_global Is Global
    Edit    Delete  97  0

私も書き換えルールを使って解決しようとしましたが、書き換えルールは言語切り替えをカバーしていないようです。参照: http://www.magentocommerce.com/wiki/modules_reference/english/mage_adminhtml/urlrewrite/index

適切なコード変更による解決策を探しています。

4

4 に答える 4

1

この記事は役に立ちましたか?

https://mobweb.ch/2014-08-22-multi-language-magento-shop-translate-category-and-product-urls/

あなたの問題を解決するようです

于 2014-10-31T12:29:14.060 に答える
1

これにも数日かかりました。関連テーブルの is_global フィールドの変更を適用しましたが、それはローカルサーバーでのみ機能し、ライブサーバーで機能させることができませんでした(理由はわかりません)。

いくつかのソリューションを試してみたところ、管理パネルから簡単なソリューションに出会いました。

試す

カタログ -> URl 書き換え管理 -> URL 書き換えの追加 -> 「カテゴリ用」を選択 -> カテゴリを選択 -> ストアを選択し、URL を追加し、リダイレクト「いいえ」を選択して保存します。

注: メニュー リンクには影響しない可能性があります。メニュー カテゴリ リンクにカスタム URL を追加できます。

于 2013-07-11T03:42:59.867 に答える
0

現在のカテゴリルートツリーを複製し、異なるURLキーを使用してから、各ストアに独自のルートカテゴリツリーを割り当てるとどうなりますか。(理想的なソリューションではありませんが、変更やプログラミングなしで機能するはずです)

ルートカテゴリの作成と割り当てを参照してください。

于 2013-01-04T00:11:07.743 に答える