4

Magento 具有用于创建自定义 SEO 友好 URL 键的产品和类别字段。但是当您有多个商店时,通常不能为不同的商店使用不同的 URL 键,因为 url_key 字段默认为“GLOBAL”。对于产品,您可以从属性管理将 url_key 属性的 is_default 字段更新为“商店视图”。但是对于类别的 url_key 字段,Magento 中没有该选项。但是数据库中确实存在该字段,属性代码相同,但 backend_model 不同,因此您需要直接进入数据库并将“is_global”字段 1 更改为 0。

参考: http: //www.devraju.com/magento/differ-category-url-keys-for-different-store-views-in-magento/ 查看页面底部的评论。

同样的问题: Magento 多语言 - 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

这件事也花了我几天的时间。我在相关表中应用了更改 is_global 字段,但这只适用于我的本地服务器,无法使其在实时服务器上运行(不知道为什么)。

尝试了多种解决方案,我从管理面板中发现了一个简单的解决方案。

尝试

目录-> URl 重写管理-> 添加 url 重写-> 选择'for category' -> 选择类别-> 选择商店,添加 url,选择重定向'否'并保存。

注意:这可能不会影响您的菜单链接,您可以在菜单类别链接中添加自定义 URL。

于 2013-07-11T03:42:59.867 回答
1

这篇文章对你有帮助吗?

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

似乎可以解决您的问题

于 2014-10-31T12:29:14.060 回答
0

如果您复制当前类别根树并使用不同的 url 键,然后为每个商店分配自己的根类别树,该怎么办。(不是理想的解决方案,但无需任何修改或编程即可工作)

请参阅创建和分配根类别

于 2013-01-04T00:11:07.743 回答
0

我遇到了同样的问题,在创建新产品时显示错误“具有“url_key”属性的产品已经存在”

我将 url_key 更改为可选字段,它对我有用。

于 2014-03-25T07:32:52.543 回答