Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

SEO-адреса

По умолчанию адреса выглядят как index.php?route=product/product&product_id=42. SEO-адрес — короткий читаемый адрес той же страницы, например /en-gb/ceramic-mug. Его проще читать людям и поисковым системам. Сама страница и её контроллер не меняются — меняется только адрес.

Включение

Нужны три шага.

  1. В панели: System → Settings, изменить магазин, вкладка Server, включить «Use SEO URLs».
  2. Научить веб-сервер передавать неизвестные адреса в index.php.
  3. Задать ключевые слова товарам, категориям и страницам.

Правила веб-сервера

Для Apache правила уже есть в поставке — переименуйте файл в корне сайта:

mv .htaccess.txt .htaccess

Для Nginx добавьте правила в настройки сайта:

location / {
    try_files $uri $uri/ @opencart;
}
 
location @opencart {
    rewrite ^/(.+)$ /index.php?_route_=$1 last;
}

Адрес, который не является настоящим файлом, передаётся в OpenCart в параметре _route_, и движок находит страницу по ключевым словам.

Ключевые слова товаров

Откройте товар в Catalog → Products, вкладка SEO, и введите ключевое слово для каждого магазина и языка: ceramic-mug. Такая же вкладка есть у категорий, производителей и информационных страниц.

Откройте витрину — ссылки на товар теперь ведут на короткий адрес, а старый адрес с product_id=42 по-прежнему работает.

Где хранятся ключевые слова

Все ключевые слова лежат в таблице oc_seo_url. Каждая строка связывает ключевое слово с парой «ключ и значение»:

keyvaluekeyword
product_id42ceramic-mug
path20desktops
routeinformation/hellohello

Весь список виден в Design → SEO URL.

Ключевое слово для своей страницы

В Design → SEO URL добавьте строку: ключ route, значение — маршрут вашего контроллера, например information/hello, ключевое слово hello, ваш магазин и язык.

Страница откроется по адресу вида http://shop.test/en-gb/hello. Как именно собираются части адреса — с языком в начале или без него — зависит от выпуска.

Ссылки в коде

В коде ничего не меняется. $this->url->link() сам возвращает короткий адрес, если SEO-адреса включены и ключевое слово задано:

$href = $this->url->link('product/product', 'language=' . $this->config->get('config_language') . '&product_id=42');

В $href окажется короткий адрес товара, а для товара без ключевого слова — обычный длинный.

Частая ошибка

Ссылку пишут в шаблоне вручную: <a href="index.php?route=product/product&product_id=42">. Она работает, но остаётся длинной, и поисковые системы видят два адреса одной страницы. Каждую ссылку стройте в контроллере через $this->url->link() и передавайте в шаблон переменной.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.