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
適切なコード変更による解決策を探しています。