Настраиваем ЧПУ в OpenCart

Настраиваем ЧПУ в OpenCart

  • Поддержка модулей, значительно расширяющих функционал движка.
  • Много тем оформления.
  • Движок бесплатен.
  • Интуитивное управление
  • Наличие локализованной русской версии.

Примеры магазинов, сделанных на OpenСart – здесь.

Последнюю русифицированную OpenCart можно скачать по следующей ссылке.

Установка Opencart, если вы  ставили WordPress, DLE, Joomla или другую популярную CMS, не вызовет у вас особенных трудностей.

Первое, что мне бросилось в глаза после установки, это ужасные ссылки, генерируемые на страницы товаров и категорий. Я это исправил, первым делом. Сейчас расскажу как.

Как включить ЧПУ в OpenCart

Изначально ЧПУ (человекопонятный урл, некоторые называют их SEO URL) в OpenCart не включены.

Заходим в панель управления магазина – http://адрес_магазина/admin

Идем по следующему пути:

Система -> Настройки -> Сервер. В строчке “Использовать SEO-url” выбираем да.

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

Убедитесь, что  файл .htaccess.txt переименован в .htaccess и содержит следующее:

Options +FollowSymlinksRewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)?*$ index.php?_route_=$1 [L,QSA]
AllowOwerride All

После настройки ЧПУ возникает другая проблема – создаются одинаковые страницы с разными адресами, или другими словами, дублированный контент. Решение этой проблемы описано на форуме движка.

Надеюсь эта заметка оказалась для вас полезной. Я был бы признателен, если бы вы в комментариях рассказали про свой опыт работы с OpenСart или другой CMS для магазина.


Теги: , , ,

Не забываем подписываться на денежную RSS ленту

А также проследить за мной в твиттере


19 Комментарии Оставить комментарий

  1. А как сделать астматическую транслитерацию при формирования url

  2. Игорь Еременко, Транслитерация ЧПУ

  3. Kreved #

    Почему-то после описанных действий получаем:

    “Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.”

  4. [quote]описано на форуме движка.[/quote]
    А можно поканкретнее указать?!?! может ссылку?

  5. Спасибо огромное!
    как всегда все гениальное – самое простое!
    ну конечно не без помощи качественново форума :)
    поменял на SEO URL

  6. >После настройки ЧПУ возникает другая проблема – создаются одинаковые страницы с разными адресами, или другими словами, дублированный контент. Решение этой проблемы описано на форуме движка.

    Ни хрена не нашел, подскажи урл.

  7. Добавил ссылку в пост.

  8. пришлось отказаться от движка из-за отсутствия возможности ручками править движок, переносить с одного движка на другой становится невозможным… хороший движок, пожалуй, лучший среди бесплатных простых, но из-за ссылок – он становится бесполезным

  9. Aharito #

    gerser #,
    Вы или пьяны, или бредите. Как понять “пришлось отказаться от движка из-за отсутствия возможности ручками править движок”? Берёте и правите, если ручки есть. Протрезвейте, прежде чем писать.

  10. Сейчас как раз ищу решение по настройке чпу на только спроектированом магазине, Ваша статья кстати буду внедрять. Как получится отпишусь

  11. Здравстввуйте БлагоДарю за статью
    Все получилось, но после переименования файла в .htaccess меня выкинуло из админки и теперь мне туда не войти… если переименовываю обратно то снова могу войти…
    Помогите как решить это!

  12. Лицензия GPL позволяет вносить изменения в код, а также бесплатно распространять продукт, если копирайты и названия не изменяются.

    Итак, для того, чтобы сделать хоть какую то обработку ЧПУ в админке версии 1.5.4.
    В модуль admin\model\catalog\category.php вносятся некоторые изменения:
    1) Сразу же после объявления класса ModelCatalogCategory добавим прототип функции:

    private function generateSef($data, $prefix=’category_id=’, $inputname=’category_description’){
    $table = array( ‘А’ => ‘A’, ‘Б’ => ‘B’, ‘В’ => ‘V’, ‘Г’ => ‘G’, ‘Д’ => ‘D’, ‘Е’ => ‘E’, ‘Ё’ => ‘YO’, ‘Ж’ => ‘ZH’, ‘З’ => ‘Z’, ‘И’ => ‘I’, ‘Й’ => ‘J’, ‘К’ => ‘K’, ‘Л’ => ‘L’, ‘М’ => ‘M’, ‘Н’ => ‘N’, ‘О’ => ‘O’, ‘П’ => ‘P’, ‘Р’ => ‘R’, ‘С’ => ‘S’, ‘Т’ => ‘T’, ‘У’ => ‘U’, ‘Ф’ => ‘F’, ‘Х’ => ‘H’, ‘Ц’ => ‘C’, ‘Ч’ => ‘CH’, ‘Ш’ => ‘SH’, ‘Щ’ => ‘CSH’, ‘Ь’ => ”, ‘Ы’ => ‘Y’, ‘Ъ’ => ”, ‘Э’ => ‘E’, ‘Ю’ => ‘YU’, ‘Я’ => ‘YA’, ‘а’ => ‘a’, ‘б’ => ‘b’, ‘в’ => ‘v’, ‘г’ => ‘g’, ‘д’ => ‘d’, ‘е’ => ‘e’, ‘ё’ => ‘yo’, ‘ж’ => ‘zh’, ‘з’ => ‘z’, ‘и’ => ‘i’, ‘й’ => ‘j’, ‘к’ => ‘k’, ‘л’ => ‘l’, ‘м’ => ‘m’, ‘н’ => ‘n’, ‘о’ => ‘o’, ‘п’ => ‘p’, ‘р’ => ‘r’, ‘с’ => ‘s’, ‘т’ => ‘t’, ‘у’ => ‘u’, ‘ф’ => ‘f’, ‘х’ => ‘h’, ‘ц’ => ‘c’, ‘ч’ => ‘ch’, ‘ш’ => ‘sh’, ‘щ’ => ‘csh’, ‘ь’ => ”, ‘ы’ => ‘y’, ‘ъ’ => ”, ‘э’ => ‘e’, ‘ю’ => ‘yu’, ‘я’ => ‘ya’);
    if (empty($data['keyword'])){
    $tmp = $this->db->query(“SELECT a.language_id FROM ” . DB_PREFIX . “language AS a, ” . DB_PREFIX . “setting AS b WHERE (a.code = b.value AND b.key=’config_language’ AND b.value=’ru’) LIMIT 1″);
    if (empty($tmp->row['language_id'])) return false;
    $kvar = $data[$inputname][$tmp->row['language_id']]['name'];
    }
    else
    {
    $kvar = $data['keyword'];
    }
    $kvar = strtolower(str_replace(array_keys($table), array_values($table), $kvar));
    $kvar = preg_replace(“/\W+/”,”", $kvar);
    $tmp = $this->db->query(“SELECT keyword FROM ” . DB_PREFIX . “url_alias AS a WHERE (a.keyword LIKE ‘”.$this->db->escape($kvar).”%’)”);
    if (empty($tmp->rows)) return $kvar;
    if ($tmp->num_rows >0){
    for ($i=0; $inum_rows; $i++){
    if (strcasecmp($kvar,$tmp->rows[$i]['keyword'])===0){
    $out = $kvar.$i;
    unset($tmp->rows[$i]);
    $i++;
    } #if
    else
    break; # stop for
    } #for
    } #if
    return $out;
    }

    2) Далее нужно заставить редактор реагировать на изменения ЧПУ. Для этого в функции addCategory замените (лучше закомментить) строки:

    if ($data['keyword']) {
    $this->db->query(“INSERT INTO ” . DB_PREFIX . “url_alias SET query = ‘category_id=” . (int)$category_id . “‘, keyword = ‘” . $this->db->escape($data['keyword']) . “‘”);
    }

    на

    $kvar = $this->generateSef($data,’category_id=’, ‘category_description’);
    if ($kvar){
    $this->db->query(“INSERT INTO ” . DB_PREFIX . “url_alias SET query = ‘category_id=” . (int)$category_id . “‘, keyword = ‘” . $this->db->escape($kvar) . “‘”);
    }

    3) Повторить второй пункт для функции editCategory.

    Теперь для категорий генерируются новые ЧПУ, а также предотвращаются повторы, путем автоматического изменения ЧПУ.

    Тоже самое нужно сделать не только для категорий, но и для товаров, производителей и статей. Однако, придется разобраться с вышеописанной функцией, чтобы все заработало.

    Функция недостаточно оптимизирована, так как писалась после дедлайна. Однако, вполне работает.

  13. Кстати, измененные файлы скриптов должны быть в кодировке UTF8 без BOM

  14. а вы можите рассказать как настроить модуль Seo pro в последних версиях он сразу встроен подскажите только как его настроить ?

  15. Сделал всё как написано но ЧПУ по прежнему не отображаются

  16. Там ничего добавлять не надо в htaccess, все есть уже, только расширение текстовое убрать.

  17. Юлия #

    Здравствуйте!
    Подскажите пожалуйста, почему в конце постоянных ссылок добавляется какой-то мусор. http://eskabruha.co.il/ru/%D7%A1%D7%98_%D7%AA%D7%9B%D7%A9%D7%99%D7%98%D7%99%D7%9D_%D7%9E%D7%A4%D7%A0%D7%99%D7%A0%D7%99%D7%9D_S55#.U7o_cfl_t5I.

    или

    http://eskabruha.co.il/ru/%D7%AA%D7%9B%D7%A9%D7%99%D7%98%D7%99%D7%9D/%D7%A1%D7%98_%D7%AA%D7%9B%D7%A9%D7%99%D7%98%D7%99/%D7%A1%D7%98_%D7%AA%D7%9B%D7%A9%D7%99%D7%98%D7%99_%D7%9B%D7%A1%D7%A3_s1#.U7o_ivl_t5I

    #.U7o-Zfl_t5I и #.U7o_ivl_t5I – что это может быть и где рыть? Спасибо!

  18. НЕ работает!!! ошибка 500!

  19. У меня в файле .htaccess содержимое вообще отсутствует.
    Добавила в него те строки что вы указали, и меня выкинуло из админки. Показывает следующую ошибку. Вижу что уже задавали подобный вопрос, а ответ что то не вижу на него.
    В чем может быть причина ошибки?

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, sale@kievkamin.com.ua and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    Apache/2.2.15 (CentOS) Server at shop.kievkamin.com.ua Port 80

Оставить комментарий к статье Настраиваем ЧПУ в OpenCart