Помощь Вывод категории с большим уровнем вложенности и коротким url

Freeman Liberty

Постоялец
Регистрация
19 Май 2009
Сообщения
489
Реакции
173
Работаю над магазином женской одежды и аксессуаров на ocstore, застопорился на структуре категорий .
Дело в том структура получается достаточно сложной с большим уровнем вложенности подкатегорий.

Например, категория «Женская одежда» включает в себя категории «Платья», «Юбки», «Футболки» и т.д.
2014-09-18_104433.jpg
В свою очередь категория «Платья» должна включать в себя подкатегории выводящие платья по цветам «Красные платья», «Черные платья» и т.д.; сезонам «Летние», «Зимние»; длине «Короткие платья», «Длинные платья», а еще по сезону, фасону и т.п.

Если реализовывать эту структуру с помощью подкатегорий получается слишком большой уровень вложенности и длинный урл
Для просмотра ссылки Войди или Зарегистрируйся или
Для просмотра ссылки Войди или Зарегистрируйся

Хотелось бы, чтобы урл имел вида Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся /belye-platya/
т.е. чтобы в url выводилась только последняя категория.
Возможно ли так доработать Seo PRO?
Или, есть другие пути решения данного вопросы?
 
Настройки - Сервер - ЧПУ товаров с категориями выберите НЕТ... и у вас не будут в адресной строке отображаться подкатегории...
 
Настройки - Сервер - ЧПУ товаров с категориями выберите НЕТ... и у вас не будут в адресной строке отображаться подкатегории...
подкатегории не будут отображаться только для товаров, для самих подкатегорий этот механизм не работает.
Для просмотра ссылки Войди или Зарегистрируйся - это адрес подкатегории, а не товара.
Было бы гораздо лучше если бы подкатегории выводились без родительской - Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся
Что позволило бы не опасаться изменения улов в случае смены структуры или уровня вложенности категории.
 
подкатегории не будут отображаться только для товаров, для самих подкатегорий этот механизм не работает.
Для просмотра ссылки Войди или Зарегистрируйся - это адрес подкатегории, а не товара.
Было бы гораздо лучше если бы подкатегории выводились без родительской - Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся
Что позволило бы не опасаться изменения улов в случае смены структуры или уровня вложенности категории.
тогда стандартным сео-про не обойтись.. необходимо ставить дополнительно модули..
 
Решение.
Стандартными средствами OpenCart убрать родительские категории в SEO у нас не получится, для решения данной задачи нам нужно будет отредактировать SEO контроллер.

Редактируем seo_pro

Открываем файл “catalog/controller/common/seo_pro.php”, в функции rewrite() находим код:
Код:
case 'path':
    $categories = explode('_', $value);
    foreach ($categories as $category) {
        $queries[] = 'category_id=' . $category;
    }
    unset($data[$key]);
    break;

Заменяем его на:
Код:
case 'path':
    $categories = explode('_', $value);
    $queries[] = 'category_id=' . end($categories);
    unset($data[$key]);
    break;

Открываем файл “catalog/controller/common/seo_url.php”, в функции rewrite() находим код:
Код:
} elseif ($key == 'path') {
    $categories = explode('_', $value);
  
    foreach ($categories as $category) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");

        if ($query->num_rows) {
            $url .= '/' . $query->row['keyword'];
        }                           
    }
  
    unset($data[$key]);
}

По аналогии с seo_pro заменяем код на:
Код:
} elseif ($key == 'path') {
    $categories = explode('_', $value);
  
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)end($categories) . "'");
    if ($query->num_rows) {
        $url .= '/' . $query->row['keyword'];
    }
  
    unset($data[$key]);
}
Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху