Заставить Magento использовать только один URL во всех списках

Моя проблема заключается в следующем: Magento создает перезапись URL-адресов для новых продуктов и использует разные URL-адреса в разных листингах. Если мой продукт относится к двум категориям Foo и Bar, Magento будет использовать два URL-адреса поверх того, который мне действительно нужен.

  • В списке категорий Foo => /store/type/foo/product.html
  • В списке категорий Bar => /store/type/bar/product.html
  • В обычном линковке /store/product.html

Я хочу / мне нужно, чтобы Magento использовала только URL /store/product.html во всем магазине. Я не нашел для этого никаких настроек на страницах администратора.

Используя Magento 1.5.1.0.


person Lanbo    schedule 19.02.2013    source источник


Ответы (3)


Измените свойство «Использовать путь к категориям для URL-адресов продуктов» в разделе «Система -> Конфигурация -> Каталог» на «Нет».

person Kamil Borkowski    schedule 19.02.2013
comment
Попробуйте перестроить URL-индекс. Это не поможет, чем я не знаю, что здесь может быть плохого ... - person Kamil Borkowski; 19.02.2013

По какой-то причине Magento проигнорировал настройку для всех магазинов. После поиска кода я обнаружил, что метод Mage_Catalog_Model_Product_Url::getUrl() проверяет этот параметр с помощью $product->getDoNotUseCategoryId(). Я вызвал этот метод, и он вернул NULL для всех продуктов.

Чтобы решить эту проблему, я перегрузил этот метод в своем собственном классе продукта:

public function getDoNotUseCategoryId(){
    return true;
}

Это работает.

Это может быть проблема с несуществующим атрибутом или чем-то еще, но пока это работает, я буду его использовать.

person Lanbo    schedule 19.02.2013

Есть один простой способ сделать это везде: скопировать Url.php из app\code\core\Mage\Catalog\Model\Product и передать URl.php в app\code\local\Mage\Catalog\Model\Product. После этого нужно обновить функцию getUrl.

Найдите эту строку: $categoryId = $product->getCategoryId() && !$product->getDoNotUseCategoryId() ? $product->getCategoryId() : null; и обновите с помощью $categoryId = $product->getCategoryId() && Mage::getStoreConfig('catalog/seo/product_use_categories') ? $product->getCategoryId() : null;

Надеюсь, это кому-то поможет.

person Rajiv Ranjan    schedule 22.08.2013