вторник, 27 мая 2014 г.

ЧПУ для фильтра: опыт разработки и анонс модуля под Маркетплейс Битрикс

Наверное, каждому разработчику и владельцу интернет-магазинов, приходилось не раз слышать от SEOшника: «нужно сделать ЧПУ для фильтра, как на розетке, как на розетке, как на розетке...». Не знаю уж, почему именно пресловутая розетка так нравится SEO-специалистам, но спрос породил предложение. Прежде, чем рассказать о нашем опыте реализации ЧПУ для фильтра и о нашем новом модуле под маркетплейс (который сейчас на стадии бета-тестирования), я хотела бы немного рассказать о самой сути задачи. 

В чем особенность фильтра «какнарозетке»? 
http://rozetka.com.ua/memory-cards/a-...0044/v242/ 
  1. Имитация статичности динамических страниц, сформированных фильтром. У страниц каталога, к которым применен фильтр — красивые человекопонятные URL-адреса.;
  2. Перелинковка за счет использования ссылок в качестве лейблов чекбоксов фильтра;
  3. Возможность указания отдельного заголовка, мета-описания и ключевых слов для каждой фильтрованной страницы каталога. 
Поисковым системам очень нравится такая организация каталога. В индекс попадает бешеное количество (число страниц потенциально равно количеству сочетаний значений свойств раздела без перестановок) перелинкованных друг с другом страниц с уникальным описанием и уникальными метатегами и, как следствие, высокорелевантных низкочастотным поисковым запросам. 

Проанализировав работу фильтра на сайте http://rozetka.com.ua/ мы поняли, что, используя мощь движка 1С-Битрикс, мы можем сделать и точно так, и даже красивее (а именно: на розетке количество свойств раздела, для фильтрации по которым организуется ЧПУ — ограниченно небольшим числом, и ЧПУ — не мнемонично — человекопонятным его можно назвать лишь с натяжкой. Мы же нашли решение для неограниченного числа свойств, а так же предусмотрели вариант автоматической генерации метатегов на тот случай, когда контент-менеджер не успевает их придумывать). 

Однако в силу различий в архитектуре интернет-магазинов, на которых нам приходилось организовывать подобный фильтр, каждый раз нам приходилось изобретать этот велосипед практически с нуля. Порой мне казалось, что универсальное и одновременно изящное решение данной задачи — невозможно. 

К примеру, в интернет-магазине электроники kfk.ru нам пришлось учитывать наличие в системе предсозданных SEO-страниц, на которые пользователь должен был попадать, выбирая определенную комбинацию фильтра. 

http://kfk.ru/podborki/sat-50m-koaksi...nyj-kabel/ 
Сняв же галочку фильтра на такой посадочной странице или выбрав другой фильтр, пользователь должен был попадать обратно — на динамическую страницу каталога. 

http://kfk.ru/catalog/kabel-koaksialn...0m-rg_59u/ 

В интернет-магазинах http://uptosport.ru/ и http://uptodream.ru/ нам пришлось дать контент-менеджерам инструмент для присвоения свойствам и их значениям символьных кодов (они не велись ранее), а так же контролировать их уникальность. 

В итоге получились вот такие красивые ЧПУ-ссылки на фильтрованные разделы: 

http://uptosport.ru/catalog/dlya_zhen...ue/size=L/ 

http://uptodream.ru/catalog/dlya_zhen...or=purple/ 

В некоторых интернет-магазинах задача осложнялась так же тем, что контент-менеджеры работали только на стороне 1С Предприятия, и хотели вбивать символьные коды свойств и значений свойств только там. 

Мы придумали, как расширить выгрузку из 1С УТ для того, чтобы можно было передавать символьные коды свойств и их значений, не нарушая формата CML2 и не ломая налаженный на проектах обмен с 1С. Дополнили выгрузку XML следующим образом: 

<Свойство> 
<Ид>83875106-f414-11e0-83db-0023ae2ed3a2</Ид> 
<Наименование>Цвет</Наименование> 
<ТипЗначений>Справочник</ТипЗначений> 
<СимвольныйКод>color</СимвольныйКод> 
<ВариантыЗначений> 
<Справочник> 
<ИдЗначения>83875108-f414-11e0-83db-0023ae2ed3a2</ИдЗначения> 
<Значение>Красный</Значение> 
<СимвольныйКод>red</СимвольныйКод> 
</Справочник> 
</ВариантыЗначений> 
</Свойство> 

И, естественно, мы добавили поддержку выгрузки символьного кода свойств и значений свойств в свой модуль интеграции http://marketplace.1c-bitrix.ru/solut...tegraciya/ (выйдет на днях в составе фундаментального обновления 3.0.0). 

После этого мы подумали (и измерили), что если хранить символьные коды значений всех свойств в одном highload инфоблоке, это позволяет организовать фильтр с ЧПУ чрезвычайно эффективно, и мы добавили в свой модуль интеграции опцию, позволяющую создавать и заполнять для нашего ЧПУ фильтра highload инфоблок прямо в процессе импорта из 1С Предприятия. 

В своем же модуле фильтра «какнарозетке» (мы еще думаем над его официальным названием) мы добавили поддержку своего модуля интеграции. То есть, если в системе будут установлены оба наших модуля — они будут работать совместно, и производительность ЧПУ-фильтра увеличится в разы. Но если в системе будет установлен только наш модуль ЧПУ, он будет выбирать символьные коды свойств из вспомогательного инфоблока или highload-инфоблока-справочника значений каждого конкретного свойства. 

Об обновлении нашего модуля интеграции 3.0.0 я напишу в отдельном посте.

Комментариев нет: