Как сделать динамический канонический тег во внутреннем поиске Magento?

Когда я выполняю внутренний поиск в magento (т.е. ищу продукт) и после этого пытаюсь отфильтровать результаты (фильтровать по цене), некоторые строки запроса добавляются к моему URL-адресу, но Google указывает, что это дублированный контент.

В Magento есть функция канонических тегов для категорий и продуктов, но я не смог найти ее в «поисковых» запросах и фильтрах.

Мой вопрос: как добавить канонические теги в поиск magento при фильтрации результатов?


person Adilson Junior    schedule 11.11.2014    source источник


Ответы (2)


Обычно мы рекомендуем скрывать внутренний поиск по сайту от индексации (это можно сделать с помощью стандартных тегов «NOINDEX, FOLLOW»).

Но если по какой-то причине вам действительно нужно его проиндексировать, вот простейший код, позволяющий добавить канонический URL.

Обратите внимание, что в этом случае мы используем поиск по умолчанию. В этом коде канонический URL содержит только поисковый запрос без каких-либо фильтров.

/app/design/frontend/{your_package}/{your_theme}/template/page/html/head.phtml

Добавьте этот код:

<?php

$controller = Mage::app()->getFrontController();
if(is_object($controller) && is_callable(array($controller, 'getAction'))){
    $action = $controller->getAction();
    if(is_object($action) && is_callable(array($action, 'getFullActionName'))){
        $fullActionName = $action->getFullActionName();        
    }
}

if(!empty($fullActionName) && $fullActionName == 'catalogsearch_result_index')
{
    $request = $this->getRequest();
    $params  = $request->getParams();

    if(!empty($params['q'])){
        $action = $request->getActionName();
        if($action == 'index'){
            $action = '';
        }
        $canonicalUrl = $this->getBaseUrl() . $request->getRouteName() .DS. $request->getControllerName() .DS. $action . '?q=' . $params['q'];
        echo "<link rel=\"canonical\" href=\"$canonicalUrl\" />";
        echo "<!--Canonical URL was added from template head.phtml-->";
    }
}

?>

Также обратите внимание, что мы рекомендуем использовать параметр панели инструментов limit=all. Без него будет сложно получить правильный канонический URL на страницах с нумерацией страниц.

Если этот параметр включен (вы можете проверить его в System->Configuration->Catalog->Catalog->Frontend->Allow All Products per Page), вам необходимо добавить «limit=all» к URL-адресу.

P.S. Чтобы узнать больше по этой теме, прочитайте это руководство от Google: http://googlewebmastercentral.blogspot.com/2013/04/5-common-mistakes-with-relcanonical.html

person Mageworx    schedule 29.12.2014

Вы также можете избежать сканирования через robots.txt.

User-agent: * Disallow: /catalogsearch/

приведенный выше код предотвратит сканирование страниц поиска в Google.

person Javier Carter    schedule 20.03.2015