Решил поставленную задачу, возможно не самым правильным и оптимальным способом. Но работает - и поставленная задача выполнена!
Опишу способ решения – возможно кому-то пригодится.
Задача – в целях расширения семантического ядра, необходимо разместить товары интернет магазина в различных категориях - разделах сайта созданных под запросы пользователей. К примеру товар
«Печь-камин La Nordica Candy» находиться в категории «
Печи-камины» - необходимо определить данный товар в вновь созданные категории-разделы сайта «
Чугунные печи», «
Печи для дома», «
Печи для дачи».
Проблема
Просто разместить товар в разных категориях - возникнут дубли, один и тот же контент по разным ссылкам, что отрицательно скажется на поисковой оптимизации.
Отключить в настройках компонента каталога вывод разделов в URL и сформировать в URL по типу
мой_сайт.ru/catalog/сразу_товар нарушит ссылки которые проиндексированы поисковиками – тоже плохо, сайт потеряет наработанные годами позиции в поисковых системах.
Решение.
Проблема дублей решается с помощью добавления ссылки с атрибутом rel="canonical" на основной «главный» товар каталога. В области <HEAD> - страницы разместить:
Код |
---|
<li nk rel="canonical" href="ссылка_на_основной_канонический_элемент_каталога" />
|
Я решил эту задачу так.
В свойствах инфоблока создал свойство "Канонический URL", код свойства –
CANONICAL, тип строка.
В шаблоне элемента каталога добавил:
Код |
---|
<? if(!empty($arResult["PROPERTIES"]["CANONICAL"]["VALUE"]))
{
$APPLICATION->SetPageProperty('canonical', $arResult["PROPERTIES"]["CANONICAL"]["VALUE"].$arResult["CODE"] );
}
?>
|
В header.php шаблона в области <HEAD> добавил:
Код |
---|
<?php function ShowCanonical()
{ global $APPLICATION;
if ($APPLICATION->GetProperty("canonical")!="" && $APPLICATION->GetProperty("canonical")!=$APPLICATION->sDirPath){
return '<li nk rel="canonical" href="www.мой_сайт.ru'.$APPLICATION->GetProperty("canonical").'/" />'; } else {return false;} } $APPLICATION->AddBufferContent('ShowCanonical');
?>
|
В результате если в админке сайта – в поле свойства указать адрес правильной ссылки к примеру:
/catalog/pechi-kaminy-nordica-italiya/Формируется ссылка на основную каноническую страницу сайта:
Код |
---|
<li nk rel="canonical" href="www.мой_сайт.ru/catalog/pechi-kaminy-nordica-italiya/pech-kamin-la-nordica-candy-/" />
|
Учитывая большое количество товаров – экспортировал необходимые поля инфоблока в CSV – добавил в поле созданного свойства CANONICAL – необходимые данные, импортировал обратно, раскидал товары по вновь созданным категориям и все. Товары добавлены – проблема дублей решена.
У мены вопрос к специалистам, насколько допустим данный способ? Нет ли в нем ошибок? Существует ли более простое и оптимальное решение?