Как создать постоянные перенаправления для старых ключей URL с кодом?

1

проблема

Я добавил новую 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();*/
Теги:
magento
url-redirection

1 ответ

1

Вручную изменение перезаписи URL-адресов для объектов по умолчанию (например, продуктов и категорий) может иметь неблагоприятные последствия. Индексатор URL-адресов воссоздает записи, которые вы, возможно, удалили/изменили.

Вы описали свое решение, но не проблему, которую вы пытаетесь решить. Почему вы создаете перенаправления в первую очередь?

По умолчанию при изменении url_key в администраторе существует возможность создать постоянную переадресацию.

Изображение 174551

То же самое верно при обновлении url_key программно

Mage::getModel('catalog/product')->load(905)
    ->setUrlKey('new-url-124')
    ->save();
  • 0
    добавлена постановка задачи

Ещё вопросы

Сообщество Overcoder
Наверх
Меню