проблема
Я добавил новую catergory, которая имеет urlkey из " обуви ". Этот urlkey оказался проблематичным, поскольку перенаправление URL связало его с обувью-86. Это связано с тем, что существует несколько десятков продуктов с ограниченными возможностями/устаревших продуктов с одним и тем же ключом (обувь). Понимание того, что ручное создание переадресаций будет иметь неблагоприятные побочные эффекты. Мне было поручено разрешить его программным образом с помощью сценариев и изменить все urlkeys продуктов, чтобы magento мог исправить сами перенаправления. Это создало некоторые проблемы.
Попытка решения
В настоящее время у меня есть этот код, который не работает, он не создает перенаправления. Следующий код предполагает получение продуктов с помощью ключа url для black_canvas_sneakers. Он делает это, потому что это мой тестовый продукт, и я хочу видеть эффекты перед применением сценария ко всей базе данных. Кажется, что этот скрипт извлекает продукты из хранилища по умолчанию, никаких других магазинов по какой-то нечетной причине. Проблема, которую я ищу для решения, заключается в том, почему этот код не работает и что я могу сделать, чтобы он работал?
<?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();*/
Вручную изменение перезаписи URL-адресов для объектов по умолчанию (например, продуктов и категорий) может иметь неблагоприятные последствия. Индексатор URL-адресов воссоздает записи, которые вы, возможно, удалили/изменили.
Вы описали свое решение, но не проблему, которую вы пытаетесь решить. Почему вы создаете перенаправления в первую очередь?
По умолчанию при изменении url_key
в администраторе существует возможность создать постоянную переадресацию.
То же самое верно при обновлении url_key
программно
Mage::getModel('catalog/product')->load(905)
->setUrlKey('new-url-124')
->save();