Измените подкатегории Magento в боковой многоуровневой навигации, чтобы они указывали на фактические категории

Мне было интересно, есть ли способ изменить URL-адреса навигации на боковой панели, чтобы они указывали на фактические категории.

Например, есть виджеты родительской категории с подкатегориями Виджеты для компьютеров, виджеты для ноутбуков, виджеты для телефонов. Если вы перейдете через основную навигацию к виджету телефона, URL-адрес, оптимизированный для SEO, будет www.example.com/widgets/phone-widgets, но если вы нажмете на категорию виджета, по умолчанию у вас будет навигация с фильтрацией боковой панели с категориями Виджеты для компьютеров, виджеты для ноутбуков. , Виджеты для телефона. Если на этой странице вы нажмете на виджеты телефона, URL-адрес страницы будет выглядеть так: www.example.com/widgets?cat=3.

Есть ли способ сделать так, чтобы эти боковые ссылки на категории указывали на www.example.com/widgets/phone-widgets вместо www.example.com/widgets?cat=3? Я бы очень хотел сделать это через код Magento, а не через расширение или перенаправление 301.

Заранее спасибо!


person AndreyZ    schedule 27.12.2012    source источник


Ответы (3)


Я создал модуль, который решает эту ошибку.

https://github.com/jruzafa/Devopensource_LayerCatSeo

Спасибо,

person jruzafa    schedule 05.02.2014

Используйте этот код для загрузки данной категории (по ID)

$category = Mage::getModel('catalog/category')->load($categoryId);

Используйте это, чтобы получить дружественный URL

$category->getCategoryUrl();
person pzirkind    schedule 27.12.2012
comment
Спасибо за ваш ответ. Не могли бы вы сказать мне, в какой файл я должен добавить этот код? - person AndreyZ; 28.12.2012
comment
проверьте этот вопрос: stackoverflow.com/questions/3453827/ - person pzirkind; 28.12.2012

Вы можете переопределить метод getUrl() для Mage_Catalog_Model_Layer_Filter_Item.

Вот пример:

public function getUrl()
{
  $value = $this->getValue();
  $query = array(
      $this->getFilter()->getRequestVar() => $value,
      Mage::getBlockSingleton('page/html_pager')->getPageVarName() => null // exclude current page from urls
  );
  $url = Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true, '_query'=>$query));
  if ($this->getFilter()->getRequestVar() != 'cat') {
    return $url;
  }

  // Change ?cat=4 for real category url if no additional filters are present
  // www.x.com/y?cat=4
  // =>
  // www.x.com/y/z

  $pos = strpos($url, '&');
  if ($pos !== false) {
    return $url;
  } else {
    // no additional filters
    return Mage::getModel('catalog/category')->load($value)->getUrl();
  }
}
person mati    schedule 08.08.2015