Magento на русском

Новости, обмен опытом, база знаний для разработчиков.

SEO оптимизация поисковых урлов в Magento

by @ 15:49 on 20.07.2009. Tags: , ,
Filed under Примеры, СЕО

Цель: преобразовать вид ссылок, образующихся при поиске товаров, в соответствии с шаблоном.

Исходные данные:

Допустим, мы продаем на нашем сайте ковры…

- ищем товар в поиске с помощью строки поиска stroka poiska;

- результатом поиска будет URL вида http://example.com/catalogsearch/result/?q=stroka+poiska

Задача:

преобразовать вид URLов, получающихся при поиске товара, по следующему шаблону:

Исходный URL: www.example.com/catalogsearch/result/?q=<слово_1>+<слово_2>+<слово_3>+<слово_4>

Итоговый URL: www. example.com/buy-rugs/<слово_1>+<слово_2>+<слово_3>+<слово_4>.html

Примечания:

- в строке поиска будет от одного до четырёх слов.



И так…

Нам надо для начала перебить стандартный контроллер на наш, чтобы тот редиректил на красивый урл, а затем переписать правилами красивый урл на реальный урл… Звучит всё страшно, но делается просто:


<?xml version="1.0"?>
<config>
    <global>
        <rewrite>
			<onotole_shukaet>
				<from><![CDATA[#^/buy-rugs/(.*)#]]></from>
				<to>/rug/index/search/q/{$1}</to>
			</onotole_shukaet>
			<onotole_redirecte>
				<from><![CDATA[#^/catalogsearch/result/(.*)#]]></from>
				<to>/rug/index/dosearch/words/{$1}</to>
			</onotole_redirecte>
	</rewrite>
    </global>
</config>

Теперь нам надо создать свой контроллер (не забудьте добавить роутер), у меня он называется rug


	public function searchAction()
	{
        $query = Mage::helper('catalogSearch')->getQuery();
    	$query->setStoreId(Mage::app()->getStore()->getId());

        if ($query->getQueryText()) {
            if (Mage::helper('catalogSearch')->isMinQueryLength()) {
                $query->setId(0)
                    ->setIsActive(1)
                    ->setIsProcessed(1);
            }
            else {
                if ($query->getId()) {
                    $query->setPopularity($query->getPopularity()+1);
                }
                else {
                    $query->setPopularity(1);
                }

                if ($query->getRedirect()){
                    $query->save();
                    $this->getResponse()->setRedirect($query->getRedirect());
                    return;
                }
                else {
                    $query->prepare();
                }
            }

            Mage::helper('catalogSearch')->checkNotes();
            $this->loadLayout(
            	array(
            		'default',
            		'catalogsearch_result_index'
            	)
            );
            $this->_initLayoutMessages('catalog/session');
            $this->_initLayoutMessages('checkout/session');
            $this->renderLayout();

            if (!Mage::helper('catalogSearch')->isMinQueryLength()) {
                $query->save();
            }
        }
        else {
            $this->_redirectReferer();
        }
	}

	public function dosearchAction()
	{
		$q = Mage::app()->getRequest()->getParam('q');
		$this->_redirect('buy-rugs/'.$q);
	}

Вот собственно и всё.
Теперь поисковые запросы перехватываются, редиректятся на страничку с красивым урлом, этот красивый урл переписывается в понятный для magentо формат, осуществляется поиск и отображаются результаты.

Похожие Magento-статьи:

  1. Поисковая оптимизация в Magento
  2. Групповой продукт – показ картинок из привязанных продуктов
  3. Наворачиваем свой модуль. Вывод коллекции данных в грид.
  4. Простой пример кода начинающим разработчикам
  5. Программное создание ордера (заказа)

The URI to TrackBack this entry is: http://magento.verych.ru/2009/07/seo-%d0%be%d0%bf%d1%82%d0%b8%d0%bc%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f-%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%be%d0%b2%d1%8b%d1%85-%d1%83%d1%80%d0%bb%d0%be%d0%b2-%d0%b2-magento/trackback/

Один комментарий для “SEO оптимизация поисковых урлов в Magento”

  1. Favn:

    не могли бы пояснить в какие именно файлы вносить изменения…

Оставить комментарий

© 2009-2012 Magento по-русски 99% авторских статей