• Объявления

    • dinox

      Закрытый раздел разработчиков   21.08.2017

      У нас на форуме существует закрытый раздел для разработчиков в котором мы обсуждаем нюансы работы на нашем форуме, в каталоге дополнений и другие моменты которые интересны в большинстве случаев только разработчикам. На данный момент существует лишь 2 условия для попадания:
      1. Наличие промодерированного дополнения в нашем каталоге  2. Отсуствие варезной деятельности 
      Если эти правила выполнены, пишите запрос @ArtemPitov на попадание в раздел разработчиков
teknik2008

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

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

teknik2008    1

Избавляемся от дублей в 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/

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


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

ilia    1

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

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От romankovbasa
      Здравствуйте. В распоряжение достался сайт с бесплатной версии Seo pack.
       
      Много вреда от него - дубли страниц, дубли от двух языков, в базе данных беспорядок, бывает в url страшные названия вылазят.
       
      Как его искоренить из сайта или решить эти проблемы установкой seo pro с SeoGen, например.
       
      Возможно кто-то сталкивался с подобной проблемой и поделится решением. Заранее благодарен!
       
      Cайт на ocStore 1.5.5.1.1
    • От limpopo113
      Сайт работает на протяжении трех лет, но все это время, с ним были муторные проблемы, которые требует тщательного анализа, от опытного человека. Нужно удалить ненужные плагины, удаление через админ-панель приводит к обвалу сайта. Почта - limpopo113@gmail.com Если интересна такого рода работа, то пишите.
    • От Chepurnov12
      Всем привет!
      Столкнулся с такой проблемой. 
      Сделал магазин, наполнил товарами, поставил модуль "с этим товаром посмотрите также"
      Вебмастер начал ругаться на дубли 
      и начала происходить неведомая Х...
       
      стали появлятся такие страниц 
      Сайт/Категория/Товар
      Сайт/Товар
      Соответственно яндекс их считал как дубли. Почитал форум, пришел к решению надо оказывается установить сео про для урлов, поставил, в настройках выбрал отображать урлы с категориями.
      Теперь сайт/товар отредиректил (302) на сайт/категория/товар
      и показалось мне что проблема вроде как решена. Однако захожу сегодня в вебмастер и он с**а опять жалуется на дубли 
      Что нужно сделать?
      Помогите)))
       
    • От Temkaaaaa
      Как убрать дубли на сайте вот ссылка например дублей - https://sattv-shop.net/resivery/resivery/resivery/resivery/resivery/resivery/resivery/resivery/sputnikovye-resivery
    • От xds


      Просмотреть файл [Распродажа] Уникальный шаблон 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 Категория Платные шаблоны Работает на OpenCart Системные требования Работает на ocStore Сайт разработчика Работает на OpenCart.Pro, ocShop Старая цена Метод активации Ioncube Loader  
  • Последние посетители   0 пользователей онлайн

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