Программное изменение Url Key продукта без создания URL Rewrite

Программное изменение Url Key продукта без создания URL Rewrite

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Ayazet
  • Группа: Пользователь
  • Сообщений: 6
  • Регистрация: 24.02.2011

06.07.2011 09:36

Необходимо программно изменить url key всех продуктов в интернет-магазине.
При использовании нижеприведенной конструкции происходит создание нового URL Rewrite с прежнего Url на новый, вместо его замены.

$products = Mage::getModel('catalog/product')->getCollection();
foreach($products as $_product){
	$url = $_product->getResource()->getAttribute('url_key')->getFrontend()->getValue($_product);
	$_product->setUrlKey('prefix' . $url)->save();
}


Как можно заменить url адрес товара без создания нового URL Rewrite?

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

06.07.2011 09:51

При изменении ключа адреса товара система автоматически добавляет перенаправление состарого адреса товара на новый в том случае, когда у вас в административной части включена соответствующая опция.
Система узнаёт об изменении ключа товара благодаря встроеному в нее механизму подписки на события.

Для того, чтобы отключить такое поведение системы, вам нужно перед сохранением товара установить у товара значения параметров is_massupdate и exclude_url_rewrite в значение true:

/** @var Mage_Catalog_Model_Product $product */
$product
    ->setDataUsingMethod ('is_massupdate', true)
    ->setDataUsingMethod ('exclude_url_rewrite', true)
;


Поделиться темой: