И так от руководства поступила задача прописать тег rel-canonical для продвигаемого сайта. Но в движке такой опции не существует. Или же у вас вообще самописный движок. Или модуль в преста-шоп не работает корректно ;-) и такое бывает...
Давайте напишем небольшой скрипт который позволит нам выводить нужный тег на продвигаемых разделах. Первый вариант когда путь имеет следующий вид. http://website.com/shop/catalog/audio а пагинация разбивает и ваводит страницы в следущем виде http://website.com/shop/catalog/audio/3 В таком случае мы проверяем не передается ли значение номера страницы в нашем адресе и если передается то обрезаем все не нужное и создаем нужные нам теги раздела для сохранения веса страницы раздела. В общем вот код:
$url = $_SERVER['REQUEST_URI']; $domain = $_SERVER['HTTP_HOST']; // Разбиваем виртуальный URL "/" $url_name = explode('/', trim($url, ' /')); if($url_name[0] == 'shop' && isset($url_name[3])){ echo 'Page '.$url_name[3].' | {title} '; // выводим в заголовке номер текущей страницы и его title echo ''; // выводим в описании номер страницы и description echo ''; // склеиваем и выводим основной путь раздела для сохранения веса } else { echo '{title} '; // для всех прочих страниц выводим стандартный title echo ''; }
Если у вас параметры передаются методом GET, то все тоже самое. второй вариант имеет ссылки следующего вида http://website.com/product?goods=audio&cat=SONY&page=2
if (isset($_GET['page'])) { $canonical .= 'http://'; // Имя сервера, напр. site.com или www.site.com $canonical .= $_SERVER['SERVER_NAME']; //product?goods=farkopy&cat=TOYOTA $canonical .= "/product?goods=".$_GET['goods']."&cat=".$_GET['cat']; echo ''; }
Виктор
если вложенность только в одной категории то да норм! А если множества то нет! если у тебя статья принадлежит двум или трем категориям... получается что все будут canonical в таком случае если используем bootstrap для выбора категорий то можно первую которая положена в список (выбираем ту которая больше подходит для этой статьи) и отправлять в отдельный элемент у меня для мелочей есть params где хранятся всякие настройки и вытягивать его , а можно сделать доп.поле для него и хранить там alias или id cat кому как вкуснее.