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

[Поддержка] Устранение дублей страниц товаров и категорий

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

Устранение дублей страниц товаров и категорий


Устранение дублей страниц товаров и категорий


URL товаров и категорий всегда формируется с учетом иерархии категорий.

Для этого в разделе "Связи" товара сделаны изменения позволяющие указать одну категорию товара, относительно которой и будет строиться URL, и список категорий в которых этот товар будет отображаться. (смотри скриншот)

URL товаров и категорий проверяются, запросы с неправильной иерархией (дублирующие основной URL страницы) переадресовываются со статусом 301 Moved Permanently на URL сформированный с учетом заданной иерархии категорий.

Если URL построен с неправильной иерархией - URL будет исправлен, например, у товара URL /desktops/mac/imac/, а пришел запрос /desktops/imac/, /mac/imac/, /mac/desktops/imac/ или просто /imac/ то URL будет исправлен.

Но если в URL будут категории которых вообще нет, например /desk/tops/mac/imac/, или не правильно указан товар /desktops/mac/ciam/ будет выведена страница ошибки с текстом "Запрашиваемая страница не найдена!" и статусом 404 Not Found.

Такое-же поведение с категориями...

Если для построения ЧПУ не хватает какого-то псевдонима - URL строится GET параметрами, при этом параметр path, который отвечает за иерархию категорий, всё равно контролируется и формируется с учетом заданной иерархии категорий.

Алгоритмы формирования и контроля URL используют кеширование, так что в большинстве случаев нагрузка на базу даже ниже чем у штатного алгоритма формирования ЧПУ. Даже при холодном старте...

09 апреля 2011 перезалил архив.

Добавлен контроль ссылок со слешем и без в конце URL, теперь /desktop/mac/imac/ и /desktop/mac/imac расцениваются как разные.

6 мая 2011 добавлена возможность выбора формата построения URL для страниц товара:

/category/subcategory/product

или

/product

При выборе построения URL /product хлебные корошки и меню формируются с учетом полного пути к товару (с категориями/подкатегориями)

Изменения в файлах ocStore версии 0.2.0

Файл: admin/controller/setting/setting.php

===================================================================

находим

'config_seo_url_auto','config_seo_url_replace',

заменяем на

'config_seo_url_include_path','config_seo_url_postfix',

Файл: admin/language/russian/setting/setting.php

===================================================================

находим

$_['entry_seo_url']           = 'Использование SEO-url:<span class="help">Необходимо настройть файл .htaccess в корневом каталоге магазина</span>';$_['entry_seo_url_auto'] 	  = 'Автоподстановка окончаний SEO-url:<span class="help">Добавляет / в конце УРЛ</span>';$_['entry_seo_url_replace']   = 'Заменять пробелы на "_" в SEO-url:';

заменяем на

$_['entry_seo_url']           = 'Использовать SEO-url:<span class="help">Необходимо настройть .htaccess в корневом каталоге магазина</span>';$_['entry_seo_url_include_path'] = 'SEO-url товаров с категориями:<span class="help">/category/subcategory/product</span>';$_['entry_seo_url_postfix']   = 'Окончание ЧПУ:<span class="help">Например / или .html</span>';

Файл: admin/view/template/setting/setting.tpl

===================================================================

находим

<tr>	<td><?php echo $entry_seo_url_auto; ?></td>	<td><?php if ($config_seo_url_auto) { ?>		<input type="radio" name="config_seo_url_auto" value="1" checked="checked" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_auto" value="0" />		<?php echo $text_no; ?>		<?php } else { ?>		<input type="radio" name="config_seo_url_auto" value="1" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_auto" value="0" checked="checked" />		<?php echo $text_no; ?>		<?php } ?></td></tr>

заменяем на

<tr>	<td><?php echo $entry_seo_url_include_path; ?></td>	<td><?php if ($config_seo_url_include_path) { ?>		<input type="radio" name="config_seo_url_include_path" value="1" checked="checked" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_include_path" value="0" />		<?php echo $text_no; ?>		<?php } else { ?>		<input type="radio" name="config_seo_url_include_path" value="1" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_include_path" value="0" checked="checked" />		<?php echo $text_no; ?>		<?php } ?></td></tr>

находим

<tr>	<td><?php echo $entry_seo_url_replace; ?></td>	<td><?php if ($config_seo_url_replace) { ?>		<input type="radio" name="config_seo_url_replace" value="1" checked="checked" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_replace" value="0" />		<?php echo $text_no; ?>		<?php } else { ?>		<input type="radio" name="config_seo_url_replace" value="1" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_replace" value="0" checked="checked" />		<?php echo $text_no; ?>		<?php } ?></td></tr>

заменяем на

<tr>	<td><?php echo $entry_seo_url_postfix; ?></td>	<td><input type="text" name="config_seo_url_postfix" value="<?php echo $config_seo_url_postfix; ?>" size="3" /></td></tr>

Файл: catalog/controller/common/seo_url.php

заменям полностью

Файл: catalog/model/tool/seo_url.php

заменям полностью

P.S. SeoPack решил удалить потому что многих пугает большое количество изменённых файлов, не разбираясь что в основной массе файлов изменения были связаны с заменой & на & для валидации по XHTML стандарту.

Позже напишу описание и выложу SEO URL Manager отдельно.


 

  • +1 6

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


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

Имя файла: Устранение дублей страниц товаров и категорий

Владелец файла: Yesvik

Файл размещен: 06 апр. 2011

Категория файла: Прочее

URL товаров и категорий всегда формируется с учетом иерархии категорий.

Для этого в разделе "Связи" товара сделаны изменения позволяющие указать одну категорию товара, относительно которой и будет строиться URL, и список категорий в которых этот товар будет отображаться.(смотри скриншот)

post-6876-0-96815900-1302046449_thumb.png

URL товаров и категорий проверяются, запросы с неправильной иерархией (дублирующие основной URL страницы) переадресовываются со статусом 301 Moved Permanently на URL сформированный с учетом заданной иерархии категорий.

Если URL построен с неправильной иерархией - URL будет исправлен, например, у товара URL /desktops/mac/imac/, а пришел запрос /desktops/imac/, /mac/imac/, /mac/desktops/imac/ или просто /imac/ то URL будет исправлен.

Но если в URL будут категории которых вообще нет, например /desk/tops/mac/imac/, или не правильно указан товар /desktops/mac/ciam/ будет выведена страница ошибки с текстом "Запрашиваемая страница не найдена!" и статусом 404 Not Found.

Такое-же поведение с категориями...

Если для построения ЧПУ не хватает какого-то псевдонима - URL строится GET параметрами, при этом параметр path, который отвечает за иерархию категорий, всё равно контролируется и формируется с учетом заданной иерархии категорий.

Алгоритмы формирования и контроля URL используют кеширование, так что в большинстве случаев нагрузка на базу даже ниже чем у штатного алгоритма формирования ЧПУ. Даже при холодном старте...

Нажмите сюда, чтобы скачать этот файл

У Вас файлы в архиве уже все переделаны. Все перекопировал, Сделал запросы в БД, в товарах появились title и h1 Сверху в админке выскакивает Notice: Undefined index: title in /home/u199843/protherm-rus.ru/www/admin/model/catalog/product.php on line 425Notice: Undefined index: h1 in /home/u199843/protherm-rus.ru/www/admin/model/catalog/product.php on line 426. Товары не вводятся, а при изменении старые пропадают. Что сделать подскажите. Спасибо.

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


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

У Вас файлы в архиве уже все переделаны.

В архиве файлы для ocStore 0.1.9, как устанавливать на предыдущие версии описано в readme.txt

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


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

поставил 0.1.9 и могу сказать что доработка Yesvik мега крутая штука из любого места урл подставляется согласно запланированному как и в описании к модулю

вот теперь думаю ждать 0.2.0 и обновляться с 0.1.7 или делать это сейчас что может повлечь за собой уже смену существующих урлов и смену урлов в индексе и очередные ожидания переиндексации

Yesvik а 301 редиректы где и каким образом прописаны ? возможно мне удастся временно обойтись полумерами в виде этих редиректов и дождаться 2.0 чтобы 100 раз не обновляться

еще раз я в восторге

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


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

поставил 0.1.9 и могу сказать что доработка Yesvik мега крутая штука из любого места урл подставляется согласно запланированному как и в описании к модулю

вот теперь думаю ждать 0.2.0 и обновляться с 0.1.7 или делать это сейчас что может повлечь за собой уже смену существующих урлов и смену урлов в индексе и очередные ожидания переиндексации

Yesvik а 301 редиректы где и каким образом прописаны ? возможно мне удастся временно обойтись полумерами в виде этих редиректов и дождаться 2.0 чтобы 100 раз не обновляться

еще раз я в восторге

А чего ты переживаеш за индексацию?

Если ты не измениш псевдонимы у товаров и у категорий, то все старые урлы будут переадресованы на новые со статусом 301. Я прекрасно понимаю как болезненна смена URL - потому и сделал редиректы 301.

Даже если товар был в одной категории и ПС заглотили ссылку, в дальнейшем можно спокойно перенести товар в другую категорию и на старые ссылки сработает редирект 301... главное что-бы псевдонимы категорий и товаров не менялись.

Даже если ты не использовал псевдонимы и у тебя ссылки вида /index.php?route=product/product&path=25_28&product_id=42 - есть два варианта:

1. включить SEO но не прописывать псевдонимы и тогда будет работать контроль ссылок с редиректами на URL в котором path будет всегда один и тот-же;

2. включить SEO и прописать псевдонимы - тогда тоже будет работать контроль, но редиректы будут на ЧПУ;

На любой из вариантов поисковики отреагируют лояльно.

Проверка правильности URL использует алгоритм формирования ЧПУ, так что отдельно редиректы выдернуть не получится...

Ну и в крайнем случае, можно не обновлять магазин полностью, а прикрутить только новый алгоритм формирования ЧПУ. В readme.txt расписано как это сделать.

  • +1 1

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


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

Спасибо Yesvik

наверно так и поступлю докручу к 0.1.7 как описано в реадми и буду ждать 0.2.0

посмотрел на 0.1.9 и плюс Ваш модуль уже получается очень даже оптимизированный движок

еще бы разобраться как H1 название товара вверх страницы поднять и можно спать спокойно :-)

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


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

Спасибо! Всё работает. Всё прекрасно. версия 0.1.9

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


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

Имя файла: Устранение дублей страниц товаров и категорий

Владелец файла: Yesvik

Файл размещен: 06 апр. 2011

Категория файла: Прочее

URL товаров и категорий всегда формируется с учетом иерархии категорий.

Для этого в разделе "Связи" товара сделаны изменения позволяющие указать одну категорию товара, относительно которой и будет строиться URL, и список категорий в которых этот товар будет отображаться.(смотри скриншот)

post-6876-0-96815900-1302046449_thumb.png

URL товаров и категорий проверяются, запросы с неправильной иерархией (дублирующие основной URL страницы) переадресовываются со статусом 301 Moved Permanently на URL сформированный с учетом заданной иерархии категорий.

Если URL построен с неправильной иерархией - URL будет исправлен, например, у товара URL /desktops/mac/imac/, а пришел запрос /desktops/imac/, /mac/imac/, /mac/desktops/imac/ или просто /imac/ то URL будет исправлен.

Но если в URL будут категории которых вообще нет, например /desk/tops/mac/imac/, или не правильно указан товар /desktops/mac/ciam/ будет выведена страница ошибки с текстом "Запрашиваемая страница не найдена!" и статусом 404 Not Found.

Такое-же поведение с категориями...

Если для построения ЧПУ не хватает какого-то псевдонима - URL строится GET параметрами, при этом параметр path, который отвечает за иерархию категорий, всё равно контролируется и формируется с учетом заданной иерархии категорий.

Алгоритмы формирования и контроля URL используют кеширование, так что в большинстве случаев нагрузка на базу даже ниже чем у штатного алгоритма формирования ЧПУ. Даже при холодном старте...

Нажмите сюда, чтобы скачать этот файл

Сделал как написано в readme для старых версии в админке вместо категории появилось Notice: Undefined variable: entry_main_category in /home/u199252/мой сайт/www/admin/view/template/catalog/product_form.tpl on line 216 Подскажите пожалуйста в чем проблема. Версия 0.1.6

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


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

Сделал как написано в readme для старых версии в админке вместо категории появилось Notice: Undefined variable: entry_main_category in /home/u199252/мой сайт/www/admin/view/template/catalog/product_form.tpl on line 216 Подскажите пожалуйста в чем проблема. Версия 0.1.6

Все получилось OK . Спасибо большое Yesvik

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


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

Спешу всех обрадовать. В следующую версию ocStore 0.1.10 войдет патч Yesvik по поводу уникальных SEO-URL уже на постоянной основе. :)

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


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

Спасибо, отличный мод, сразу поставил ocStore и сразу накатил этот под. Только у меня вопрос, возможно не связанный с данным модом: если у меня в разных разделах используются одинаковые "seo alias", например: www.shop/lanos/motor/tovar и www.shop/lada/motor/tovar , то при заходе на www.shop/lada/motor перекидывает на shop/lanos/motor (с другими подкатегориями также), это из-за мода или нет, просто я магазин поставил сразу с модом, возможности проверить нету.

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


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

Спасибо, отличный мод, сразу поставил ocStore и сразу накатил этот под. Только у меня вопрос, возможно не связанный с данным модом: если у меня в разных разделах используются одинаковые "seo alias", например: www.shop/lanos/motor/tovar и www.shop/lada/motor/tovar , то при заходе на www.shop/lada/motor перекидывает на shop/lanos/motor (с другими подкатегориями также), это из-за мода или нет, просто я магазин поставил сразу с модом, возможности проверить нету.

алиасы обязательно должны быть разными

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


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

Нашел баг: если в алиасах использовать подчеркивание то страница становится не найдена. как только подчеркивания меняешь на пробелы все отлично работает и модуль сам заменяет пробелы на подчеркивания

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


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

Если в элиасах есть подчеркивания - снимите галку на счет замены пробелов на подчеркивания. Это не ошибка - это особенность.

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


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

Нашел баг: если в алиасах использовать подчеркивание то страница становится не найдена. как только подчеркивания меняешь на пробелы все отлично работает и модуль сам заменяет пробелы на подчеркивания

Да, это остаточные явления борьбы с пробелами в алиасах, до которых руки ещё не добрались.

Получается следующая засада:

Если в алиасе есть и пробелы и подчерки, и в настройках включено "Заменять пробелы на "_" в SEO-url", то при формировании ЧПУ пробелы заменяются на подчерки... А при обратном преобразовании даже те подчерки которые изначально были в алиасе заменяются на пробелы. В итоге - ничего не работает.

По хорошему надо поставить контроль чтобы всякие глупости в алиасы не писали, а не корректировать алиасы при формировании ЧПУ.

Старайся придерживаться таких правил:

В алиасах не должно быть пробелов, а вместо подчерка ( _ ), с точки зрения SEO, желательно использовать минус ( - ).

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


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

Подскажите, стоит ваш модуль, если изменить seo alias для категории, в которой уже есть товары, то товары из этой категории пропадают, нужно заново пересохранять товар, т.е. нажать "изменить"-"готово" и только тогда seo-url перезаписывается правильно. Это связано с вашим модулем или это кривость движка opencart? и как это можно изменить? И еще воспрос, почему вы считаете что "-" лучше , чем "_". Спасибо.

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


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

Подскажите, стоит ваш модуль, если изменить seo alias для категории, в которой уже есть товары, то товары из этой категории пропадают, нужно заново пересохранять товар, т.е. нажать "изменить"-"готово" и только тогда seo-url перезаписывается правильно. Это связано с вашим модулем или это кривость движка opencart? и как это можно изменить? И еще воспрос, почему вы считаете что "-" лучше , чем "_". Спасибо.

Опиши точнее что значит "пропадают товары"?

Какая версия OpenCart?

Как правило "_" используется в качестве разделителя слов.

Некоторые поисковики воспринимают слова разделённые "_" как одно слово.

При использовании в качестве разделителя "-" все поисковики воспринимают слова раздельно.

Учитывая что вхождение ключевика в URL имеет значительный вес при ранжировании, а точное совпадение с поисковым запросом более релевантно - я бы не стал пренебрегать таким советом даже с учетом того что 100% подтверждения, описанному поведению поисковиков, нет.

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


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

Yesvik, нужна твоя помощь с устранением глюка.

Ситуация:

1. Включаем SEO-URL с твоими правками.

2. В одной из категеорий (с большим количеством товара) оставляем элиас пустым.

3. Идем в эту категорию и обнаруживаем отсуствие листания по страницам.

Поправь, плиз и скинь мне изменения.

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


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

Ситуация:

1. Включаем SEO-URL с твоими правками.

2. В одной из категеорий (с большим количеством товара) оставляем элиас пустым.

3. Идем в эту категорию и обнаруживаем отсуствие листания по страницам.

А какие ссылки формируются в постраничной навигации?

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


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

Ошибку нашел, исправил, но у меня уже почти готовы новые заморочки с ЧПУ... Произвольные окончания, ЧПУ на ссылки типа route=account/account, route=checkout/cart и т.д.

Выкладывать исправления или новый вариант?

  • +1 1

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


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

Ошибку нашел, исправил, но у меня уже почти готовы новые заморочки с ЧПУ... Произвольные окончания, ЧПУ на ссылки типа route=account/account, route=checkout/cart и т.д.

Выкладывать исправления или новый вариант?

Вау других слов нет скоро ПС будут содрогаться от Вашего имени

но если не сложно можно в двух словах зачем корзину индексировать ? даже если страница попадет в основной индекс и пользователь перейдет на нее из ПС он растеряется и его поведение будет практически таким же как и при попадании на 404

я сейчас наблюдаю глубину 1 при попадании на 404 так как уже около месяца в ПС сидят страницы от старого движка

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


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

Вау других слов нет скоро ПС будут содрогаться от Вашего имени

но если не сложно можно в двух словах зачем корзину индексировать ? даже если страница попадет в основной индекс и пользователь перейдет на нее из ПС он растеряется и его поведение будет практически таким же как и при попадании на 404

я сейчас наблюдаю глубину 1 при попадании на 404 так как уже около месяца в ПС сидят страницы от старого движка

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

Я для тестов автоматом собрал и затолкал в модуль кучу пар запрос->псевдоним... А вообще каждый сам будет добавлять/удалять пары запрос->псевдоним так как сочтёт нужным.

  • +1 2

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


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

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

Я для тестов автоматом собрал и затолкал в модуль кучу пар запрос->псевдоним... А вообще каждый сам будет добавлять/удалять пары запрос->псевдоним так как сочтёт нужным.

Очень интересная вещь. :)

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


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

Ошибку нашел, исправил, но у меня уже почти готовы новые заморочки с ЧПУ... Произвольные окончания, ЧПУ на ссылки типа route=account/account, route=checkout/cart и т.д.

Выкладывать исправления или новый вариант?

Ну, лучше и то и другое. :)

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


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

Ну, лучше и то и другое. :)

У меня небольшая загвоздка...

В новом варианте seo_url я убрал в настройках 2 пункта. Замена пробела на подчерк и добавление слеша в конце ЧПУ. Добавил поле для ввода окончания ЧПУ. Это поле можно оставить пустым или указать любое желаемое окончание ЧПУ, например, / или .html и т.д. Но остаётся открытым вопрос с заменой пробелов на подчерк... Заменять на лету не совсем корректно и работает только при соблюдении определённых условностей. Если я добавлю процедурку которая по нажатию кнопочки пройдётся по всем псевдонимам и приведёт их в порядок (заменит пробелы на минус) - это будет нормальным решением? Это решение временное, пока не допишу формирование псевдонимов при создании/редактировании категорий/товаров/производителей/статей с соответствующим контролем правильности написания псевдонима при ручном вводе.

Пошел писать исправлялку, но жду пожелания или другие варианты решений этой загвоздки.

  • +1 1

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


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

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

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

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

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

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

Войти

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

Войти

  • Последние посетители   0 пользователей онлайн

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.