Анонс SeoFilter - ЧПУ+SEO для mFilter2 и не только

[SeoFilter] — удобное управление ЧПУ ссылками, мета-тегами и генерация текстов.
[Купить компонент в 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) — обновление компонента.
  • Добавлено копирование правил
  • Шаблоны для названия ссылки и галочка перегенерировать
  • Изменён механизм подсчёта потомков и выборок
  • Добавление правил с учётом полей-слайдеров (цена и т.д)
  • Две новые настройки для названия ссылки
И также обновил демку, добавив текста с подсчётами.
Евгений Шеронов
28 июля 2017, 12:12
10
7 822
+20

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

Роман Ильин
28 июля 2017, 15:34
0
Оооо! Работаю над похожим функционалом последние три недели. А тут и компонент подоспел со всеми плюшками! Спасибо. Становлюсь в очередь.
Дмитрий Зарубин
28 июля 2017, 15:38
0
Евгений, всегда пожалуйста!)
Мы кстати свой тоже значительно доработали и помудрили с быстродействием. Отрабатывает даже на 40000 товаров в бд на отлично. Можно глянуть на работу тут vivaset.ru/avtomaticheskie-vyiklyuchateli/.
Кстати, вдруг вам пригодится идея: в самой нижней части у нас выводится блок со ссылками, которые читают поисковики. В нашем случае мы формируем их записывая значения в плейсхолдер с массивом в чанках фильтров. Не уверен что это получится нормально на смарти. Но на феном работает отлично.
    Евгений Шеронов
    28 июля 2017, 20:09
    +1
    Да да, что-то вроде такого блока в будущем планирую сделать, но он будет даже больше для людей :)
    В основном, решая такие задачи:
    Допустим есть категория ванны, где фильтры по материалу, по бренду, по размеру, форме и т.д.
    По умолчанию в этой категории, можно будет показать {n} самых популярных ссылок, таких как:
    — Акриловые ванны
    — Ванны Rocca
    — Ванны 170x70.

    При выборе акриловых ванн (либо в фильтре, либо при переходе по ссылке) на месте этих ссылок появятся другие, уточняющие популярность непосредственно в акриловых ваннах:
    — Акриловые ванны Riho;
    — Прямоугольные акриловые ванны;

    При этом, скорее всего можно будет задавать шаблон для генерации названия ссылки, изменять порядок, проставлять картинки, например)

    А так и у меня всё работает на Fenom, и по скорости от количества товаров вообще никак не должно зависеть, лишь только добавляя единожды все слова в справочник. Обычно отрабатывает быстрее, чем mSearch2 возвращает результаты.

    Из нового у вас я заметил группировку всех ссылок к текущей странице, тоже можно сделаь, для этого уже всё предусмотрено, кому-то точно будет полезным. Спасибо за идею!
    Алексей Андреев
    18 августа 2017, 12:27
    0
    А каким образом у вас реализована смена SEO-текста внизу, под товарами? Это уже физические страницы в дереве?
      Дмитрий Зарубин
      18 августа 2017, 15:02
      +1
      Нет. Это реализовано посредством MIGX ТВшки в ресурсе с фильтрацией. В поле прописана ссылка на ЧПУ страницу и всё что надо для сео. Отработка идёт как сниппетом при загрузке страницы, так и ajax на событие mse2_load.
      Евгений Шеронов
      18 августа 2017, 17:58
      +1
      Если что, то в компоненте SeoFilter такая поддержка текстовых полей по умолчанию. Если установлен ACE, то он будет подгружен для поля content, где очень гибко можно настроить тексты, не создавая ресурсов)

      Наверно на демке мне стоит раскрыть все возможности компонента)
        Алексей Андреев
        18 августа 2017, 18:05
        0
        Хорошо бы описать. Такая гибкость даёт еще больше преимуществ =)
        А можно вкратце пример, какой код будет в редакторе?
Сергей Визиряко
28 июля 2017, 18:12
0
Отличный компонент, в настоящее время такой нужен. Жду релиза.
man
man
28 июля 2017, 19:05
0
Также в планах сделать сниппет для формирования меню и сайты карта
Я правильно понимаю, что в карту сайта можно будет добавлять скомбинированные вашим компонентом страницы)?
з.ы. забавная опечаточка вышла)
    Евгений Шеронов
    28 июля 2017, 20:28
    +1
    Да, как минимум добавляя в pdoSitemap в параметр &tplWrapper перед вызов сниппета (sfSitemap), который будет отвечать за добавление ссылок в таком же формате.

    Но прям в первом релизе не планировал, но если времени хватит, то добавлю)
Дмитрий
28 июля 2017, 21:31
+3
Евгений, круто! Это просто гениально! Этот компонент в разы увеличивает функционал и привлекательность Modx. Супер! С нетерпением жду релиза. 100% приобретаю!
but1head
29 июля 2017, 03:47
+5
Прям способ довести сеошников до экстаза без регистрации и смс :)
Александр
29 июля 2017, 11:18
0
офигенно
Stan Ezersky
29 июля 2017, 15:27
0
Хорошее предложение, но как будет работать выбор множественных критериев? К примеру, выбор пары-тройки брендов и к ним ещё по несколько параметров?

Выше привели пример, но всё это хорошо, когда ищется по 1 критерию в каждом фильтре
    Евгений Шеронов
    29 июля 2017, 16:19
    +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-шник просто замучается составлять правила и шаблоны на такие страницы.
    Поэтому такая настройка будет лишь нужна по мере-необходимости, и чаще всего для двух значений одного поля, без использования второго поля)
    Также это нужно для объединения нескольких значений одного поля, пример:
    товары есть тёмно-серого цвета и светло-серого, а можно будет сделать страницу с товарами серого цвета.
      Юрий
      26 сентября 2017, 11:57
      0
      С Вашим примером «Красные телефоны Nokia и HTC» — согласен, но бывает и много других, более актуальных, которые в сумме много трафика дадут…

      Вот идеальный пример, когда 2 параметра идеально работаю www.shop-project.ru/catalog/2-etazh-doma/proekt/ploshad-from-200-to-300/material-is-kirpich/, двумя параметрами можно много НЧ запросов собирать на обширных тематиках. В данном примере мы фильтруем по материалу стен и квадратуре. Получается очень хороший тайтл и H1 «ПРОЕКТЫ ДВУХЭТАЖНЫХ ДОМОВ, ДОМОВ ИЗ КИРПИЧА, ПЛОЩАДЬЮ ОТ 200 М2 ДО 300 М2» и.т.д. на том сайте какие угодно вариации, они очень много запросов собирают к примеру дом из кирпича с гаражом.

      Так что было бы здорово, если хотя бы по двум разным параметрам можно было бы сделать)
        Евгений Шеронов
        26 сентября 2017, 12:03
        0
        Так можно же сделать правило с двумя разными параметрами или даже с тремя или с десятью :)

        Есть ещё фишка, чтобы сделать с двумя значениями одного параметра, но там надо со словарём повозиться)

        «ПРОЕКТЫ ДВУХЭТАЖНЫХ ДОМОВ, ДОМОВ ИЗ КИРПИЧА, ПЛОЩАДЬЮ ОТ 200 М2 ДО 300 М2» такой тайтл я запросто динамически сформирую :)
          Юрий
          26 сентября 2017, 14:29
          0
          а как это сделать, есть где почитать? Хочу для теста связать эти параметры prntscr.com/gputk5 (чтобы h1, тайтл и юрл были нормальными). Если делаю так, то вообще все перестает работать prntscr.com/gpuzlb
            Евгений Шеронов
            26 сентября 2017, 14:41
            0
            Правильно делаете)
            В правилах в текстах пишите просто в таком виде:
            Гаражи из {$material_r} площадью {$ploshad}
            На скриншоте не понял, что означает garag. Все переменные берутся из синонима поля.
            Окончание _r — означает родительный падеж, если включено склонение в настройках)
              Юрий
              26 сентября 2017, 17:55
              0
              Извините, но как то я запутался, ничего не получается…
              К примеру, пытаюсь связать параметр Общая площадь и Комнаты prntscr.com/gpxjhi
              Захожу в правило «Общая площадь» нужно ли нажать добавить поле «комнаты» prntscr.com/gpxk5y так prntscr.com/gpxlgb
              После заполнил вкладку СЕО prntscr.com/gpxtx4
              На фронте теперь комбинация заработала prntscr.com/gpxv01 но если оставить только выбор на «Общая площадь» — то перестало работать (h1, тайтл не подставились)
                Евгений Шеронов
                26 сентября 2017, 20:27
                0
                Нужно было скопировать правило общая площадь и туда добавить поле комнаты.
                Тогда грубо говоря оно будет называться «Общая площадь + Комнаты»

                Если ещё есть вопросы или не разберётесь, то пришлите мне через поддержку дополнений modstore.pro/office/support#office/support/add
                данные для входа, посмотрю и поправлю так как вам нужно :)
Дмитрий
29 июля 2017, 16:24
+1
Несколько раз мне уже предъявляли за то, что «в этом вашем MODX как в Битрикс SEO URL не сделать, что вы нам предлагаете». Хе-хе-хе.
Наумов Алексей
31 июля 2017, 09:07
+2
Будет интересно посмотреть :)
Честно говоря, у меня уже более года есть компонент, который даже называется так же =) Трудиться, работает на нескольких сайтах, но идеальным его не могу назвать пока, нюансов так много всплывает в процессе его настройки.
    man
    man
    31 июля 2017, 10:34
    0
    Аналогично, только называется он у меня не так, нет плюшек с morpher, да и собрал я его совсем недавно)… вот тестирую на нескольких маленьких проектах… и честно говоря, готовым его назвать тяжело, слишком много мелких и не очень нюансов всплывает. Надеюсь данное решение будет более полным и что самое важное будет развиваться. Покупать однозначно буду, как минимум для изучения =)
    Павел Гвоздь
    31 июля 2017, 13:08
    0
    Прикольно. Видимо название достаточно распространенное, ибо у меня тоже есть компонент seoFilter, около года валяется, на одном моем проекте задействован по-полной. Правда функционал несколько иначе работает, в частности, ему вообще не нужен mFilter2.
      Евгений Шеронов
      31 июля 2017, 16:28
      0
      Первый мой плагин, больше года назад тоже так назывался :)
      А потом долго думал над названием и лучше варианта не придумал.

      Компонент и сейчас может работать без привязки к mFilter2, также соберёт словарь, сможет формировать ссылки на страницы и передавать им GET/REQUEST-параметры с выставлением плейсхолдеров.

      Скорее всего даже и без miniShop2 будет работать на полях ресурса и ТВ-полях, проверю после релиза и укажу в документации)
MODXyou
04 августа 2017, 11:34
0
Добрый день!

По описаниям отличный плагин! Посмотрим его в деле.
Но возникли вопросы:
1. Будут ли снижены цены первым покупателям?
2. Какая скорости работы плагина. Смотрел скорость по Гуглю в вашем примере — более 1 сек. Это очень долго. Кешируется ли ваше дополнение?

Спасибо жду ответа
    Евгений Шеронов
    04 августа 2017, 12:32
    +2
    Добрый день!
    Компонент уже отправлен на проверку, но на акционный период не попадает.

    1. Цена для первых покупателей будет 990 рублей, считайте что -30% от цены 1490, которая будет после некоторых обновлений :) Про обновления напишу, как компонент появится в магазине, дополнив тему или в новом топике.

    2. Не знаю, про какой пример говорите, здесь я ничего ещё не выкладывал)
    Само по себе дополнение при работе не отнимает скорость и даже не прибавляет запросы на странице с фильтром, как минимум после первой генерации страницы в кэш. Но и при первом запуске не замечал.
    Увеличение количества запросов есть, когда уже срабатывает плагин на подобный url: "/razdel/sinij/planshetyi".
    Скорость при этом как-то значительно не отличается. Всё в пределах погрешности ~0.01 сек.

    В личку вам отправлю тестовые сайты, где стоят последние версии. А на днях и демку нормальную сделаю)
    Отдельного кэширования в дополнении нет, это всё таки динамические данные, которые постоянно могут обновляться.
Павел
09 августа 2017, 04:13
0
Когда можно будет приобрести?
Максим
09 августа 2017, 19:26
+1
Таки годнота ?)
Приеду домой потестю и куплю. Спасибо.
Максим
10 августа 2017, 15:04
+2
Потестил. Вердикт — годнота =)
Только у меня почему-то не получилось задать фильтры с условием с ценой.
0) joxi.ru/brRe0JdtQV5k8A
1) joxi.ru/RmzYd1vCWGqQZr
2) joxi.ru/52an3bJCGZLBMA (http://joxi.ru/a2XW5b7tyZEJ7m)
Чет неправильно делаю?

З.Ы.
Может будет возможно\удобно сделать возможность копирования правила?
    Евгений Шеронов
    10 августа 2017, 15:23
    0
    Спасибо за обратную связь!
    Да, с числовыми полями я что-то намудрил :)
    Постараюсь сегодня-завтра поправить, чтобы можно было создавать страницы: недорогие товары или премиальные товары)
    И по копированию правила — скорее всего да, тоже сделаю. Думал об этом)

    Но уже сейчас можно открыть два правила одновременно и расположить рядом на экране, копируя тексты друг-друга.

Дмитрий
10 августа 2017, 23:54
0
Евгений, благодарю за отличный компонент! Супер решение! Уже приобрел и изучаю.

Поделитесь, пожалуйста, планами о развитии решения на ближайшее будущее.
    Евгений Шеронов
    12 августа 2017, 21:14
    +1
    Спасибо! Прошу прощения, немного задержался с ответом!
    Ещё будет 2 обновления до повышения цены:

    В первом ближайшем обновлении:
    1) Правка с созданием страниц по числовым полям (в виде слайдера которые);
    2) Копирование правил;
    3) Шаблон для текстового названия url-адреса. (чтобы ещё и текст правильный выводить в меню).

    Во втором:
    1) Сниппет для формирования меню (по своим параметрам);
    2) Сниппет для карты сайта;
    3) Возможно текстовый шаблон для добавления ссылки в хлебные крошки;

    Можете ещё что-то предлагать, что могло бы пригодится всем)
      Максим
      14 августа 2017, 14:00
      0
      А есть ли возможность (или смысл делать подобное), создание кастомных полей в словаре (или в таблице УРЛ).
      Не знаю смогу ли правильно объяснить.
      Возможность создать список полей к странице с различными значениями и параметрами. Т.е. иметь возможность дополнительно создать поле, например, с изображением и вывести его при определенном значении фильтра.
      Правда не знаю, есть ли в этом какой-либо толк.
      Дмитрий
      16 августа 2017, 16:50
      +2
      Евгений, благодарю за ответ! Супер!

      У меня вопрос по пункту «1) Сниппет для формирования меню (по своим параметрам);»

      Чтобы избежать разночтений, я задал его в видеоформате, на примере. Ознакомьтесь, пожалуйста: youtu.be/5EfaOLwvNO4

      P.S. А к каким срокам ждать этих обновлений?
        Евгений Шеронов
        16 августа 2017, 18:16
        +1
        Не ожидал настолько круто оформленных вопросов) Спасибо — приятно!)

        Отвечу на вопрос про сниппет: Нет, этот сниппет будет для других целей, а ля pdoMenu)

        Но то, что показано на видео можно уже и сейчас сделать.
        Ради общего интереса сделал на демке похожий функционал, как на видео s9767.h8.modhost.pro/razdel/

        Работает с учётом относительности для цвета и категории.

        Всего лишь пришлось подкорректировать чанк. Решение не самое изящное, но чтобы в чанках mFilter2 были параметры для ссылок, их учёт относительно от правил, переданных параметров и условий — придётся не слабо переделать исходники mSearch2, что не позволительно)
        Конечно можно и копию mFilter2 переделать под себя и классы переопределить, но это уже совсем не стандартная доработка)

        Что радует при моём подходе — скорость и количество запросов как-то особо не изменились.

        Сам код одного чанка: (во втором по сути меняется порядок ссылки и get-параметр)
        <label for="mse2_{$table~$deluimeter~$filter~'_'~$idx}" class="{$disabled}">
            {set $link = ''}
            {if $.get['cvet']}
                {set $word = $.get['cvet']|sfWord:13}
                {if $word && $word != $value}
                    {set $link = '/cvet-'~$word['alias']}
                {/if}
            {/if}
            {set $cat = $value|sfWord:12}
            <input type="checkbox" name="{$filter_key}" id="mse2_{$table~$deluimeter~$filter~'_'~$idx}" value="{$value}" {$checked} {$disabled}/>
            {if $cat && $cat != $value} //можно добавить " && !$disabled", чтобы ссылка была только на реальную страницу
                <a href="{9|url}{$cat['alias']}{$link}">{$cat['value']}</a>
            {else}
                {$title}
            {/if}  <sup>{$num}</sup>
        </label>

        Но есть и минусы — чанки в фильтре не обновляются через ajax.
        И убирать ссылки на лету при label disabled можно только пробегаясь своим JS скриптом)
        Также нужно изменять ссылку при убирании одного get-параметра.

        Вывод: такое решение если и может жить, то только для ссылок «первого уровня»:
        <label for="mse2_{$table~$deluimeter~$filter~'_'~$idx}" class="{$disabled}">
            {set $word = $value|sfWord:13}
            <input type="checkbox" name="{$filter_key}" id="mse2_{$table~$deluimeter~$filter~'_'~$idx}" value="{$value}" {$checked} {$disabled}/>
            {if $word && $word != $value } //аналогично можно и с " && !$disabled"
                <a href="{9|url}cvet-{$word['alias']}">{$word['value']}</a>
            {else}
                {$title}
            {/if}  <sup>{$num}</sup>
        </label>
        И естественно определяя для каждого поля в mFilter2 свой чанк row.
        P.S. Возможно поисковикам хватит и такой грубой реализации но пользователей может запутать.

        И по обновлениям — первое со дня на день. Второе скорее всего на следующей неделе.
        Максим
        20 августа 2017, 00:41
        0
        Ого, видео-вопрос)
        Мне даже как-то неудобно, что я, как холоп, просто текстом вопросы набираю… =)
          Евгений Шеронов
          20 августа 2017, 16:57
          0
          Максим, выложил обновление, где добавил копирование правил и реализацию страниц типа: Недорогие товары.
          На демке страница с дешевыми товарами s9767.h8.modhost.pro/razdel/nedorogie

          Правда не очень хорошая реализация вышла именно по недорогим товарам. Подумаю как ещё решить, но в целом в новом обновлении открылась возможность создавать страницы для нескольких значений одного поля.

          Документацию попозже дополню, но сейчас примерно опишу как повторить.
          Когда цена в виде слайдера — всегда передаётся два значения в url через запятую. По сути диапазон.
          Условия при добавлении цены в правило для таких страниц не нужно использовать. Но для поля «Цена» нужно добавить галочку: «Поле типа „Слайдер“ (number фильтры)»


          И после сохранения для подобных полей не будут собираться значения, так как их очень много может быть и словарь будет засоряться)

          Для таких страниц нужно будет в ручную добавить в словарь запрос «100,500» и написать в значении «недорогие», выбрав поле «Цена». (100 — это у меня минимальная цена в разделе, а 500 — просто ограничение для недорогих). Синоним — автоматически запишется.



          И при создании правила с ценой будет сформирована одна страница в таблице URL.

          Из минусов такого метода, которые ещё не решил — то что нужно знать минимальную стоимость товара на странице.

          С копирование правил должно быть всё понятно)
            Максим
            22 августа 2017, 14:48
            0
            Получается, страница будет создана только под один диапазон.
            Реально ли в будущем допилить так, чтобы редирект был на страницу, если выбрана максимальная цена не более 500 рублей, или минимальная более 25000.
            Было бы неплохо. Наверное.

            З.Ы.
            Но, лично для меня, приоритет на массовое редактирование в списках урл. Чтобы можно отключить\включить все урл у опреленных правил. А то через шифт все выделять при больших комбинациях несколько неудобно. Ну и добавление в sitemap и вывод списка ссылок (меню), тоже было бы круто.
            Не устану благодарить за нужный модуль =)
              Евгений Шеронов
              23 августа 2017, 11:59
              0
              На счёт первого, в принципе реализуемо скорее всего.

              Даже сейчас на демке сделал одну и ту же страницу для двух диапазонов. Можно набрать в фильтре цену от 100 до 500 и от 100 до 400, адрес будет один и тот же, а результаты разные.
              При обновлении страницы у меня автоматически до 500 ставится.

              В ближайших обновлениях вряд ли это будет.
              Такие страницы сейчас можно сделать, чтобы без фильтра работали, передав условие из GET в параметр where в msProducts.

              А по второму, так сейчас же можно почти также редактировать)

              В таблице URL выбрать правило в выпадающем списке и выставить в пагинации необходимое число результатов, например 300 и выделив все — отключить)

              Скорее всего скоро будет поддержка зависимости полей, чтобы не перемножать все поля друг с другом, а лишь определённые. Пока ещё не придумал, как лучше это сделать, но самому очень надо) (Чтобы все марки авто со всеми моделями не пересекать)
                Максим
                23 августа 2017, 14:47
                0
                Ну тогда получается просто одна страница на два диапазона. Если не определять шаг у ui-слайдера, то попасть ровно на 400 или 500, довольно сложно. Так что если будет возможность редиректить на страницу в диапазоне от 400 до 500, будет очень круто.

                А по массовому редактированию, да, я так и пользуюсь сейчас.
Дмитрий
16 августа 2017, 18:31
0
Евгений, класс! Благодарю за развернутый ответ!

А сниппет для карты сайта будет формировать все ссылки на все сформированные виртуальные страницы?

    Евгений Шеронов
    16 августа 2017, 21:03
    +2
    По умолчанию да, а также скорее всего с возможностью ограничить по некоторым правилам или даже с подсчётом (если нет потомков — то нет и ссылки).
Максим
21 августа 2017, 12:56
0
Приветствую.
Хотелось бы уточнение. Как правильно создавать страницы типа s9767.h8.modhost.pro/razdel/cvet-zelenyij-i-korichnevyij (где несколько опции из одного поля)

Я разобрался как, но, по сути, там можно по разному играться с условиями. Хотелось бы знать, как делает автор. Спасибо.
    Максим
    21 августа 2017, 13:35
    0
    А не все. Вопрос снимается. Тупил. Достаточно, просто в словарь добавить.
      Евгений Шеронов
      21 августа 2017, 14:02
      +1
      А эту возможность я случайно обнаружил, когда в чанках фильтра было:
      {set $word = $.get['cvet']|sfWord:13}
      Здесь необработанные значения вместе с запятыми начали записываться в словарь и сами склоняться, записывая alias) Оставалось только немного значения подправить и всё стало красиво)

      Условий да, не задавал никаких для поля.
      Поэтому, это из бага превратилось в фичу :)
Алексей Андреев
28 августа 2017, 18:01
0
Пытаемся соединить воедино SHK + mSearch2 + Seofilter. Основные свойства, по которым хотим фильтровать, лежат в TV типа «Список ресурсов», т.е. в базе они хранятся в виде ID ресурса. Для mSearch настроили, чтобы выводились pagetitle вместо id, а вот по Seofilter возник ступор. Он и в словарь ID забирает. Что тут можно придумать?
    Евгений Шеронов
    28 августа 2017, 21:59
    +1
    Для этого есть замечательная настройка для поля — «Значения в другой таблице».
    По сути в mSearch2 свои методы фильтрации тоже требуют указания таблиц.

    На демке s9767.h8.modhost.pro/ как раз поле категория — это id ресурсов.


    Так как для modResource класса дополнительные пакеты подключать не нужно, то в первое поле:
    «Компонент» — напишите «seofilter».

    После этого компонент будет нормально всё собирать и отслеживать новые значения.
      Алексей Андреев
      28 августа 2017, 22:22
      0
      Вроде понял идею, но походу не до конца…

      Всё равно цифры в Запросе, Значении и Синониме получаются.
Евгений Шеронов
29 августа 2017, 01:47
+1
Выложил сразу два обновления, включая решение вопроса реализации цен дорогих и дешевых товаров (многие спрашивали).

— Добавлена поддержка значений из других таблиц для ТВ полей
— Добавлена работа для работы полей-слайдеров (недорогие товары и т.д)
— Устранены некоторые ошибки в js и в классе
— Автоматическая генерация названия для новых ссылок при добавлении новых слов
— Лексиконы компонента переведены на английский язык
— Убраны из класса значения по-умолчанию, чтобы не было подстановок на пустых js полях

s9767.h8.modhost.pro/razdel/telefonyi/nedorogie
s9767.h8.modhost.pro/razdel/planshetyi/dorogie

Для таких страниц работает одно правило. Цену можно двигать в диапазоне, урл не поменяется.


Пример кода на Fenom в заголовке:
{$price|ucfirst} {$category|low}{set $pr= $price_input|split} {if $pr[0] == 0}до {$pr[1]}{else}от {$pr[0]}{/if} руб.
Евгений Шеронов
30 августа 2017, 14:42
+2
Тем кто думает купить в ближайшее время:
Цена на компонент с 1-го сентября поднимется до 1490 руб.

И в начале сентября будет большое обновление.
Следите за новостями :)
Евгений Шеронов
08 сентября 2017, 12:54
0
Очередное обновление от 08.09.2017
— Добавлена поддержка JSON полей, включая tvSuperSelect
— Изменён приоритет на событие onDocFormSave для поддержки TVSS
— Добавлена работа с любыми суффиксами контейнера (/,.html и т.д)
— Добавлена настройка для добавления своего суффикса к сгенерированным страницам
— Добавлена настройка переадресации на правильный суффикс
— Добавлена настройка с названием параметра пагинации, для передачи № страницы в СЕО тексты

А предыдущие обновления внесли это:
— Добавлена поддержка значений из других таблиц для ТВ полей

И параллельно компонент появился английской версии ModStore — спасибо!
en.modstore.pro/packages/ecommerce/seofilter (пока без англоязычной документации).
    Дмитрий
    11 сентября 2017, 17:12
    0
    Евгений, приветствую!

    Благодарю за обновления! Сориентируйте, пожалуйста, когда планируете внедрить возможность формирования карты сайта на основе фильтра?

    Спасибо!
      Евгений Шеронов
      11 сентября 2017, 18:50
      0
      Добрый вечер!)

      На этой неделе для одного из проектов понадобится сниппет формирования меню. Как раз и карту сайта сделаю и другие «фишки», которые запланировал.

      Скорее всего к концу недели выложу и допишу документацию.
        Дмитрий
        11 сентября 2017, 19:13
        0
        Класс, благодарю!
Иван Кизименко
19 сентября 2017, 13:54
0
На сколько я понял именно так уникальный для различных модификаций сделать не получится?
Только писать скелет и в нем менять определенные слова?
    Евгений Шеронов
    19 сентября 2017, 17:57
    +1
    Как раз таки и можно уникальные тексты для любых параметров сделать.
    Но изначально лучше сделать один SEO шаблон, и уже в таблице URL прописывать индивидуально.
    Также индивидуально тексты к виртуальным страницам можно через frontendManager добавлять.

    Я правильно понял вопрос?)
АндрейЧ
19 сентября 2017, 21:09
+1
Я очень сильно хотел такой компонент пол-года назад. Ваш буду пробывать когда разбогатею.
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 и прочим «сео»
    Евгений Шеронов
    19 сентября 2017, 21:29
    +1
    Всё уже реализовано)
    С хлебными крошками динамического формирования прям нет, но текст ссылки добавлять туда можно :)

    Совсем скоро выложу обновление и распишу все последние возможности уже в отдельном топике.
Антон
25 сентября 2017, 18:11
0
Здравствуйте, Евгений, подскажите пожалуйста будет ли реализована возможность автоматически убирать url по которым нет ни одного товара? Например, есть опция цвет (синий, красный, зеленый), при этом в категории 1 есть товары со всеми цветами, а в категории 2 только красного и зеленого, так как сделать, чтобы не было url категория 2-синий цвет, так как там получается пусто. Можно конечно отключить вручную, товаров и категорий очень много, тысячи.
    Евгений Шеронов
    25 сентября 2017, 20:14
    +1
    Добрый вечер!
    Думаю смогу прикрутить такой функционал, так как для нового сниппета sfMenu уже сделал возможность выводить страницы только те, где есть ресурсы или где например 5 и более ресурсов.

    Подсчёт ресурсов, конечно, операция долгая, на фронте естественно кэшируется, а в админке скорее всего буду привязывать к правилу, чтобы лимита хватало. Сколько у вас максимально страниц на одно правило получается?

    Обновление вот-вот выйдет, а с ним и новый топик.
      Антон
      25 сентября 2017, 21:15
      +1
      В принципе, если в сниппете sfMenu будет вывод страниц только с товарами, то это можно сказать решение проблемы. Вообще на одно правило максимум 100 страниц, самих правил до 300 примерно.
Юрий
26 сентября 2017, 11:07
0
Здравствуйте! Большое спасибо за прекрасный компонент, купил и пользуюсь.
Возникли некоторые трудности и вопросы:
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
    Евгений Шеронов
    26 сентября 2017, 11:59
    1
    +1
    Добрый день!
    По порядку отвечу:
    1. Встречался с подобным запросом ещё до релиза) Это не совсем, конечно, относится к компоненту. Но проблема кроется в том, что pdoPage ловит все GET-параметры. Там несколько вариантов есть решения: наследовать класс, переопределить метод makePageLink и прописать в системных настройках, либо же пытаться обработать строку с готовым url через сниппет модификатор, который будет проверять на наличие GET/REQUEST параметров, на их причастность к SeoFilter на текущей странице и удалять лишнее))
    Пока в самом компоненте такого предусмотрено не будет. Но если это прям проблема для многих, то скорее всего придумаю что-то в виде инструкции.

    2. У вас даже на скриншоте видно эту проблему. Плейсхолдеры нужно оборачивать в классы, для контент поля класс по умолчанию ".sf_content", для h1 — ".sf_h1" и т.д.

    3. При указывании alias, нужно изменить параметр для названия чанка. У вас для цен это будет:
    &tplFilter.outer.price=`tpl.mFilter2.filter.slider.shop`
    	&tplFilter.row.price=`tpl.mFilter2.filter.number.shop`
    4. А добавление в title регулируется системной настройкой в разделе SeoFilter «Добавлять SEO-заголовок через разделитель».
      Юрий
      26 сентября 2017, 12:47
      0
      2. Спасибо, с этим разобрался) Но есть такой момент теперь, если убираю выбор в фильтре, то заголовок не возвращается в первоначальный вид (название самой категории), аналогично с описанием, оно остается. в чем может быть проблема? Хотя в тайтл и дискрипшн все ок (после снятия выбора)

      Вывожу так:
      prntscr.com/gptsav

      Так же при пагинаци, в исходном коде или после обновления добавляется слово «Страница 2», во визуально не видно по умолчанию
      Вызов prntscr.com/gptrnq, у Вас на демо если не ошибась таже проблема
        Евгений Шеронов
        26 сентября 2017, 12:55
        +1
        При пагинации — это же как раз «фича», а не баг :)
        Поисковики же должны различать как-то, что это страницы с пагинацией с разным заголовком.
        В yandex постоянно натыкаюсь, что какой-нибудь запрос на такой то странице найден на modx.pro.

        Для того чтобы заголовок возвращался назад надо в системных настройках SeoFilter в настройке «Поле, где хранится Заголовок H1» seofilter_h1 прописать pagetitle.
          Юрий
          26 сентября 2017, 14:08
          0
          спасибо, помогло)
          Еще момент по контенту.
          1. Если контент категории пустой а у параметра фильтра задан, то после того как снимаем выбор с фильтра, то пустой контент не отдается обратно, а остается тот, что был последним в фильтре
          В ситуации если контент категории заполнен, то возвращается контент категории как и нужно
          2. Как быть в ситуации, когда контент категории заполнен и есть уникальность (текст и юрл категории). Но, если мы выберем параметр в фильтре в котором нет сое текста, то получается следующее,
          юрл меняется а текст остается с категории, получается текст уже теряет уникальность, так как один и тот же текст доступен по разным юрл (а может быть и по десяткам). Это как в случае с пагинацией, правильно когда при переходе на каждую последующую страничку, текст скрывается и не дублируется. Сейчас для пагинации хорошо работает prntscr.com/gpunz4 (скрывает текст на всех последующих страницах пагинации). Можно ли как то применить тот код для скрытия контента при пагинации (в случае когда мы фильтруем по параметру у которого задан уникальный текст), одним словом связать этот код prntscr.com/gpunz4 с этим prntscr.com/gpupxa (потому как сейчас приходится теперь отказываться от prntscr.com/gpunz4 )
            Евгений Шеронов
            26 сентября 2017, 14:35
            0
            1. Пока могу предложить ставить такой контент в категории:
            &nbsp; - это символ пробела

            И тогда будет возвращаться. Просто есть проверка пустой ли ответ или нет.

            2. Здесь тот же символ пробела для правила можно поставить, чтобы на пустой текст заменять.

            И для того чтобы только на первой странице были сео-текста, пропишите в настройке «Имя переменной пагинации в каталоге...» (seofilter_page_key) значение page

            Тогда в контенте правила и других полях сможете писать так:
            {if $page>1?}
            	Любой динамический контент
            {/if}
            Здесь параметр {$page} будет содержать номер страницы.
              Юрий
              26 сентября 2017, 16:55
              0
              Пробую как Вы написали prntscr.com/gpwzv3 и prntscr.com/gpx0hk — но в таком случае контент вообще не выводится.
              С пробелами помогло, спасибо). А можно контент скрыть если 2 и больше параметра скрыто в фильтре?
                Евгений Шеронов
                26 сентября 2017, 17:31
                0
                Условие с page надо не в шаблон писать, а непосредственно в текст правила.

                Что значит 2 и больше параметра скрыто в фильтре?)
                  Юрий
                  26 сентября 2017, 17:45
                  0
                  я правильно понял? в шаблоне prntscr.com/gpxq5k и в самом правиле (вкладка СЕО) prntscr.com/gpxqxi?

                  Что значит 2 и больше параметра скрыто в фильтре?) — опечатка, не срыто а выбрано
                  prntscr.com/gpxrrr
                    Евгений Шеронов
                    26 сентября 2017, 20:23
                    0
                    В самом правиле контент да, всё верно.

                    Кстати, конструкции вроде [[*pagetitle]] вроде бы не должны работать, там лучше использовать так: {$id|resource:'pagetitle'}

                    $id — это id реальной страницы.

                    А на счёт 2 и больше параметров зависит от правил. Если для одного из двух есть правило и будет стоять галочка «Базовое правило», то будет показываться текст этого правила.

                    Если базовых нет и правила состоящего из двух этих полей, то выведется контент страницы)
      Юрий
      26 сентября 2017, 14:13
      0
      «Пока в самом компоненте такого предусмотрено не будет. Но если это прям проблема для многих, то скорее всего придумаю что-то в виде инструкции.» — будет очень хорошо, если появится инструкция. Это 100% проблема для всех, кто будет продвигать, потому как такой юрл может попасть в индекс
        Евгений Шеронов
        26 сентября 2017, 14:37
        +1
        Подумаю, но не в ближайшем обновлении. В октябре скорее всего.
        Кто-то через robots закрывает все страницы с get параметрами)
Евгений Шеронов
28 сентября 2017, 23:23
0
Выпустил обновление, дальнейшее обсуждение можно продолжать там:
modx.pro/components/13407-seofilter-the-long-awaited-update-menu-sitemap/
fred Oushen
12 октября 2017, 14:58
0
Хотелось бы узнать, надо ли к нему брать mSearch2, или он так работает без этого?
Просто не совсем понятно, зачем два фильтра тогда.
    Евгений Шеронов
    12 октября 2017, 19:07
    0
    Смотря что Вы хотите сделать)
    С mSearch2 поддерживается работа в режиме Ajax (замена всех текстов, заголовков и т.д.).

    Без него сможете выводить на сформированных страницах, с уникальными текстами необходимые ресурсы через pdoResources. В этом случае все переходы только по ссылкам.

    Сам SeoFilter выставляет GET/REQUEST параметры для их дальнейшей обработки mFilter-у или же любому кастомному сниппету.
fred Oushen
02 ноября 2017, 12:26
0
Добрый всем день, как настроить sfLink? делаю все по инструкции, но он не выводит мне ничего…
В данном случае мне нужно было каталоги сделать как меню с подсчетом товаров.
Ну определенный вид вывода всего SEO.

{if $parent?}
    {set $category_link = $_modx->runSnippet('sfLink',[
        'rules'=> '63',
        'category'=> $parent,
    ])} 
    {set $category = $parent | sfWord : 4} // Данная цифра не понятна мне, может в ней проблема?
    <a href="{15|url}{$category_link}/" class="sklad-link">{$category['value']}</a> 
// Что такое 15 мне тоже не понятно...
{/if}
Кто сталкивался?
    Евгений Шеронов
    02 ноября 2017, 13:11
    +1
    Ещё раз добрый день!)
    modx.pro/components/13407/ вот здесь внизу про sfLink.
    sfLink выводит по умолчанию сформированное название ссылки и её адрес, при передаче в него параметров, которые совпадают с синонимом полей в переданном(ых) правилах в параметре rules.

    Для формирования меню с подсчётом вообще есть сниппет sfMenu.
Александр
04 декабря 2017, 14:37
0
Добрый день. Евгений, а из за чего компонент может отдавать 404 ошибку?
настраивал по документации, все получается, но когда берешь копируешь эту ссылку с цветом: site.ru/catolog/krasnyj и переходишь по ней компонент отдает 404 ошибку.
.htaccess стандартный пробовал ставить, думал проблема в нем (подставляет в конце категории слеш на конец, а ссылки генерируются без него, срабатывал редирект), но нет все равно отдает 404 ошибку
prntscr.com/hiv49i
prntscr.com/hiv4iq

И еще вопрос. Если у меня уже есть категории для сео, то как мне добиться нужного мне url? Тут нет возможности добавить приставку prntscr.com/hiv5wb
придется переделывать структуру сайта, что очень бы не хотелось делать. мож есть возможность добавить сюда второе поле, которое можно править?
    Евгений Шеронов
    04 декабря 2017, 16:12
    0
    Добрый день!

    По 404 ошибке напишите мне в тех поддержку на modstore с указанием доступов к сайту.
    Но скорее всего другой плагин приоритетом перебивает, Redirector или что-то подобное.

    По второму вопросу свободно изменять нельзя, только если оставить в Url параметр: /style-krasnyi.
    Это немного изжиток самых первых версий, думаю, что можно будет и отказаться в будущем от строгого формирования и разрешить свободно формировать адреса.
      Александр
      04 декабря 2017, 16:24
      0
      делал у вас на тестовом домене.
      из приложений было установлено
      неоформленные заказы, минишоп, mSearch2, msImportExport в принципе и все.

      >> Url параметр: /style-krasnyi — нужно так: po-styluy/krasnyi
        Александр
        04 декабря 2017, 16:42
        0
        и по инструкции не совсем понял, как создавать двойные стили, например красные-черные

        чтобы url был такой krasnyi-chernyj и товары отобразились красные и черные

        вообще как сделать перемножение всех параметров? Вот посмотрите как работают фильтра на этом сайте divaroom.ru/platya/ он на опенкарте. По сути многим как раз нужен вот такой функционал. Не важно будет ли он работать с перезагрузкой, или на аяксе, главное чтобы были физически доступны виртуальные страницы, которые нужны роботу для продвижения.
          Евгений Шеронов
          04 декабря 2017, 16:52
          0
          Для двух цветов самый простой вариант создать новую запись в словаре для поля, где в качестве запроса ввести: «красный, черный» (в таком порядке, как их mFilter2 по умолчанию ловит)
          А в качестве адреса и значения — в удобном для себя виде.

          Гадать почему была ошибка 404 не могу, будут доступы — будет и ответ :)
          .htaccess вообще не должен никак участвовать на modhost.pro
            Александр
            06 декабря 2017, 01:40
            0
            а как на счет функционала фильтра как на этом сайте? divaroom.ru/platya/
            там перемножение всех праметров идет. это лучше будет отрабатывать с точки зрения сео.
            в твоем же все в ручную нужно делать. доработать можно?
              Евгений Шеронов
              06 декабря 2017, 10:56
              0
              Да, сделать такое можно конечно же, но за дополнительную плату.

              На самом деле для поисковика страницы с заголовками буду считаться разными?
              1. «Красные, розовые, коралловые, малиновые, сиреневые, фиолетовые платья»
              2. «Красные, розовые, коралловые, малиновые, синие, сиреневые, фиолетовые платья»

              Я тут сочетанием, используя комбинаторику, насчитал что при использовании 10 цветов дополнительно 1000 страниц. А при 15 цветах страниц уже будет больше 32 тысяч. А а сайте примере аж 19 цветов!

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

              Заметил, что ещё они умудряются пересекать «множественное цветовое поле» с другим полем. В общем в меню или в карту сайта такие адреса точно нет смысла закидывать :)

              Если действительно есть желание для формирования таких страниц — пишите мне в скайп waytodesign или на почту через профиль, обсудим более предметно.
mngatoff
08 декабря 2017, 13:46
0
че-то поле tags бороду какую-то выдает, или я не понял как правильно
    Евгений Шеронов
    08 декабря 2017, 15:36
    0
    Если это поле в miniShop2, то нужно выбирать класс msProductOption, тогда подцепятся правильные значения из другой таблицы.
      mngatoff
      08 декабря 2017, 16:31
      0
      спасибо. Пардон, недостаток кофеина в организме сказывается)
Алексей Смирнов
13 декабря 2017, 20:18
0
Добрый день.
1. Подскажите а данное дополнение будет работать с таблицами ms2gallery? теги в частности.
2. Можно ли формировать и приязывать правила без привязки к полям таблицы, в ручную например. (подобно как Virtual Page.
3. Не будет конфликтовать с дополнением virtual page?
Спасибо.
    Евгений Шеронов
    13 декабря 2017, 23:04
    +1
    Добрый вечер!

    1. Дополнение изначально строилось, чтобы работать с любыми объектами, но в текущей версии буквально пару строк нужно будет подправить. В обновлении, над которым работаю уже поправил.

    Есть кейс по интеграции дополнения со старым Gallery + mFilter2.
    Думаю и ms2gallery можно сделать SEO-шной)

    2. Если я правильно понял суть — то да. Вы можете создать поле, хоть с несуществующим классом или же отключённым. Потом в ручную добавляете значения в словарь, привязывая их к полю. И добавляете в правило.
    То есть получилось правило без привязки к каким-то определённым полям. (но к странице нужно обязательно привязать) Сформируются ссылки, которые плагин компонента будет отлавливать и выставлять GET и Request параметры.

    3. Virtual Page я ставил давным давно и не особо разбирался что и как там устроено. Возможно и будут конфликтовать, но это решается изменением приоритетов у событий в плагинах.
    SeoFilter лучше ставить вперёд, так как если он «свою» страницу не найдёт — отдаст следующему плагину.
      Алексей Смирнов
      13 декабря 2017, 23:11
      0
      Спасибо.
        Евгений Шеронов
        13 декабря 2017, 23:13
        0
        Если будут какие-то вопросы после покупки, то всегда сможете задать их в техподдержке по дополнению на modstore)
NikAk
01 февраля 2018, 14:55
0
Есть вопрос, возможно ли вывести список определенного поля/правила, уже сгенерированных слов и превратить его в вид списка карты с ссылками?

Если есть возможность не подскажите как?
    NikAk
    01 февраля 2018, 18:08
    0
    уже разобрался, в доках не заметил наличие sfMenu
v2254303
01 марта 2018, 19:53
0
Очень странное сео решение, делать плагин и не настроить каноникл, тем самым перечеркнуть все труды.

Буду благодарен за подсказку как автоматически менять каноникл
    Евгений Шеронов
    02 марта 2018, 14:05
    0
    Вы видимо через ajax проверяете работу, просто посмотрев в код страницы — будет корректный canonical.
    Есть ли смысл и этот параметр менять через ajax?

    Непосредственно canonical на демке выставляет pdoPage с параметром setMeta=`1`
    Но всегда можете отключить его и в ручную прописать так:
    <link rel="canonical" href="{$_modx->resource.id|url}{$_modx->getPlaceholder('sf.url')}"> //это с включенным Fenom в шаблонах
Андрей
05 марта 2018, 18:01
0
Подскажите, а можно ли вывести в товаре значения какой-либо опции этого товара (например размер), чтобы каждое значение было ссылкой на соответствующий раздел, сгенерированный seoFilter? Чтобы например по клику на 48 размер — переходить на страницу, где все товары 48 размера и т.д.
    Евгений Шеронов
    05 марта 2018, 18:51
    0
    Конечно!)

    Приведу пример на Fenom.
    {foreach $_modx->resource.size as $size}
        	{'!sfLink'|snippet:[ 
        		'rules'=>'22',
        		'size'=>$size
    	]}
    {/foreach}
    // вместо 22 - ID правила, связанного с размером. Параметр сниппета size - это синоним поля.
    Не забудьте позаботиться о том, чтобы у ссылок были сформированы названия.
    Для этого есть шаблон в правилах и галочка перегенерировать.
      Андрей
      05 марта 2018, 20:09
      0
      Спасибо, класс!
Роман
14 декабря 2018, 21:55
0
Доброго времени суток. Подскажите, какие существуют варианты использования компонента SeoFilter, кроме как с mFilter2 (mSearch2) и miniShop2?
К примеру, здесь используется mFilter2?
Суть: нужно настроить ajax-фильтр по tv-параметрам (тип ввода: множественный выбор). Купили SeoFilter, а mFilter2 не установлен, он тоже нужен или есть еще какой-то способ?
Что имею на данный момент: фильтр с генерацией чпу-ссылки «на лету» (в зависимости от выбранных значений) и плагином, который обрабатывает эту виртуальную ссылку и возвращает результат.
    Евгений Шеронов
    15 декабря 2018, 14:18
    0
    Здравствуйте!
    К примеру, здесь используется mFilter2?
    — тут не мой SeoFilter используется.

    Для ajax фильтрации самое простое — приобрести mSearch2.
    Но, конечно, можно и самостоятельно написать фильтр и «скрестить» с SeoFilter.

    Хотя, напишите мне в поддержку, хочу проверить одну наработку, так как у вас уже есть свёрстанный фильтр.
      Роман
      15 декабря 2018, 22:38
      0
      Большое спасибо за ответ, внесли ясность. В поддержку написал.
Maksim
27 января 2019, 12:41
0
Здравствуйте.
Скажите пожалуйста, компонент позволяет сделать один и тот же товар (ресурс/продукт) доступным по разным ссылкам?

Это нужно для того, чтобы не было дублей. Иначе у нас один и тот же товар или набор товаров со схожими свойствами, будет выдаваться на странице категории по разным фильтрам…

Например:
Имеем товары: раковина в разном исполнении (керамика, чугун, нержавейка, красная, зеленая), унитаз в разном исполнении (керамика, чугун, нержавейка, красный, зеленый)

Мы имеем в категории /rakovina/keramika/krasnaya/ и в категории /rakovina/chugun/zelyonaya/ ссылку на одну и ту же раковину (товар).- один и тот же URL
А нужно чтобы она была доступна по разным ссылкам и с установленными на этой странице характеристиками, скажем /rakoviny/keramicheskaya-krasnaya-vendor-model и /rakoviny/chugunnaya-zelyonaya-vendor-model…

Позволяет ли данный компонент это сделать или он только с категориями работает?
    Александр Мельник
    27 января 2019, 13:51
    0
    Простите, что вмешаюсь не по основном теме.
    Просто мне показалось странным, мне наши сеошники говорят, что дубль — это когда один и тот же товар доступен по разным ссылкам, а вы пишите совершенно обратное…
      Maksim
      27 января 2019, 15:00
      0
      Ну я немного о другом. Правильно, если один товат по разным ссылкам — это другая крайность.

      А я хочу иметь несколько товаров из одного — то есть, например, если у нас есть раковина в разных исполнениях (чугунная, нержавейка, керамика, красная, зеленая) — это вроде одна страница с разными опциями/модификациями. То есть нужно чтобы разные комбинации фильтра на странице «категории товара» выдавали на эту раковину ссылки в соответствии с установленным фильтром. А также при переходе по этой ссылке у нас получалась страница с метаданными (h1, title, description, content) в соответствии с URL и опции ставились сразу, например в «красная» и «чугунная»…

      Иначе, если у нас товара мало — то получается содержимое разных страниц (раковины чугунные, раковины красные и тп), читай выдача фильтра, — одинаковое — все та же одна раковина…

      — Мне кажется, что если это не поддерживается, то нужно нечто вроде генератора товара по прототипу.
      Например задаем в прототипе опции, цвета и тд, и при сохранении (в плагине ondocformsave) в каталоге перегенерируется весь товар в категории, к которой относится прототип… ну то есть склоняюсь к физически существующим ресурсам-товарам…

      Может покажется на первый взгляд неудобно управлять этим, но я прикинул, что так создавать модификации на одной странице — та же работа по заданию разных параметров, фотографий… только в случае генератора:
      — у нас снимаются ограничения по нехватке полей (напр. content)
      — скорость работы увеличивается за счет отсутствия работы в исключениях (onpagenotfound) — то есть доступ осуществляется стандартным функционалом модекса…

      ну в категориях, конечно без преобразования параметров в путь в URL (?category=racoviny&color=red => /racoviny/red/) не обойтись. отличие лишь в том, что перейдя по этой ссылке — такая категория будет существовать в реальности и нужно использовать одинаковый шаблон и parents устанавливать ОДИНАКОВЫЙ, чтобы была возможность из нее в фильтре «шагать» вверх по иерархии (URL)…

      Если что-то непонятно, что написал, могу отдельно пояснить, а то как-то наверное написал не очень понятно… но я старался )
        Евгений Шеронов
        28 января 2019, 04:06
        0
        Такого функционала в компоненте нет)

        Вообще, компонент никак не влияет на товары.
        Пока Вы первый, кто спрашивает подобное)

        Тут достаточно сложная интеграция и не всегда получится сделать какое-то определенно правильное поведение.

        Что будет, если выбрать в фильтре два цвета, под которые есть разные модификации товара?

        Показывать одну карточку товара или две?)
        Тут надо больше смотреть на возможность связать это всё с msOptionsPrice.

        Также расширять класс фильтрации и вообще использовать свою обёртку для mFilter2, чтобы подмешивать виртуальные товары))

        В общем, из коробки это не появится, но как индивидуальная работа — можно сделать)
          Maksim
          28 января 2019, 10:59
          0
          Что будет, если выбрать в фильтре два цвета, под которые есть разные модификации товара?
          Показывать одну карточку товара или две?)
          Ну в описанном мной случае, поскольку мы в «фильтрующей категории» (в шаблоне/чанке, где работает фильтр) — то две — как будто разные товары.
          В этом случае у нас появляется много товара и много страниц и модификации у нас будут представлены ресурсами и, соответственно, ссылками (при выборе модификации товара в карточке товара)…
          Думаю для СЕО это хорошая идея, как считаете? Ведь эти модификации будут создавать дополнительный вес для сайта, что не происходит, например, если мы модификации делаем компонентом msOptionPrice или каким-то подобным, ведь там модификация не видна поисковой системе…

          Тут надо больше смотреть на возможность связать это всё с msOptionsPrice.
          я как раз противопоставляю эту идею использованию msOptionPrice…

          Как идея вам такая?
          Maksim
          28 января 2019, 11:17
          0
          Как Вам такая идея (имею ввиду этот гипотетический «генератор по прототипу», что описал выше)?
Григорий
04 марта 2019, 20:39
0
Друзья! А скажите, пожалуйста, каким образом, можно вытащить ссылки, чтобы они отображались в коде html, и робот мог их видеть? Сайт вот: skhoromy.ru/catalog/doma. Например, через кнопку показать, или как реализованно на битриксе keramika-russia.ru
    Евгений Шеронов
    05 марта 2019, 10:52
    0
    sfMenu по идее, но чтобы прям в чекбоксы вставить ссылки — то наверно проще sfLink, но это нужно очень правильно приготовить, чтобы ещё кэшировалось.

    В общем, «из коробки» функционала для ссылок в чекбоксах нет.
    На указанном выше сайте сформировал такой 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/

    Как мне кажется, избыточны такие страницы. А Вам подобная вложенность нужна?
      Григорий
      05 марта 2019, 11:12
      0
      Здравствуйте! Здесь не так уж много групп атрибутов для такой вложенности. А что касается, keramika-russia.ru — там немного другая проблема. На определенном шаге подборки дублируются. Ну, не по мета, а по факту
      Григорий
      05 марта 2019, 11:41
      0
      И такой вопрос. А как прописать текст только для одной категории, например Дома из КБ?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.