Анонс SeoFilter - ЧПУ+SEO для mFilter2 и не только
[SeoFilter] — удобное управление ЧПУ ссылками, мета-тегами и генерация текстов.
[Купить компонент в modstore] [Демо-версия]
Добрый день! Представляю компонент, идея которого зародилась довольно таки давно, и уже было подобное решение, с которого я и начинал. Большое спасибо Дмитрию Зарубину — автору того поста, а также Василию, за прекрасные уроки по написанию компонентов.

Основные возможности:
— работа из коробки с mFilter2;
— поддержка любых полей в фильтре: поля ресурса, поля товара, опций miniShop2, TV и любых своих;
— работа без двойной транслитерации (подробнее дальше);
— любой формат ссылок для поля (/color-white, /white-color, /white, /belyi и т.д);
— статистика переходов на страницы как по ссылкам, так и через фильтр;
— интеграция с компонентом frontendManager (добавлен контроллер для редактирования с фронта);
— возможность выбирать и прописывать в шаблоны мин/макс значения по числовым полям;
— prepareSnippet для дополнительной обработки шаблонов, для большей гибкости выборок;
— SEO шаблоны с Fenom и склонения через сервис morpher (Заголовок на скриншоте:)
Подробнее под катом.
Ещё немного отступлений, перед технической частью:
Компонент родился в рамках работы над одним проектом совместно с человеком по SEO, с которым сотрудничаю уже больше года. Изначально было достаточно решения по инструкции, приведённой по ссылке выше. Но дальше аппетиты росли, и также росла необходимость собрать всё в одном месте, так как сложность поддержки росла.
В проекте используется большое количество фильтров, значения для которых хранятся в других таблицах, а в полях msProductData только ID значений. Все поля там были созданы через msFieldsManager, а в качестве кастомной таблицы идеально подошло решение customExtra Ильи Уткина, который мне не раз помогал умным советом. Спасибо, Илья!
Теперь техническая часть:
Интерфейс компонента состоит из 4 вкладок:

Чтобы создать максимально удобный и универсальный фильтр несколько раз пришлось переделывать всё.
В итоге получилась такая логика:
Допустим, у вас уже установлен mSearch2 и настроен фильтр, где вы получаете такие адреса:
«catalog?category=14&color=черный». То есть здесь уже прописана настройка aliases(синонимы).
1. Далее добавляем поле в SeoFilter, например цвет:

После сохранения поля, автоматически будут найдены значения поля цвет у всех товаров и добавлены во вкладку словарь, где значения также транлитерируются/переведутся (в зависимости от ваших правил формирования дружественных url). И если, включена настройка склонять по падежам с помощью сервиса morpher.ru, то опять таки, автоматически будут прописаны все падежи. А если указать свой логин и пароль от сервиса, то будут получены дополнительные поля (где, куда, откуда и множественное число):

2. Уже можем перейти к созданию SEO правила.
На скриншоте сразу две вкладки в режиме редактирования.

После его сохранения формируются url-адреса в таблицу.
Чем больше полей добавить в правило, тем больше адресов сформируется, перемножив значения полей друг на друга.
3. Теперь можно посмотреть на получившиеся адреса

И если нажать на галочки использовать индивидуальные мета-теги или показывать в меню, появятся ещё дополнительные поля. Подсмотрел в компонентах у Володи, спасибо! Индивидуальные мета-теги будут приоритетнее, чем прописанные в правиле. А показывать в меню связано со сниппетом, но об этом не в этот раз.
В целом, действий на втором этапе достаточно, чтобы уже можно было перейти на страницу и посмотреть результат. На данном этапе, при выборе цвета в фильтре поменяется только url, и meta name=«description».
Чтобы менялись такие поля, как h1, introtext (а всего их 7), нужно прописать классы и плейсхолдеры в вёрстке. То есть там, где у вас заголовок (h1) нужно добавить класс .sf_h1 и плейсхолдер
Пока пишу обзор, понимаю, что пятой вкладкой в компоненте нужно сделать «Инструкцию».
С компонентом также идут сниппеты, которые нужны для формирования ссылок, на эти страницы. Есть как и более быстрый, который принимает id поля и значение, после чего вернёт массив со значением и синонимом, или же подставит значения в чанк (или inline) указанный в параметре tpl.
Второй более сложный и скорее всего, будет переписан к релизу.
Также в планах сделать сниппет для формирования меню и сайты карта, или инструкцию, как это сделать с pdoTools. Также в будущих версиях добавлю формирование меню через ajax, с сортировкой по просмотрам.
Ещё немного о добавлении нескольких полей в правило: по умолчанию добавляя поля приоритет будет проставляться автоматически, начиная с 0. Изменять порядок можно перетаскиванием удерживая поле.
В последующих релизах будет добавлено условие для создания конкретных страниц (то есть сформировать страницы с полями только выбранных цветов и определённых категорий).
Также это нужно для объединения нескольких значений одного поля, пример:
товары есть тёмно-серого цвета и светло-серого, а можно будет сделать страницу с товарами серого цвета.
Ну и самое интересное, компонент автоматически будет отслеживать изменения полей в товарах и добавлять новые значения в словарь, автоматически формируя ссылки. Для этого предусмотрены настройки: какие шаблоны отслеживать и какие типы ресурсов. Даже если добавите напрямую через базу данных, избегая плагинов на изменение ресурса, компонент всё равно увидит это поле, когда кто-нибудь поставит галочку напротив него в фильтре, и опять создаст новые ссылки для всех правил с этим полем.
Ещё есть такие фишки, которые при изменения синонимов поля/слова, изменят ссылки и адреса, связанные с этим полем/словом.
И да, SeoFilter будет платным, первая версия 990 руб, после завершения всех планов, цена поднимется.
Компонент отправлю в modstore на следующей неделе, осталось дописать лексиконы, перепроверить на разных версиях. А пока задавайте вопросы, кого интересует, буду рад ответить!)
=========
UPD: (20.08) — обновление компонента.
[Купить компонент в modstore] [Демо-версия]
Добрый день! Представляю компонент, идея которого зародилась довольно таки давно, и уже было подобное решение, с которого я и начинал. Большое спасибо Дмитрию Зарубину — автору того поста, а также Василию, за прекрасные уроки по написанию компонентов.

Основные возможности:
— работа из коробки с mFilter2;
— поддержка любых полей в фильтре: поля ресурса, поля товара, опций miniShop2, TV и любых своих;
— работа без двойной транслитерации (подробнее дальше);
— любой формат ссылок для поля (/color-white, /white-color, /white, /belyi и т.д);
— статистика переходов на страницы как по ссылкам, так и через фильтр;
— интеграция с компонентом frontendManager (добавлен контроллер для редактирования с фронта);
— возможность выбирать и прописывать в шаблоны мин/макс значения по числовым полям;
— prepareSnippet для дополнительной обработки шаблонов, для большей гибкости выборок;
— SEO шаблоны с Fenom и склонения через сервис morpher (Заголовок на скриншоте:)
{$category_i} {$color_r} цвета у метро {$metro}Подробнее под катом.
Ещё немного отступлений, перед технической частью:
Компонент родился в рамках работы над одним проектом совместно с человеком по SEO, с которым сотрудничаю уже больше года. Изначально было достаточно решения по инструкции, приведённой по ссылке выше. Но дальше аппетиты росли, и также росла необходимость собрать всё в одном месте, так как сложность поддержки росла.
В проекте используется большое количество фильтров, значения для которых хранятся в других таблицах, а в полях msProductData только ID значений. Все поля там были созданы через msFieldsManager, а в качестве кастомной таблицы идеально подошло решение customExtra Ильи Уткина, который мне не раз помогал умным советом. Спасибо, Илья!
Теперь техническая часть:
Интерфейс компонента состоит из 4 вкладок:

Чтобы создать максимально удобный и универсальный фильтр несколько раз пришлось переделывать всё.
В итоге получилась такая логика:
Допустим, у вас уже установлен mSearch2 и настроен фильтр, где вы получаете такие адреса:
«catalog?category=14&color=черный». То есть здесь уже прописана настройка aliases(синонимы).
1. Далее добавляем поле в SeoFilter, например цвет:

После сохранения поля, автоматически будут найдены значения поля цвет у всех товаров и добавлены во вкладку словарь, где значения также транлитерируются/переведутся (в зависимости от ваших правил формирования дружественных url). И если, включена настройка склонять по падежам с помощью сервиса morpher.ru, то опять таки, автоматически будут прописаны все падежи. А если указать свой логин и пароль от сервиса, то будут получены дополнительные поля (где, куда, откуда и множественное число):

2. Уже можем перейти к созданию SEO правила.
На скриншоте сразу две вкладки в режиме редактирования.

После его сохранения формируются url-адреса в таблицу.
Чем больше полей добавить в правило, тем больше адресов сформируется, перемножив значения полей друг на друга.
3. Теперь можно посмотреть на получившиеся адреса

И если нажать на галочки использовать индивидуальные мета-теги или показывать в меню, появятся ещё дополнительные поля. Подсмотрел в компонентах у Володи, спасибо! Индивидуальные мета-теги будут приоритетнее, чем прописанные в правиле. А показывать в меню связано со сниппетом, но об этом не в этот раз.
В целом, действий на втором этапе достаточно, чтобы уже можно было перейти на страницу и посмотреть результат. На данном этапе, при выборе цвета в фильтре поменяется только url, и meta name=«description».
Чтобы менялись такие поля, как h1, introtext (а всего их 7), нужно прописать классы и плейсхолдеры в вёрстке. То есть там, где у вас заголовок (h1) нужно добавить класс .sf_h1 и плейсхолдер
[[!+sf.h1:default=`[[*longtitle]]`]]. Названия классов можно изменить в системных настройках в разделе seofilter. Также там, нужно будет указать поля, которые для страницы без параметров будут подставлены.Пока пишу обзор, понимаю, что пятой вкладкой в компоненте нужно сделать «Инструкцию».
С компонентом также идут сниппеты, которые нужны для формирования ссылок, на эти страницы. Есть как и более быстрый, который принимает id поля и значение, после чего вернёт массив со значением и синонимом, или же подставит значения в чанк (или inline) указанный в параметре tpl.
Второй более сложный и скорее всего, будет переписан к релизу.
Также в планах сделать сниппет для формирования меню и сайты карта, или инструкцию, как это сделать с pdoTools. Также в будущих версиях добавлю формирование меню через ajax, с сортировкой по просмотрам.
Ещё немного о добавлении нескольких полей в правило: по умолчанию добавляя поля приоритет будет проставляться автоматически, начиная с 0. Изменять порядок можно перетаскиванием удерживая поле.
В последующих релизах будет добавлено условие для создания конкретных страниц (то есть сформировать страницы с полями только выбранных цветов и определённых категорий).
Также это нужно для объединения нескольких значений одного поля, пример:
товары есть тёмно-серого цвета и светло-серого, а можно будет сделать страницу с товарами серого цвета.
Ну и самое интересное, компонент автоматически будет отслеживать изменения полей в товарах и добавлять новые значения в словарь, автоматически формируя ссылки. Для этого предусмотрены настройки: какие шаблоны отслеживать и какие типы ресурсов. Даже если добавите напрямую через базу данных, избегая плагинов на изменение ресурса, компонент всё равно увидит это поле, когда кто-нибудь поставит галочку напротив него в фильтре, и опять создаст новые ссылки для всех правил с этим полем.
Ещё есть такие фишки, которые при изменения синонимов поля/слова, изменят ссылки и адреса, связанные с этим полем/словом.
И да, SeoFilter будет платным, первая версия 990 руб, после завершения всех планов, цена поднимется.
Компонент отправлю в modstore на следующей неделе, осталось дописать лексиконы, перепроверить на разных версиях. А пока задавайте вопросы, кого интересует, буду рад ответить!)
=========
UPD: (20.08) — обновление компонента.
- Добавлено копирование правил
- Шаблоны для названия ссылки и галочка перегенерировать
- Изменён механизм подсчёта потомков и выборок
- Добавление правил с учётом полей-слайдеров (цена и т.д)
- Две новые настройки для названия ссылки
Комментарии: 120
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Мы кстати свой тоже значительно доработали и помудрили с быстродействием. Отрабатывает даже на 40000 товаров в бд на отлично. Можно глянуть на работу тут vivaset.ru/avtomaticheskie-vyiklyuchateli/.
Кстати, вдруг вам пригодится идея: в самой нижней части у нас выводится блок со ссылками, которые читают поисковики. В нашем случае мы формируем их записывая значения в плейсхолдер с массивом в чанках фильтров. Не уверен что это получится нормально на смарти. Но на феном работает отлично.
В основном, решая такие задачи:
Допустим есть категория ванны, где фильтры по материалу, по бренду, по размеру, форме и т.д.
По умолчанию в этой категории, можно будет показать {n} самых популярных ссылок, таких как:
— Акриловые ванны
— Ванны Rocca
— Ванны 170x70.
При выборе акриловых ванн (либо в фильтре, либо при переходе по ссылке) на месте этих ссылок появятся другие, уточняющие популярность непосредственно в акриловых ваннах:
— Акриловые ванны Riho;
— Прямоугольные акриловые ванны;
При этом, скорее всего можно будет задавать шаблон для генерации названия ссылки, изменять порядок, проставлять картинки, например)
А так и у меня всё работает на Fenom, и по скорости от количества товаров вообще никак не должно зависеть, лишь только добавляя единожды все слова в справочник. Обычно отрабатывает быстрее, чем mSearch2 возвращает результаты.
Из нового у вас я заметил группировку всех ссылок к текущей странице, тоже можно сделаь, для этого уже всё предусмотрено, кому-то точно будет полезным. Спасибо за идею!
Наверно на демке мне стоит раскрыть все возможности компонента)
А можно вкратце пример, какой код будет в редакторе?
з.ы. забавная опечаточка вышла)
Но прям в первом релизе не планировал, но если времени хватит, то добавлю)
Выше привели пример, но всё это хорошо, когда ищется по 1 критерию в каждом фильтре
По умолчанию, при множественном выборе нескольких значений одного фильтра, подтягиваются обычные поля страницы, и адрес будет состоять из get параметров. (/telefony?brand=1,2&color=Синий)
Но я ещё не упомянул в заметке про базовые правила. Если в окошке редактирования правила, связанного только с полем «Цвет», поставить галочку "Базовое правило", то в таком случае получится адрес "/telefony/sinie?brand=1,2" и все текста, будут связаны с синими телефонами.
После релиза планирую добавить условия к полям при создании правила, где можно будет добавить одно и то же поле, указывая какие значения из него брать: все, или только некоторые, ну и ничто не помешает добавить совсем другое поле.
Например, если взять минимум, что будет выбрано 2 производителя и 1 цвет, то таких возможных страниц, при 10 значениях в обоих группах, будет 900(10*(10-1)*10), а вероятность их использования, и тем более релевантности поисковым запросам сильно падает. Всё таки мало-кто ищет подобное:
Синие телефоны Samsung и Apple (/telefony/sinie/samsung-i-apple)
Красные телефоны Nokia и HTC. (/telefony/krasnye/nokia-i-htc)
Хотя Яндекс и отдаёт подобные результаты, но в wordstat таких запросов нет :)
Контент-менеджер или SEO-шник просто замучается составлять правила и шаблоны на такие страницы.
Поэтому такая настройка будет лишь нужна по мере-необходимости, и чаще всего для двух значений одного поля, без использования второго поля)
Вот идеальный пример, когда 2 параметра идеально работаю www.shop-project.ru/catalog/2-etazh-doma/proekt/ploshad-from-200-to-300/material-is-kirpich/, двумя параметрами можно много НЧ запросов собирать на обширных тематиках. В данном примере мы фильтруем по материалу стен и квадратуре. Получается очень хороший тайтл и H1 «ПРОЕКТЫ ДВУХЭТАЖНЫХ ДОМОВ, ДОМОВ ИЗ КИРПИЧА, ПЛОЩАДЬЮ ОТ 200 М2 ДО 300 М2» и.т.д. на том сайте какие угодно вариации, они очень много запросов собирают к примеру дом из кирпича с гаражом.
Так что было бы здорово, если хотя бы по двум разным параметрам можно было бы сделать)
Есть ещё фишка, чтобы сделать с двумя значениями одного параметра, но там надо со словарём повозиться)
«ПРОЕКТЫ ДВУХЭТАЖНЫХ ДОМОВ, ДОМОВ ИЗ КИРПИЧА, ПЛОЩАДЬЮ ОТ 200 М2 ДО 300 М2» такой тайтл я запросто динамически сформирую :)
В правилах в текстах пишите просто в таком виде:
На скриншоте не понял, что означает garag. Все переменные берутся из синонима поля.
Окончание _r — означает родительный падеж, если включено склонение в настройках)
К примеру, пытаюсь связать параметр Общая площадь и Комнаты prntscr.com/gpxjhi
Захожу в правило «Общая площадь» нужно ли нажать добавить поле «комнаты» prntscr.com/gpxk5y так prntscr.com/gpxlgb
После заполнил вкладку СЕО prntscr.com/gpxtx4
На фронте теперь комбинация заработала prntscr.com/gpxv01 но если оставить только выбор на «Общая площадь» — то перестало работать (h1, тайтл не подставились)
Тогда грубо говоря оно будет называться «Общая площадь + Комнаты»
Если ещё есть вопросы или не разберётесь, то пришлите мне через поддержку дополнений modstore.pro/office/support#office/support/add
данные для входа, посмотрю и поправлю так как вам нужно :)
Честно говоря, у меня уже более года есть компонент, который даже называется так же =) Трудиться, работает на нескольких сайтах, но идеальным его не могу назвать пока, нюансов так много всплывает в процессе его настройки.
А потом долго думал над названием и лучше варианта не придумал.
Компонент и сейчас может работать без привязки к mFilter2, также соберёт словарь, сможет формировать ссылки на страницы и передавать им GET/REQUEST-параметры с выставлением плейсхолдеров.
Скорее всего даже и без miniShop2 будет работать на полях ресурса и ТВ-полях, проверю после релиза и укажу в документации)
По описаниям отличный плагин! Посмотрим его в деле.
Но возникли вопросы:
1. Будут ли снижены цены первым покупателям?
2. Какая скорости работы плагина. Смотрел скорость по Гуглю в вашем примере — более 1 сек. Это очень долго. Кешируется ли ваше дополнение?
Спасибо жду ответа
Компонент уже отправлен на проверку, но на акционный период не попадает.
1. Цена для первых покупателей будет 990 рублей, считайте что -30% от цены 1490, которая будет после некоторых обновлений :) Про обновления напишу, как компонент появится в магазине, дополнив тему или в новом топике.
2. Не знаю, про какой пример говорите, здесь я ничего ещё не выкладывал)
Само по себе дополнение при работе не отнимает скорость и даже не прибавляет запросы на странице с фильтром, как минимум после первой генерации страницы в кэш. Но и при первом запуске не замечал.
Увеличение количества запросов есть, когда уже срабатывает плагин на подобный url: "/razdel/sinij/planshetyi".
Скорость при этом как-то значительно не отличается. Всё в пределах погрешности ~0.01 сек.
В личку вам отправлю тестовые сайты, где стоят последние версии. А на днях и демку нормальную сделаю)
Отдельного кэширования в дополнении нет, это всё таки динамические данные, которые постоянно могут обновляться.
Дополнение опубликовано modstore.pro/packages/ecommerce/seofilter
Документация на github ещё не принята, но копия находится здесь: s9767.h8.modhost.pro/dokumentacziya/
Спасибо за труды
Приеду домой потестю и куплю. Спасибо.
Только у меня почему-то не получилось задать фильтры с условием с ценой.
0) joxi.ru/brRe0JdtQV5k8A
1) joxi.ru/RmzYd1vCWGqQZr
2) joxi.ru/52an3bJCGZLBMA (http://joxi.ru/a2XW5b7tyZEJ7m)
Чет неправильно делаю?
З.Ы.
Может будет возможно\удобно сделать возможность копирования правила?
Да, с числовыми полями я что-то намудрил :)
Постараюсь сегодня-завтра поправить, чтобы можно было создавать страницы: недорогие товары или премиальные товары)
И по копированию правила — скорее всего да, тоже сделаю. Думал об этом)
Но уже сейчас можно открыть два правила одновременно и расположить рядом на экране, копируя тексты друг-друга.
Поделитесь, пожалуйста, планами о развитии решения на ближайшее будущее.
Ещё будет 2 обновления до повышения цены:
В первом ближайшем обновлении:
1) Правка с созданием страниц по числовым полям (в виде слайдера которые);
2) Копирование правил;
3) Шаблон для текстового названия url-адреса. (чтобы ещё и текст правильный выводить в меню).
Во втором:
1) Сниппет для формирования меню (по своим параметрам);
2) Сниппет для карты сайта;
3) Возможно текстовый шаблон для добавления ссылки в хлебные крошки;
Можете ещё что-то предлагать, что могло бы пригодится всем)
Не знаю смогу ли правильно объяснить.
Возможность создать список полей к странице с различными значениями и параметрами. Т.е. иметь возможность дополнительно создать поле, например, с изображением и вывести его при определенном значении фильтра.
Правда не знаю, есть ли в этом какой-либо толк.
У меня вопрос по пункту «1) Сниппет для формирования меню (по своим параметрам);»
Чтобы избежать разночтений, я задал его в видеоформате, на примере. Ознакомьтесь, пожалуйста: youtu.be/5EfaOLwvNO4
P.S. А к каким срокам ждать этих обновлений?
Отвечу на вопрос про сниппет: Нет, этот сниппет будет для других целей, а ля pdoMenu)
Но то, что показано на видео можно уже и сейчас сделать.
Ради общего интереса сделал на демке похожий функционал, как на видео s9767.h8.modhost.pro/razdel/
Работает с учётом относительности для цвета и категории.
Всего лишь пришлось подкорректировать чанк. Решение не самое изящное, но чтобы в чанках mFilter2 были параметры для ссылок, их учёт относительно от правил, переданных параметров и условий — придётся не слабо переделать исходники mSearch2, что не позволительно)
Конечно можно и копию mFilter2 переделать под себя и классы переопределить, но это уже совсем не стандартная доработка)
Что радует при моём подходе — скорость и количество запросов как-то особо не изменились.
Сам код одного чанка: (во втором по сути меняется порядок ссылки и get-параметр)
Но есть и минусы — чанки в фильтре не обновляются через ajax.
И убирать ссылки на лету при label disabled можно только пробегаясь своим JS скриптом)
Также нужно изменять ссылку при убирании одного get-параметра.
Вывод: такое решение если и может жить, то только для ссылок «первого уровня»:
И естественно определяя для каждого поля в mFilter2 свой чанк row.
P.S. Возможно поисковикам хватит и такой грубой реализации но пользователей может запутать.
И по обновлениям — первое со дня на день. Второе скорее всего на следующей неделе.
Мне даже как-то неудобно, что я, как холоп, просто текстом вопросы набираю… =)
На демке страница с дешевыми товарами s9767.h8.modhost.pro/razdel/nedorogie
Правда не очень хорошая реализация вышла именно по недорогим товарам. Подумаю как ещё решить, но в целом в новом обновлении открылась возможность создавать страницы для нескольких значений одного поля.
Документацию попозже дополню, но сейчас примерно опишу как повторить.
Когда цена в виде слайдера — всегда передаётся два значения в url через запятую. По сути диапазон.
Условия при добавлении цены в правило для таких страниц не нужно использовать. Но для поля «Цена» нужно добавить галочку: «Поле типа „Слайдер“ (number фильтры)»
И после сохранения для подобных полей не будут собираться значения, так как их очень много может быть и словарь будет засоряться)
Для таких страниц нужно будет в ручную добавить в словарь запрос «100,500» и написать в значении «недорогие», выбрав поле «Цена». (100 — это у меня минимальная цена в разделе, а 500 — просто ограничение для недорогих). Синоним — автоматически запишется.
И при создании правила с ценой будет сформирована одна страница в таблице URL.
Из минусов такого метода, которые ещё не решил — то что нужно знать минимальную стоимость товара на странице.
С копирование правил должно быть всё понятно)
Реально ли в будущем допилить так, чтобы редирект был на страницу, если выбрана максимальная цена не более 500 рублей, или минимальная более 25000.
Было бы неплохо. Наверное.
З.Ы.
Но, лично для меня, приоритет на массовое редактирование в списках урл. Чтобы можно отключить\включить все урл у опреленных правил. А то через шифт все выделять при больших комбинациях несколько неудобно. Ну и добавление в sitemap и вывод списка ссылок (меню), тоже было бы круто.
Не устану благодарить за нужный модуль =)
Даже сейчас на демке сделал одну и ту же страницу для двух диапазонов. Можно набрать в фильтре цену от 100 до 500 и от 100 до 400, адрес будет один и тот же, а результаты разные.
При обновлении страницы у меня автоматически до 500 ставится.
В ближайших обновлениях вряд ли это будет.
Такие страницы сейчас можно сделать, чтобы без фильтра работали, передав условие из GET в параметр where в msProducts.
А по второму, так сейчас же можно почти также редактировать)
В таблице URL выбрать правило в выпадающем списке и выставить в пагинации необходимое число результатов, например 300 и выделив все — отключить)
Скорее всего скоро будет поддержка зависимости полей, чтобы не перемножать все поля друг с другом, а лишь определённые. Пока ещё не придумал, как лучше это сделать, но самому очень надо) (Чтобы все марки авто со всеми моделями не пересекать)
А по массовому редактированию, да, я так и пользуюсь сейчас.
А сниппет для карты сайта будет формировать все ссылки на все сформированные виртуальные страницы?
Хотелось бы уточнение. Как правильно создавать страницы типа s9767.h8.modhost.pro/razdel/cvet-zelenyij-i-korichnevyij (где несколько опции из одного поля)
Я разобрался как, но, по сути, там можно по разному играться с условиями. Хотелось бы знать, как делает автор. Спасибо.
Здесь необработанные значения вместе с запятыми начали записываться в словарь и сами склоняться, записывая alias) Оставалось только немного значения подправить и всё стало красиво)
Условий да, не задавал никаких для поля.
Поэтому, это из бага превратилось в фичу :)
По сути в mSearch2 свои методы фильтрации тоже требуют указания таблиц.
На демке s9767.h8.modhost.pro/ как раз поле категория — это id ресурсов.
Так как для modResource класса дополнительные пакеты подключать не нужно, то в первое поле:
«Компонент» — напишите «seofilter».
После этого компонент будет нормально всё собирать и отслеживать новые значения.
Всё равно цифры в Запросе, Значении и Синониме получаются.
Выложил сразу два обновления, включая решение вашего вопроса и ещё некоторых.
modx.pro/components/12921-the-announcement-seofilter-ncseo-for-mfilter2-and-not-only/#comment-86191
Можете обновиться :)
— Добавлена поддержка значений из других таблиц для ТВ полей
— Добавлена работа для работы полей-слайдеров (недорогие товары и т.д)
— Устранены некоторые ошибки в js и в классе
— Автоматическая генерация названия для новых ссылок при добавлении новых слов
— Лексиконы компонента переведены на английский язык
— Убраны из класса значения по-умолчанию, чтобы не было подстановок на пустых js полях
s9767.h8.modhost.pro/razdel/telefonyi/nedorogie
s9767.h8.modhost.pro/razdel/planshetyi/dorogie
Для таких страниц работает одно правило. Цену можно двигать в диапазоне, урл не поменяется.
Пример кода на Fenom в заголовке:
Цена на компонент с 1-го сентября поднимется до 1490 руб.
И в начале сентября будет большое обновление.
Следите за новостями :)
— Добавлена поддержка JSON полей, включая tvSuperSelect
— Изменён приоритет на событие onDocFormSave для поддержки TVSS
— Добавлена работа с любыми суффиксами контейнера (/,.html и т.д)
— Добавлена настройка для добавления своего суффикса к сгенерированным страницам
— Добавлена настройка переадресации на правильный суффикс
— Добавлена настройка с названием параметра пагинации, для передачи № страницы в СЕО тексты
А предыдущие обновления внесли это:
— Добавлена поддержка значений из других таблиц для ТВ полей
И параллельно компонент появился английской версии ModStore — спасибо!
en.modstore.pro/packages/ecommerce/seofilter (пока без англоязычной документации).
Благодарю за обновления! Сориентируйте, пожалуйста, когда планируете внедрить возможность формирования карты сайта на основе фильтра?
Спасибо!
На этой неделе для одного из проектов понадобится сниппет формирования меню. Как раз и карту сайта сделаю и другие «фишки», которые запланировал.
Скорее всего к концу недели выложу и допишу документацию.
Только писать скелет и в нем менять определенные слова?
Но изначально лучше сделать один SEO шаблон, и уже в таблице URL прописывать индивидуально.
Также индивидуально тексты к виртуальным страницам можно через frontendManager добавлять.
Я правильно понял вопрос?)
ps мои хотелки, пишу на всякий случай, вдруг вам пригодится.
Цель — при нажатии на фильтры mFilter2 динамично, без обновления страницы, подгружать:
1. URL — jung-pro.ru/ramki/series-a-creation/
2. Соответтствующие фильтру хлебные крошки — Jung / Рамки / A creation
3. Title — Рамки Jung A creation купить, цены | Jung-pro.ru
4. Description — Рамки Jung A creation, купить, цена, каталог, интернет-магазин, продажа, стоимость
Пример тут jung-pro.ru/vyivod-kabelya/series-a-creation/
Так будет много страниц генерированных mFilter2, с четкими URL и прочим «сео»
С хлебными крошками динамического формирования прям нет, но текст ссылки добавлять туда можно :)
Совсем скоро выложу обновление и распишу все последние возможности уже в отдельном топике.
Думаю смогу прикрутить такой функционал, так как для нового сниппета sfMenu уже сделал возможность выводить страницы только те, где есть ресурсы или где например 5 и более ресурсов.
Подсчёт ресурсов, конечно, операция долгая, на фронте естественно кэшируется, а в админке скорее всего буду привязывать к правилу, чтобы лимита хватало. Сколько у вас максимально страниц на одно правило получается?
Обновление вот-вот выйдет, а с ним и новый топик.
Возникли некоторые трудности и вопросы:
1. При пагинации получается некрасивый url (сеошники ругаются):
prntscr.com/gpslyh
это как то можно убрать или планируется? prntscr.com/gpslyh
2. У меня ну никак не хочет динамически меняться h1, заголовок, контент и т д. выбираю параметр в фильтре и ноль реакции если на, только после того как принудительно обновлю, то идет подмена (без обновления если нажать ctrl+U то в коде все подставляется правильно, но на фронте без обновления странички как я сказал ничего не происходит). Вроде бы все вызовы не кэшированные, не пойму в чем проблема. Ресурс не кэшируемый
3. Так же если в алиас пишу ms|price==price то на фронте пропадает слайдер (http://prntscr.com/gpsk11) цен и стает как чекбокс (http://prntscr.com/gpskk4 )
4. Еще не пойму как это убрать prntscr.com/gpso14, если зайти в исходный код то этого нет, только визуально видно как на скрине
Сам вызов вот prntscr.com/gpsl0z
По порядку отвечу:
1. Встречался с подобным запросом ещё до релиза) Это не совсем, конечно, относится к компоненту. Но проблема кроется в том, что pdoPage ловит все GET-параметры. Там несколько вариантов есть решения: наследовать класс, переопределить метод makePageLink и прописать в системных настройках, либо же пытаться обработать строку с готовым url через сниппет модификатор, который будет проверять на наличие GET/REQUEST параметров, на их причастность к SeoFilter на текущей странице и удалять лишнее))
Пока в самом компоненте такого предусмотрено не будет. Но если это прям проблема для многих, то скорее всего придумаю что-то в виде инструкции.
2. У вас даже на скриншоте видно эту проблему. Плейсхолдеры нужно оборачивать в классы, для контент поля класс по умолчанию ".sf_content", для h1 — ".sf_h1" и т.д.
3. При указывании alias, нужно изменить параметр для названия чанка. У вас для цен это будет:
4. А добавление в title регулируется системной настройкой в разделе SeoFilter «Добавлять SEO-заголовок через разделитель».
Вывожу так:
prntscr.com/gptsav
Так же при пагинаци, в исходном коде или после обновления добавляется слово «Страница 2», во визуально не видно по умолчанию
Вызов prntscr.com/gptrnq, у Вас на демо если не ошибась таже проблема
Поисковики же должны различать как-то, что это страницы с пагинацией с разным заголовком.
В yandex постоянно натыкаюсь, что какой-нибудь запрос на такой то странице найден на modx.pro.
Для того чтобы заголовок возвращался назад надо в системных настройках SeoFilter в настройке «Поле, где хранится Заголовок H1» seofilter_h1 прописать pagetitle.
Еще момент по контенту.
1. Если контент категории пустой а у параметра фильтра задан, то после того как снимаем выбор с фильтра, то пустой контент не отдается обратно, а остается тот, что был последним в фильтре
В ситуации если контент категории заполнен, то возвращается контент категории как и нужно
2. Как быть в ситуации, когда контент категории заполнен и есть уникальность (текст и юрл категории). Но, если мы выберем параметр в фильтре в котором нет сое текста, то получается следующее,
юрл меняется а текст остается с категории, получается текст уже теряет уникальность, так как один и тот же текст доступен по разным юрл (а может быть и по десяткам). Это как в случае с пагинацией, правильно когда при переходе на каждую последующую страничку, текст скрывается и не дублируется. Сейчас для пагинации хорошо работает prntscr.com/gpunz4 (скрывает текст на всех последующих страницах пагинации). Можно ли как то применить тот код для скрытия контента при пагинации (в случае когда мы фильтруем по параметру у которого задан уникальный текст), одним словом связать этот код prntscr.com/gpunz4 с этим prntscr.com/gpupxa (потому как сейчас приходится теперь отказываться от prntscr.com/gpunz4 )
И тогда будет возвращаться. Просто есть проверка пустой ли ответ или нет.
2. Здесь тот же символ пробела для правила можно поставить, чтобы на пустой текст заменять.
И для того чтобы только на первой странице были сео-текста, пропишите в настройке «Имя переменной пагинации в каталоге...» (seofilter_page_key) значение page
Тогда в контенте правила и других полях сможете писать так:
Здесь параметр {$page} будет содержать номер страницы.
С пробелами помогло, спасибо). А можно контент скрыть если 2 и больше параметра скрыто в фильтре?
Что значит 2 и больше параметра скрыто в фильтре?)
Что значит 2 и больше параметра скрыто в фильтре?) — опечатка, не срыто а выбрано
prntscr.com/gpxrrr
Кстати, конструкции вроде [[*pagetitle]] вроде бы не должны работать, там лучше использовать так: {$id|resource:'pagetitle'}
$id — это id реальной страницы.
А на счёт 2 и больше параметров зависит от правил. Если для одного из двух есть правило и будет стоять галочка «Базовое правило», то будет показываться текст этого правила.
Если базовых нет и правила состоящего из двух этих полей, то выведется контент страницы)
Кто-то через robots закрывает все страницы с get параметрами)
modx.pro/components/13407-seofilter-the-long-awaited-update-menu-sitemap/
Просто не совсем понятно, зачем два фильтра тогда.
С mSearch2 поддерживается работа в режиме Ajax (замена всех текстов, заголовков и т.д.).
Без него сможете выводить на сформированных страницах, с уникальными текстами необходимые ресурсы через pdoResources. В этом случае все переходы только по ссылкам.
Сам SeoFilter выставляет GET/REQUEST параметры для их дальнейшей обработки mFilter-у или же любому кастомному сниппету.
В данном случае мне нужно было каталоги сделать как меню с подсчетом товаров.
Ну определенный вид вывода всего SEO.
Кто сталкивался?
modx.pro/components/13407/ вот здесь внизу про sfLink.
sfLink выводит по умолчанию сформированное название ссылки и её адрес, при передаче в него параметров, которые совпадают с синонимом полей в переданном(ых) правилах в параметре rules.
Для формирования меню с подсчётом вообще есть сниппет sfMenu.
настраивал по документации, все получается, но когда берешь копируешь эту ссылку с цветом: site.ru/catolog/krasnyj и переходишь по ней компонент отдает 404 ошибку.
.htaccess стандартный пробовал ставить, думал проблема в нем (подставляет в конце категории слеш на конец, а ссылки генерируются без него, срабатывал редирект), но нет все равно отдает 404 ошибку
prntscr.com/hiv49i
prntscr.com/hiv4iq
И еще вопрос. Если у меня уже есть категории для сео, то как мне добиться нужного мне url? Тут нет возможности добавить приставку prntscr.com/hiv5wb
придется переделывать структуру сайта, что очень бы не хотелось делать. мож есть возможность добавить сюда второе поле, которое можно править?
По 404 ошибке напишите мне в тех поддержку на modstore с указанием доступов к сайту.
Но скорее всего другой плагин приоритетом перебивает, Redirector или что-то подобное.
По второму вопросу свободно изменять нельзя, только если оставить в Url параметр: /style-krasnyi.
Это немного изжиток самых первых версий, думаю, что можно будет и отказаться в будущем от строгого формирования и разрешить свободно формировать адреса.
из приложений было установлено
неоформленные заказы, минишоп, mSearch2, msImportExport в принципе и все.
>> Url параметр: /style-krasnyi — нужно так: po-styluy/krasnyi
чтобы url был такой krasnyi-chernyj и товары отобразились красные и черные
вообще как сделать перемножение всех параметров? Вот посмотрите как работают фильтра на этом сайте divaroom.ru/platya/ он на опенкарте. По сути многим как раз нужен вот такой функционал. Не важно будет ли он работать с перезагрузкой, или на аяксе, главное чтобы были физически доступны виртуальные страницы, которые нужны роботу для продвижения.
А в качестве адреса и значения — в удобном для себя виде.
Гадать почему была ошибка 404 не могу, будут доступы — будет и ответ :)
.htaccess вообще не должен никак участвовать на modhost.pro
там перемножение всех праметров идет. это лучше будет отрабатывать с точки зрения сео.
в твоем же все в ручную нужно делать. доработать можно?
На самом деле для поисковика страницы с заголовками буду считаться разными?
1. «Красные, розовые, коралловые, малиновые, сиреневые, фиолетовые платья»
2. «Красные, розовые, коралловые, малиновые, синие, сиреневые, фиолетовые платья»
Я тут сочетанием, используя комбинаторику, насчитал что при использовании 10 цветов дополнительно 1000 страниц. А при 15 цветах страниц уже будет больше 32 тысяч. А а сайте примере аж 19 цветов!
Поэтому если уж такой функционал делать, то как правило, которое не будет генерировать ссылки а лишь динамически подставлять все значения через запятую. Соответственно и в текстах будет всё через запятую (как впрочем и на примере).
Заметил, что ещё они умудряются пересекать «множественное цветовое поле» с другим полем. В общем в меню или в карту сайта такие адреса точно нет смысла закидывать :)
Если действительно есть желание для формирования таких страниц — пишите мне в скайп waytodesign или на почту через профиль, обсудим более предметно.
1. Подскажите а данное дополнение будет работать с таблицами ms2gallery? теги в частности.
2. Можно ли формировать и приязывать правила без привязки к полям таблицы, в ручную например. (подобно как Virtual Page.
3. Не будет конфликтовать с дополнением virtual page?
Спасибо.
1. Дополнение изначально строилось, чтобы работать с любыми объектами, но в текущей версии буквально пару строк нужно будет подправить. В обновлении, над которым работаю уже поправил.
Есть кейс по интеграции дополнения со старым Gallery + mFilter2.
Думаю и ms2gallery можно сделать SEO-шной)
2. Если я правильно понял суть — то да. Вы можете создать поле, хоть с несуществующим классом или же отключённым. Потом в ручную добавляете значения в словарь, привязывая их к полю. И добавляете в правило.
То есть получилось правило без привязки к каким-то определённым полям. (но к странице нужно обязательно привязать) Сформируются ссылки, которые плагин компонента будет отлавливать и выставлять GET и Request параметры.
3. Virtual Page я ставил давным давно и не особо разбирался что и как там устроено. Возможно и будут конфликтовать, но это решается изменением приоритетов у событий в плагинах.
SeoFilter лучше ставить вперёд, так как если он «свою» страницу не найдёт — отдаст следующему плагину.
Если есть возможность не подскажите как?
Буду благодарен за подсказку как автоматически менять каноникл
Есть ли смысл и этот параметр менять через ajax?
Непосредственно canonical на демке выставляет pdoPage с параметром setMeta=`1`
Но всегда можете отключить его и в ручную прописать так:
Приведу пример на Fenom.
Не забудьте позаботиться о том, чтобы у ссылок были сформированы названия.
Для этого есть шаблон в правилах и галочка перегенерировать.
К примеру, здесь используется mFilter2?
Суть: нужно настроить ajax-фильтр по tv-параметрам (тип ввода: множественный выбор). Купили SeoFilter, а mFilter2 не установлен, он тоже нужен или есть еще какой-то способ?
Что имею на данный момент: фильтр с генерацией чпу-ссылки «на лету» (в зависимости от выбранных значений) и плагином, который обрабатывает эту виртуальную ссылку и возвращает результат.
— тут не мой SeoFilter используется.
Для ajax фильтрации самое простое — приобрести mSearch2.
Но, конечно, можно и самостоятельно написать фильтр и «скрестить» с SeoFilter.
Хотя, напишите мне в поддержку, хочу проверить одну наработку, так как у вас уже есть свёрстанный фильтр.
Скажите пожалуйста, компонент позволяет сделать один и тот же товар (ресурс/продукт) доступным по разным ссылкам?
Это нужно для того, чтобы не было дублей. Иначе у нас один и тот же товар или набор товаров со схожими свойствами, будет выдаваться на странице категории по разным фильтрам…
Например:
Имеем товары: раковина в разном исполнении (керамика, чугун, нержавейка, красная, зеленая), унитаз в разном исполнении (керамика, чугун, нержавейка, красный, зеленый)
Мы имеем в категории /rakovina/keramika/krasnaya/ и в категории /rakovina/chugun/zelyonaya/ ссылку на одну и ту же раковину (товар).- один и тот же URL
А нужно чтобы она была доступна по разным ссылкам и с установленными на этой странице характеристиками, скажем /rakoviny/keramicheskaya-krasnaya-vendor-model и /rakoviny/chugunnaya-zelyonaya-vendor-model…
Позволяет ли данный компонент это сделать или он только с категориями работает?
Просто мне показалось странным, мне наши сеошники говорят, что дубль — это когда один и тот же товар доступен по разным ссылкам, а вы пишите совершенно обратное…
А я хочу иметь несколько товаров из одного — то есть, например, если у нас есть раковина в разных исполнениях (чугунная, нержавейка, керамика, красная, зеленая) — это вроде одна страница с разными опциями/модификациями. То есть нужно чтобы разные комбинации фильтра на странице «категории товара» выдавали на эту раковину ссылки в соответствии с установленным фильтром. А также при переходе по этой ссылке у нас получалась страница с метаданными (h1, title, description, content) в соответствии с URL и опции ставились сразу, например в «красная» и «чугунная»…
Иначе, если у нас товара мало — то получается содержимое разных страниц (раковины чугунные, раковины красные и тп), читай выдача фильтра, — одинаковое — все та же одна раковина…
— Мне кажется, что если это не поддерживается, то нужно нечто вроде генератора товара по прототипу.
Например задаем в прототипе опции, цвета и тд, и при сохранении (в плагине ondocformsave) в каталоге перегенерируется весь товар в категории, к которой относится прототип… ну то есть склоняюсь к физически существующим ресурсам-товарам…
Может покажется на первый взгляд неудобно управлять этим, но я прикинул, что так создавать модификации на одной странице — та же работа по заданию разных параметров, фотографий… только в случае генератора:
— у нас снимаются ограничения по нехватке полей (напр. content)
— скорость работы увеличивается за счет отсутствия работы в исключениях (onpagenotfound) — то есть доступ осуществляется стандартным функционалом модекса…
ну в категориях, конечно без преобразования параметров в путь в URL (?category=racoviny&color=red => /racoviny/red/) не обойтись. отличие лишь в том, что перейдя по этой ссылке — такая категория будет существовать в реальности и нужно использовать одинаковый шаблон и parents устанавливать ОДИНАКОВЫЙ, чтобы была возможность из нее в фильтре «шагать» вверх по иерархии (URL)…
Если что-то непонятно, что написал, могу отдельно пояснить, а то как-то наверное написал не очень понятно… но я старался )
Вообще, компонент никак не влияет на товары.
Пока Вы первый, кто спрашивает подобное)
Тут достаточно сложная интеграция и не всегда получится сделать какое-то определенно правильное поведение.
Что будет, если выбрать в фильтре два цвета, под которые есть разные модификации товара?
Показывать одну карточку товара или две?)
Тут надо больше смотреть на возможность связать это всё с msOptionsPrice.
Также расширять класс фильтрации и вообще использовать свою обёртку для mFilter2, чтобы подмешивать виртуальные товары))
В общем, из коробки это не появится, но как индивидуальная работа — можно сделать)
В этом случае у нас появляется много товара и много страниц и модификации у нас будут представлены ресурсами и, соответственно, ссылками (при выборе модификации товара в карточке товара)…
Думаю для СЕО это хорошая идея, как считаете? Ведь эти модификации будут создавать дополнительный вес для сайта, что не происходит, например, если мы модификации делаем компонентом msOptionPrice или каким-то подобным, ведь там модификация не видна поисковой системе…
я как раз противопоставляю эту идею использованию msOptionPrice…
Как идея вам такая?
В общем, «из коробки» функционала для ссылок в чекбоксах нет.
На указанном выше сайте сформировал такой URL переходя по ссылкам:
keramika-russia.ru/selection/filter/fabric-is-kerama_marazzi/category-is-keramogranit/type-is-dekor/use-is-dlya_pola/apply-is-dlya-gostinoy/size-is-42x42/pattern-is-ornament/
Как мне кажется, избыточны такие страницы. А Вам подобная вложенность нужна?