Скачать / Купить дополнение
Устранение дублей страниц товаров и категорий
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 отдельно.
Добавил
Yesvik
Добавлено
06.04.2011
Категория
Прочее