Из коробки OcStore создает ЧПУ с вложенностью, например:

  • Страница категории: сайт/категория/подкатегория/...и т.д.
  • Страница товара: сайт/категория/подкатегория/товар
В SEOPRO есть настройка, которая позволяет делать ЧПУ товара прямым без подкатегорий - сайт/товар

Но для категорий нет такой настройки и проходится делать доработку что бы ссылка на категория была сайт/конечная-категория без вложенности промежуточных категорий.

Как это сделать что бы хлебные крошки были полные а ссылка короткая?

Первое, переходим в catalog/controller/common/seopro.php (catalog/controller/startup/seopro.php) и строки

foreach ($categories as $category) {
  $queries[] = 'category_id=' . $category;
}

надо заменить на

$queries[] = 'category_id=' . end($categories);

После чего у нас ЧПУ станет коротким, в котором будет только последняя категория. Однако, при таком подходе поломаются хлебные крошки, в которых пропадет полный путь к категории. Для того что бы сделать полные хлебные крошки, нам надо позаимствовать один метод из seopro.

Для этого открываем файл - контроллер категории catalog/caontroller/product/category.php где вставляем метод формирования правильного пути к категории:

private function getPathByCategory($category_id) {
  $category_id = (int)$category_id;
  if ($category_id < 1) return false;
  static $path = null;
  if (!isset($path)) {
    $path = $this->cache->get('category.seopath');
    if (!isset($path)) $path = array();
  }
  if (!isset($path[$category_id])) {
    $max_level = 10;
    $sql = 'SELECT CONCAT_WS('_'';
    for ($i = $max_level-1; $i >= 0; --$i) {
      $sql .= ',t$i.category_id';
    }
    $sql .= ') AS path FROM ' . DB_PREFIX . 'category t0';
    for ($i = 1; $i < $max_level; ++$i) {
      $sql .= ' LEFT JOIN ' . DB_PREFIX . 'category t$i ON (t$i.category_id = t' . ($i-1) . '.parent_id)';
    }
    $sql .= ' WHERE t0.category_id = '' . $category_id . ''';
    $query = $this->db->query($sql);
    $path[$category_id] = $query->num_rows ? $query->row['path'] : false;
    $this->cache->set('category.seopath', $path);
  }
  return $path[$category_id];
}























После чего находим в этом же файле строку

$parts = explode('_', (string)$this->request->get['path']);

И заменяем на

$parts = explode('_', $this->getPathByCategory($this->request->get['path']));

Таким образом у нас ссылка будет только с последней категорией а хлебные крошки полные.


06.01.2018 15729
Новости из этой категории
22.11.2019 4538
Слушает ли нас facebook?
Небольшая предыстория. Мы с женой открыли у себя в городе зоомагазин и в пятничный вечер я думаю дай-ка осилю рекламу в facebook. Смотрю ленту и вижу рекламный блок, клик..
08.09.2019 3578
Приятно иметь дело с хорошими людьми. Небольшая история с автором фильтра filter vier Виталием
Небольшая предыстория. Я уже не занимаюсь заказами и работой по техническим заданиям, правками и т.п. Я сейчас полностью перешел на разработку своих модулей.Посмотреть мо..
14.04.2019 11421
Депозит монобанк- обзор и отзывы
Уважаемые посетители, это статья создана для жителей Украины, для гостей с других стран эта статья не будет актуальная. Банк работает только на территории УкраиныДля нача..
19.03.2019 5078
Google против добавления лишнего текста на страницы категорий интернет-магазинов
Сотрудник Google Джон Мюллер (John Mueller) предостерег владельцев сайтов электронной коммерции от добавления ненужного текста на страницы категорий.По его мнению, добавл..
18.03.2019 5324
Как сделать автоматические якори в тексте
Была одна интересная доработка недавно. Надо было создать автоматическое содержание статьи на основании его h1-h6 заголовков.Зачем это нужно и как выглядитЭто нужно что б..
Вся информация, представленная на сайте, является демонстрационной и оставляя информацию о своих персональных данных, вы добровольно делаете их общедоступными.
Рекомендуем использовать обезличенные данные. Мы используем файлы cookie для вашего удобства пользования сайтом и повышения качества рекомендаций. Подробнее