产品URL重写问题在Magento 1.7


Product URL Rewrite troubles in Magento 1.7

我的Magento 1.7安装有一个奇怪的问题,所有的产品url都有类别键在他们,但Up-Sell产品(在产品的详细信息页面上)显示的url与类别键缺失。相关产品的url是可以的。

我的Magento设置如下::

  • "使用类别路径作为产品url " =>是
  • "如果URL密钥改变,为URL创建永久重定向" =>否
  • "使用父类别路径作为类别url " =>否

我的产品是::

  1. 位于2个品类层次深,表示cat1/cat2/product
  2. 所有产品的url格式如下::site_url/cat2/product_key
  3. 一个产品出现在多个类别下

我找到了一个解决方案,在Upsell产品的URL中包含类别名称…

我必须修改my_theme/template/catalog/product/list/upsell.phtml

在第51行周围,就在

行后面
<?php if($_link=$this->getIterableItem()):

我添加了以下行::

$d = $_link->getData();
$id = $d['entity_id'];
$_product = Mage::getModel('catalog/product')->load($id);
$_categories = $_product->getCategoryIds();
$_category = Mage::getModel('catalog/category')->load($_categories[0]); 
$cat_url = str_replace(".html","",$_category->getUrlPath());
$_url = Mage::getUrl($cat_url).basename($_link->getProductUrl()); 

使用$_url变量作为产品的URL。

如果$_categories是if-function

$d = $_link->getData();
$id = $d['entity_id'];
$_product = Mage::getModel('catalog/product')->load($id);
$_categories = $_product->getCategoryIds();
if($_categories) {
    $_category = Mage::getModel('catalog/category')->load($_categories[0]);
    $cat_url = str_replace(".html","",$_category->getUrlPath());
    $_url = Mage::getUrl($cat_url).basename($_link->getProductUrl());
}

对于输出url:

<?php if ($_categories) { echo $_url; }; ?>
当文章没有分类时,system.log会统计错误。