问题
我添加了一个新的catergory,其中包含" 鞋"的urlkey。由于URL重定向将其链接到 shoes-86 ,因此发现此urlkey存在问题。这是因为有几十个具有相同网址密钥(鞋子)的已禁用/遗留产品。了解手动创建重定向会产生不良副作用。我的任务是使用脚本以编程方式解决它并更改产品的所有urlkey,以便magento可以自行修复重定向。这造成了一些问题。
尝试解决方案
目前我有这个代码不起作用,它不会创建重定向。以下代码用于检索具有black_canvas_sneakers的url键的产品。这样做是因为它是我的测试产品,我想在将脚本应用到整个数据库之前看到效果。这个脚本似乎只是从默认商店检索产品,没有其他商店出于某种奇怪的原因。我正在寻找解决方案的问题是,为什么这段代码不起作用,我该怎么做才能使它有效?
<?php
require 'app/Mage.php';
umask(0);
Mage::app()->setCurrentStore('0');
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('url_key', 'black-canvas-sneakers');
foreach ($collection as $product) {
$product->setData('save_rewrites_history', true)->save();
break;
}
我知道以下代码可以进行重定向,但高级magento开发人员告诉我它可能会导致意想不到的副作用。因此,此代码不是创建永久重定向的最佳实践。
/*Mage::getModel('core/url_rewrite')
->setIsSystem(0)
->setStoreId(2)
->setOptions('RP')
->setIdPath($product->getUrlKey() . '.html')
->setTargetPath($product->getUrlKey() . '.html')
->setRequestPath('shoes-' . $product->getId() . '.html' )
->save();*/
答案 0 :(得分:1)
手动更改默认实体(如产品和类别)的网址重写可能会产生不利影响。 url索引器将重新创建您可能已删除/更改的记录。
您已经描述了您的解决方案,但不是您尝试解决的问题。你为什么要首先创建重定向?
默认情况下,更改管理员中的url_key
时,可以选择创建永久重定向。
以编程方式更新url_key
Mage::getModel('catalog/product')->load(905)
->setUrlKey('new-url-124')
->save();