Автоматическая генерация SEO URL чпу в Opencart 2

Дата: 01.03.2018 Просмотры: 9918 Комментарии: 13

Часто занимаюсь оптимизацией opencart, ocstore и очень часто встречаю уже работающие магазины у которых url заполнены неправильно.

Например, в одном урле может встречаться латиница, кириллица, даже спецсимволы и все это счастье в разных регистрах. Смотрится ужасно.

И все бы ничего, можно забить, но поисковые системы не всегда могут воспринять положительно такие урлы. Да и такая размещенная безанкорная ссылка на ваш ресурс, скажем, где-то на форуме будет смотреться не очень.

В связи с этим был сделан ocmod после установки которого в товарах и категориях ЧПУ генерируется автоматически.

Генерация seo url в opencart будет происходить налету.

Генерация SEO URL в Opencart

Скачать - 2.33 KB

UPD:

Итак, прошел уже почти год со дня публикации этого поста и пора бы его обновить

Выше по ссылке лежит ocmod который в opencart генерирует seo url автоматически "налету" во время создания товара, категории или статьи. А как же быть если уже созданы тысячи товаров и вы не заполнили поле SEO-URL? Неужели придется снова открывать каждый товар и пересохранять для генерации урла? Конечно же, нет!

В таких случаях я использую в Ocstore и Opencart SEO-URL генератор. Этот скрипт идеально подходит для таких вещей, когда уже заполнена база данных товарами, категориями и информационными страницами. Это не модуль и не дополнение, а простой PHP скрипт, способный генерировать все SEO урлы для ваших товаров, категорий и статей, если они отсутствуют.

Знаю, что есть специальные модули для создания seo url в opencart 2, но я решил это более простым и эффективным способом - не нужно устанавливать расширение, если вы можете заполнить URL-псевдоним простым запуском скрипта. После завершения работы его можно удалить или переименовать чтобы "доброжелатели" не смогли найти к нему путь и запустить без вашего ведома. Впрочем, не страшно) Ранее созданные seo url не перезаписываются!

Как это работает?

Сценарий будет обрабатывать все ваши товары, пытаясь найти совпадение в таблице URL-алиасов. Если совпадение по id найдено, никаких действий не будет выполнено. В противном случае скрипт преобразует наименование товара в латиницу, вырежет из него спецсимволы и запишет в поле URL-адрес, ориентированный на SEO.

Как массово генерировать seo url?

Скачайте и загрузите файл url_alias.php в корень вашего сайта (это там где лежат папки admin и catalog)
Запустите, перейдя по ссылке: yourdomain.com/url_alias.php
Далее следуйте по инструкции, скрипт сам подскажет что делать.

  • Для удобства мы запаковали файл ocmod.zip так что можете его смело загружать через менеджер дополнений.
  • Работает на всех версиях и сборках Opencart и OcStore!

Массовая генерация SEO URL в Opencart

Скачать - 2.71 KB

Комментарии

Наталья Касило
Наталья Касило 05.02.2019

Здравствуйте, подскажите - для категорий создали URL, а для товаров - нет. Пишет -Ошибка в типе содержимого Страница, которую вы пытаетесь просмотреть, не может быть показана, так как она использует неверную или неподдерживаемую форму компрессии. Пожалуйста, свяжитесь с владельцами веб-сайта и проинформируйте их об этой проблеме. Подскажите , что делать?

Наталья Касило
Наталья Касило 05.02.2019

Все получилось! Спасибо, класс!!!

Ответ Админ
Ок.
Денис Закиров
Денис Закиров 22.02.2019

Здравствуйте. Все работает, но проблема заключается в том, что на конце урла герерируется ID товара или категории... как это убрать?

Ответ Админ

Замените 62 строку

$url = ($str . '-' . rand(10,99));

на

$url = $str;
Катерина Порбело
Катерина Порбело 02.03.2019

Спасибо! Отличное решение!

Андрей Щукин
Андрей Щукин 14.03.2019

Запускаю Ваш чудо файл, жму Сгенерировать SEO-URL для товаров или Сгенерировать SEO-URL для категорий, и получаю вот такую ошибку: Fatal error: Uncaught Exception: Error: Table 'opencart.oc_url_alias' doesn't exist
Error No: 1146
SELECT * FROM oc_url_alias WHERE query = 'product_id=28' in /var/www/admin/www/system/library/db/mysqli.php:40 Stack trace: #0 /var/www/admin/www/system/library/db.php(45): DB\MySQLi->query('SELECT * FROM o...') #1 /var/www/admin/www/url_alias.php(110): DB->query('SELECT * FROM o...') #2 {main} thrown in /var/www/admin/www/system/library/db/mysqli.php on line 40 В чем может быть проблема?

Ответ Админ
Это скрипт для Opencart 2. Вы запускаете на тройке.
Виталий Сулейманов
Виталий Сулейманов 30.03.2019

А как быть если товаров очень много и выдает Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 79 bytes) in /system/library/db/mysqli.php on line 24 Как доработать скрипт, чтобы он брал по частям, а не все товары сразу?

Ответ Админ
Просто запустите его заново. Или на CRON повесьте. У меня на клиентских сайтах висит на кроне ежедневный запуск, клиенты вообще не парятся с заполнением url.
Maxim denfsi
Maxim denfsi 06.09.2019

Я не мог понять почему вроде как в рабочем скрипте, так долго все выполняется и апач не дожидается выполнения. Оказывается там sleep(1). Представьте, если у вас там 10-20к товаров, это надо 5 часов ждать просто так. Я бы добавил доп запрос на существование такого алиаса и просто прибавлял к копиям уже цифры. Рандомные цифры это конечно решение, но не красиво.

Иван
Иван 04.11.2019

Здравствуйте! А для тройки есть такой скрипт? Уж больно хорош )

Eugen Weltmeister
Eugen Weltmeister 19.02.2020

Здравствуйте. При запуске генерации возникает такая надпись и УРЛ остаётся прежним: "В товаре с id=50. URL уже существует (перезапись не производится)." Как это исправить?

Ответ Админ

Скрипт не перезаписывает существующие url. Только создает.

yarik nashivan
yarik nashivan 15.10.2020

Сгенерировался, написал что успешно, но ничего не поменялось, в настройках есть флажок чпу и htaccess менял((

Ответ Админ


Konstantin Mlechko
Konstantin Mlechko 28.10.2020

Здравствуйте Там где в названии товара кавычки, вместо них написал quot И теперь куча товаров с этими quot причем естественно 2 раза в адресе Как теперь быть, подскажите пожалуйста. Я так понимаю нужно как-то удалить теперь все ЧПУ, внести изменения в код вашего скрипта, чтобы он не ставил quot, и заново запустить

Ответ Админ

Добавили кавычки в исключения.

Алексан
Алексан 29.10.2020

Для OpenCart 3 стоит ли пробовать? За модуль спасибо все работает!

Ответ Админ

Не стоит.

Иван Андреевич
Иван Андреевич 29.10.2020

Для OpenCart 3 точно не работает можете не пробовать

Ответ Админ

Если есть минимальные знание SQL, то можно подправить запрос. Точно не помню, давно не смотрел этот скрипт, но кажется там только название таблицы изменить с alias на seo_url и будет работать с одним языком. Точно не помню некогда смотреть.

Написать комментарий


Популярные предложения