Перейти к содержанию
teknik2008

Избавляемся от дублей в OpenCart

Рекомендуемые сообщения

Избавляемся от дублей в OpenCart

На днях мне поставили задачу запустить в кратчайшие сроки интернет-магазин. Я начал искать подходящее решение среди готовых CMS и мой выбор пал на OpenCart (Версия 1.5.5.1). Данная CMS как и все не идеальна и поэтому я начал ковырять ее и изучать как там все устроено. 

Первое что я заметил это куча дублей при включенном ЧПУ. Проблема дублей товаров решается при помощи тега rel='canonical' а вот с категориями дело обстояло намного хуже. Каждая категория была доступна по +100500 URL. 
Например категория site.ru/category/podcategory будет доступна по следующим URL
site.ru/category/podcategory/a 
site.ru/category/podcategory/ab
site.ru/category/podcategory/abc
и так до бесконечности. 

Решается проблема не сложно.
Открываем файл catalog/controller/common/seo_url.php ищем 39 строку $this->request->get['route'] = 'error/not_found'; и после ее вставляем 
return $this->forward($this->request->get['route']);

Эта проблема возникала из-за того что URI /category/podcategory/abc разбивался на массив и при обходе его циклом, каждый элемент массива проверялся, при помощи запроса к БД, соответствует ли он категории или продукту, если нет то для get['route'] присваивалось значение error/not_found. 

В нашем случае при первой итерации цикла get['path'] будет присваиваться ID категории «category», при второй итерацииget['path'] будет перезаписываться на ID категории «podcategory» при третей итерации get['route'] присваивалось значение error/not_found потому что продукта abc не существует. 

Все выглядит хорошо, но в следующем блоке if-ов get['route'] перезаписывается на product/category. Это происходит из-за того что у нас есть get['path'] соответствующее ID категории, что позволяет зайти под условие и перезаписатьget['route'].

Данную проблему я решил тем что, возвращаю return $this->forward($this->request->get['route']); сразу же после того как get['route'] станет равным error/not_found не дожидаясь пока она перезапишется. 

Хоть проблема дублей товаров и решается тегом rel='canonical', но все же данное изменение позволяет избавиться от большинства и остается только несколько. 
Теперь товар не будет доступен по таким URL:
site.ru/category/podcategory123/tovar
site.ru/category/podcategory123456/tovar
site.ru/category123/podcategory/tovar
и так далее.
Избавляемся от дублей в OpenCart
На днях мне поставили задачу запустить в кратчайшие сроки интернет-магазин. Я начал искать подходящее решение среди готовых CMS и мой выбор пал на OpenCart (Версия 1.5.5.1). Данная CMS как и все не идеальна и поэтому я начал ковырять ее и изучать как там все устроено. 

Первое что я заметил это куча дублей при включенном ЧПУ. Проблема дублей товаров решается при помощи тега rel='canonical' а вот с категориями дело обстояло намного хуже. Каждая категория была доступна по +100500 URL. 
Например категория site.ru/category/podcategory будет доступна по следующим URL
site.ru/category/podcategory/a 
site.ru/category/podcategory/ab
site.ru/category/podcategory/abc
и так до бесконечности. 

Решается проблема не сложно.
Открываем файл catalog/controller/common/seo_url.php ищем 39 строку $this->request->get['route'] = 'error/not_found'; и после ее вставляем 
return $this->forward($this->request->get['route']);

 

Эта проблема возникала из-за того что URI /category/podcategory/abc разбивался на массив и при обходе его циклом, каждый элемент массива проверялся, при помощи запроса к БД, соответствует ли он категории или продукту, если нет то для get['route'] присваивалось значение error/not_found. 

В нашем случае при первой итерации цикла get['path'] будет присваиваться ID категории «category», при второй итерацииget['path'] будет перезаписываться на ID категории «podcategory» при третей итерации get['route'] присваивалось значение error/not_found потому что продукта abc не существует. 

Все выглядит хорошо, но в следующем блоке if-ов get['route'] перезаписывается на product/category. Это происходит из-за того что у нас есть get['path'] соответствующее ID категории, что позволяет зайти под условие и перезаписатьget['route'].

Данную проблему я решил тем что, возвращаю return $this->forward($this->request->get['route']); сразу же после того как get['route'] станет равным error/not_found не дожидаясь пока она перезапишется. 

Хоть проблема дублей товаров и решается тегом rel='canonical', но все же данное изменение позволяет избавиться от большинства и остается только несколько. 
Теперь товар не будет доступен по таким URL:
site.ru/category/podcategory123/tovar
site.ru/category/podcategory123456/tovar
site.ru/category123/podcategory/tovar
и так далее.

Материл взят с сайта http://habrahabr.ru, ссылка на статью http://habrahabr.ru/sandbox/65278/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А куда этот самый rel='canonical' вставлять нужно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Exploits
      Скачать/Купить дополнение


      Удаление дублей страниц без сеопро
      Модуль в xml формате убирает дубли страниц товара.
      Дубли это одна страница, которая доступна с более чем одного адреса. В Opencart все модули вывода товара генерируют "прямые ссылки" вида сайт/товар, хотя этот же товар привязан к категории и его правильная ссылка такая сайт/категория/товар.
      Мой модуль генерирует правильные (с учетом категории и иерархии категорий) ссылки товара.
      Модуль исправляет ссылки в таких местах:
      Модуль рекомендуемые Модуль последние Модуль лидеры продаж Модуль акции Список товаров производителя Блок рекомендуемые на странице товара Список товаров на странице всех акций (product/special) Список товаров на странице поиска Товары в списке сравнения Модуль не заменяет ни одного файла. Для работы требуется vqmod
      Протестирован на Opencart и Ocstore
      Версии 1541 - 1564
      В следующих версиях планирую сделать модуль который полностью избавит Opencart от дублей!!!
      Те кто приобретет модуль - все последующие версии будут бесплатно.
      Добавил Exploits Добавлено 18.06.2014 Категория Прочее Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 1.5.6.3 ocStore 1.5.5.1.2 OpenCart.Pro, ocShop  
    • От dantes01
      300.00 руб
      Скачать/Купить дополнение


      Уникальный шаблон магазина одежды
      Шаблон отлично подойдет для магазина одежды, обуви и других товаров.
      Инструкция по установке и настройки прилагается.
      Дополнительный функционал
      Телефон, режим работы, доставка указываются в настройках шаблона
      Совместимость
      На сегодняшний день шаблон совместим с osStore 1.5.5.1.1,
      Техническая поддержка
      Техническая поддержка покупателей шаблона осуществляется только через личные сообщения на данном форуме и доступна только пользователям, числящимся в списке покупателей шаблона.
      Тестировался IE8+, Opera, Chrome, FF 4+
      Демо шаблона
      Добавил dantes01 Добавлено 10.03.2014 Категория Платные шаблоны  
    • От xds
      835.00 руб
      Скачать/Купить дополнение


      [Распродажа] Уникальный шаблон OC Default 2.0
      Уникальный шаблон OC Default 2.0
      ................. Распродажа! 2500р. 835р.
      Демо здесь. За подробностями в ЛС
      Шаблон "OC Default 2.0" не имеет стилистической привязки к конкретному виду деятельности, т.е. по сути, является универсальным. В названии шаблона присутствует слово "Уникальный". И это не просто "словечко-замануха". Уникальность данного шаблона заключается в двух основных моментах:
      1. Сетка этого шаблона на 99% соответствует сетке дефолтного шаблона. (рад бы сказать что на 100, но, к сожалению, в дефолтном шаблоне присутствуют такие абсурдные и нелепые фрагменты, которые оставить без изменения было не возможно). А это значит, что шаблон полностью совместим практически со всеми модулями и дополнениями написанными для opencart/ocstore (большинство шаблонов этим похвастаться не могут)
      2. Для работы шаблона не требуется vQmod. А это значит что шаблон не оказывает никакого влияния на скорость генерации страниц вашего сайта. (большинство шаблонов этим так же похвастаться не могут)
      .
      .
      О дизайне шаблона
      Основная цель дизайна этого шаблона - создать у посетителя сайта ощущение простоты, но при этом основательности, надежности, возможно "премиальности". Не смотря на "простое" цветовое оформление, очень много внимания было уделено мелким деталям, не заметным с первого взгляда, но полностью формирующим общую картину. Легкий и ненавязчивый эффект объема создает ощущение материальности витрины магазина, что на подсознательном уровне формирует у клиента доверие к магазину.
      OC Default 2.0 выполнен в основном в светлых тонах. Это сделано для того что бы привлечь максимум внимания посетителя именно к товару, а не к элементам интерфейса сайта.
      Шаблон имеет достаточно четкую структуру с четким и понятным разделением на логические блоки, это не даст клиенту запутаться в интерфейсе магазина.
      Так же, для удобства покупателей, все значимые объекты на сайте обозначены контрастными понятными пиктограммами, а в верхнюю «плавающую» панель вынесены все необходимые покупателю инструменты.
      .
      .
      Дополнительный функционал
      1. Контакты в шапке сайта.
      2. Реквизиты/произвольная информация в футере.
      3. Скролл длинных названий товаров.
      4. Произвольное настраиваемое горизонтальное меню.
      .
      .
      Совместимость
      На сегодняшний день шаблон совместим с osStore 1.5.5.1.2, OpenCart 1.5.6.1, ocShop 1.5.6.4
      OC Default 2.0 можно без опаски устанавливать на уже работающие магазины. Он не изменяет системных файлов CMS и поэтому не может повлиять на работоспособность магазина.
      .
      .
      Лицензия
      ▶ Шаблон реализуется по принципу "1 покупатель – 1 владелец"
      ▶ Шаблон реализуется только через площадку opencartforum.ru
      ▶ Покупатель имеет право использовать приобретенный шаблон только для установки на собственные интернет-магазины.
      ▶ Запрещается передавать файлы шаблона третьим лицам, как на платной, так и на безвозмездной основе.
      ▶ Если покупатель будет уличен в нарушении правил описанных выше без санкционирования этих действий автором шаблона – он автоматически лишается технической поддержки.
      .
      .
      Техническая поддержка
      Техническая поддержка покупателей шаблона осуществляется только через личные сообщения на данном форуме и доступна только пользователям, числящимся в списке покупателей шаблона. Без исключений! Обратите внимание! Прежде чем обращаться ко мне за тех поддержкой, убедитесь в том, что в разделе FAQ нет ответа на ваш вопрос. Если вы обращаетесь ко мне с просьбой разобраться в проблеме то, для экономии моего вашего времени, сопровождайте свое сообщение следующей информацией: 1) адрес сайта, 2) доступ в админ-панель, 3) доступ на FTP-сервер
      .
      .
      Добавил xds Добавлено 05.03.2014 Категория Платные шаблоны Системные требования Сайт разработчика Старая цена 2500 Метод активации Без активации Ioncube Loader Нет OpenCart ocStore OpenCart.Pro, ocShop  
    • От ArtemPitov
      300.00 руб
      Скачать/Купить дополнение


      {AP} Destroy IMG | Полное удаления изображения из сервера
      {AP} Destroy IMG
      Модуль позволяет удалять изображения с сервера.
      Удаляются связи в товарах, фото на сервере, кеш изображения
      Установка
      Простая установка через стандартный загрузчик Opencart. Не заменяет системные файлы.
      Если при установке появляется сообщение о настройке FTP поставке "фикс"
      http://www.opencart....ension_id=18892
      Версия
      Модуль писался под ocStore 2.1.0.2.1 и дефолтную тему оформления.
      Будет работать на дефолтной или близкой к ней теме. Адаптация под Вашу тему платная.
      Лицензия
      Одна лицензия (покупка) = 1 домен
      Добавил ArtemPitov Добавлено 26.08.2016 Категория Прочее Системные требования Метод активации Ioncube Loader OpenCart ocStore OpenCart.Pro, ocShop  
    • От MikhailGrigor
      При проверки обнаружены дубли title, как их исправить ума не приложу, вот страницы с дублирующими TITLE:
      https://kredo-shop.com.ua/aromaterapia/  http://kredo-shop.com.ua/aromaterapia/?page=2  https://kredo-shop.com.ua/aromaterapia/?page=3  https://kredo-shop.com.ua/aromaterapia/?page=4   
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×