【发布时间】:2012-12-18 06:24:24
【问题描述】:
Magento 具有用于创建自定义 SEO 友好 URL 键的产品和类别字段。 但是当你有多个商店时,你通常不能有不同的 URL 键 对于不同的商店,因为字段 url_key 默认为“GLOBAL”。对于产品, 您可以将 url_key 属性的 is_default 字段从 Attribute 更新为“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/ 请参阅页面底部的 cmets。
这种策略似乎在旧版本中有效,但在 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
我正在寻找具有适当代码修改的解决方案。
【问题讨论】:
-
在 Vanilla Magento 1.7.0.2 上运行良好......所以它是你的东西......你在将 url_key 更改为存储视图级别后运行了重新索引吗?
标签: magento url translation