Евгений Шеронов

Евгений Шеронов

С нами с 20 мая 2015; Место в рейтинге пользователей: #30
Евгений Шеронов
18 августа 2017, 17:58
+1
Если что, то в компоненте SeoFilter такая поддержка текстовых полей по умолчанию. Если установлен ACE, то он будет подгружен для поля content, где очень гибко можно настроить тексты, не создавая ресурсов)

Наверно на демке мне стоит раскрыть все возможности компонента)
Евгений Шеронов
16 августа 2017, 21:03
+2
По умолчанию да, а также скорее всего с возможностью ограничить по некоторым правилам или даже с подсчётом (если нет потомков — то нет и ссылки).
Евгений Шеронов
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. Возможно поисковикам хватит и такой грубой реализации но пользователей может запутать.

И по обновлениям — первое со дня на день. Второе скорее всего на следующей неделе.
Евгений Шеронов
16 августа 2017, 13:31
0
Я описал примерную и понятную мне структуру, не погружаясь в эту область.

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

P.S. Вам ещё не встречались одинаковые названий коллекций у разных производителей? :)
Просто моё решение универсально и будет подходить для множества областей, где одинаковые названий коллекций точно есть)
Евгений Шеронов
16 августа 2017, 10:54
+1
Да, конечно) Примерная структура такого магазина:
Плитка
-- Напольная
-- Настенная 
-- Плинтуса
-- Бордюры
-- Декоры
Обои
-- Матовые
-- Глянцевые
-- и т.д.
Повторюсь, коллекция привязывается к производителю. И уже в товаре выбор коллекции.
Коллекция — такой же объект, как и производитель в miniShop2, но со своими полями. Ресурсы для них не используются, выводить можно и через виртуальные страницы.

С таким подходом можно получать такие страницы:
Все товары из «Коллекция1»; Бордюры из «Коллекция1» и «Коллекция2»;
А на странице товара: «Декоры из этой же коллекции», «Плинтуса» и т.д.

И это гарантирует нормальное расположение товара в своей категории/подкатегории. Кто-то сможет искать только бордюры — и его не интересует что это за коллекция. Главное-чтобы подошла к текущей плитке.

Возможно, мы говорим об одной и той же структуре разными словами) Но у меня такого не будет:
'optionFilters' => '{"model:LIKE":"' ~ $_modx->resource.pagetitle ~ '"}',
В один прекрасный момент кто-то решит поправить заголовок и всё навернётся)
Евгений Шеронов
15 августа 2017, 22:21
0
На днях выложу в магазин дополнение, которое как раз таки будет называться msVendorCollections. Есть привязка коллекции к производителю и ещё некоторые полезные штуки по интеграции с miniShop2.

Если дело ждёт пару дней — подождите) компонент как раз разрабатывался для магазина сантехники, и должен подойти для Вас)

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

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

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

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

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

Евгений Шеронов
10 августа 2017, 12:16
+2
Очень много :)
Начал совсем давно, месяца 3 назад.
Именно по часам не замерял, так как делал в свободное от проектов время.
В Modstore попала 14-ая версия компонента)

Только узнал, что phpStorm отслеживает время и активировав настройку увидел ужасающие цифры)
Ровно 7 дней x 24 часа = 168 часов я пробыл в IDE, переписывая по несколько раз логику)
Евгений Шеронов
10 августа 2017, 09:04
0
Локальный хостинг?) если нет, то права на файлы 644 и папки 755 поставьте)
Евгений Шеронов
10 августа 2017, 08:59
0
Интересно! Давайте обсудим подробнее по Skype: waytodesign
Евгений Шеронов
09 августа 2017, 20:27
+3
Выложил дополнение SeoFilter, которое закрывает все вопросы по SEO и не требует сложных действий :)
modstore.pro/packages/ecommerce/seofilter
Евгений Шеронов
09 августа 2017, 18:53
0
А у вас кэш на 75 тыс. страниц сколько весит?
У меня почти на 50к товаров кэш раздувался до ~8гб и память на хостинге постоянно заканчивалась, нарушая работу сайта. Пришлось полностью отключить кэш на товарах.
Евгений Шеронов
09 августа 2017, 18:22
+3
Сегодня)
Дополнение опубликовано modstore.pro/packages/ecommerce/seofilter
Документация на github ещё не принята, но копия находится здесь: s9767.h8.modhost.pro/dokumentacziya/
Евгений Шеронов
04 августа 2017, 12:32
+2
Добрый день!
Компонент уже отправлен на проверку, но на акционный период не попадает.

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

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

В личку вам отправлю тестовые сайты, где стоят последние версии. А на днях и демку нормальную сделаю)
Отдельного кэширования в дополнении нет, это всё таки динамические данные, которые постоянно могут обновляться.
Евгений Шеронов
31 июля 2017, 16:28
0
Первый мой плагин, больше года назад тоже так назывался :)
А потом долго думал над названием и лучше варианта не придумал.

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

Скорее всего даже и без miniShop2 будет работать на полях ресурса и ТВ-полях, проверю после релиза и укажу в документации)
Евгений Шеронов
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-шник просто замучается составлять правила и шаблоны на такие страницы.
Поэтому такая настройка будет лишь нужна по мере-необходимости, и чаще всего для двух значений одного поля, без использования второго поля)
Также это нужно для объединения нескольких значений одного поля, пример:
товары есть тёмно-серого цвета и светло-серого, а можно будет сделать страницу с товарами серого цвета.
Евгений Шеронов
28 июля 2017, 20:28
+1
Да, как минимум добавляя в pdoSitemap в параметр &tplWrapper перед вызов сниппета (sfSitemap), который будет отвечать за добавление ссылок в таком же формате.

Но прям в первом релизе не планировал, но если времени хватит, то добавлю)
Евгений Шеронов
28 июля 2017, 20:09
+1
Да да, что-то вроде такого блока в будущем планирую сделать, но он будет даже больше для людей :)
В основном, решая такие задачи:
Допустим есть категория ванны, где фильтры по материалу, по бренду, по размеру, форме и т.д.
По умолчанию в этой категории, можно будет показать {n} самых популярных ссылок, таких как:
— Акриловые ванны
— Ванны Rocca
— Ванны 170x70.

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

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

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

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