Всего 123 799 комментариев

Дима Касаткин
26 марта 2024, 14:43
0
Приветствую! Отличная новость про фильтры, впечатляющая скорость, жду релиза с нетерпением, с удовольствием поучаствую в развитии (в документации, и как ещё получится). Потому что развитие системе поиска и фильтров, которые уже есть для MODX, давненько не хватало!

Тоже есть пара вопросов:
Пробрасывать в чанки дополнительные параметры через плагин.
1. @Артур Шевченко, а сниппет(ы) компонента умеет(ют) передавать в чанки все указанные в вызове параметры? На мой вкус при сборке сайта очень частно нужно добавить какие-то параметры сверх тех, что предусмотрены документацией и влияют на логину сниппета, а просто доступна в чанке для проверки или использования значения.

Так, например, умеет делать pdoResources, но не умеет pdoMenu, и это очень не удобно…

2. Чанки на Fenom поддерживаются? И на квадратном modx-синтаксисе тоже? Разделение на row и outer в наличии, или предлагается на Fenom циклы крутить?))

3. Понимаю, что внедрение было на MODX2, но много ли логики в компоненте, которая отличается от MODX3 и какие перспективы по адаптации? На MODX3 переезжают уже многие, и ещё больше тех кто ждёт когда стоп-факторы будут сняты. Фильтрация — один из!
Артур Шевченко
26 марта 2024, 13:02
0
Из коробки компонент может фильтровать обычные ресурсы, товары и пользователей, но есть возможность написать свои обработчики и фильтровать вообще всё что угодно.

Если речь про админку Modx, то нет, там он не работает. А что касается моих кейсов, то да эта закрытая часть сайта, но всё же фронт.

И ко мне можно обращаться на ТЫ)))
Александр Мельник
26 марта 2024, 10:53
+1
да, возможно Александр это имел ввиду и это действительно очень полезный опыт.
Василий Наумкин
26 марта 2024, 10:40
0
Думаю, речь о том, чтобы посмотреть на исходники mmxForms и делать такие же компоненты с административной частью на Vue 3.

Тогда можно будет получить (или использовать) актуальные знания, вместо ненужного древнего ExtJS 3.4.1.1, которому уже 11 лет.
Александр Мельник
26 марта 2024, 10:36
0
Спасибо.
Из ваших ответов я делаю два вывода.
1) Ваш компонент это не только фильтр для товаров минишопа (которым я его считал). Это фильтр для любых ресурсов modx. например modUser.
2) Ваш компонент предназначен не только для работы на публичной части, но и в админке. Потому что просто представить не могу, зачем кому то на публичной части давать возможность искать пользователей, фильтровать их и модерировать, такие вещи должны происходить в закрытых от публичного доступа местах.

Оба мои утверждения справедливы?
Артур Шевченко
26 марта 2024, 10:16
0
Начнём по порядку.

1. Опции и ТВ не используются конкретно на этих сайта, которые я взял для сравнения. Так-то сам компонент умеет работать и с ТВ, даже miigx, и с опциями.

2. Фильтрация пользователей нужна, когда имеет место ручная их модерация. В моём случае, нужно проверять паспортные данные присланные в виде фото.

3. Схожесть с SimpleSearch в том, что поиск происходит с помощью оператора LIKE. Никакой формы и сниппета нет. Суть кейса в том, что мне нужно было сделать поиск по определенным полям в уже отфильтрованных данных. Условно есть фильтр Статус и нужно найти все товары в статусе 1, которые загрузили пользователи с фамилией Иванов. Вот фамилия и есть произвольный параметр. Можно было бы и Фамилию сделать фильтром, но список был бы длинным и неудобным.

4. Есть сниппет ffFiltering, аналог mFilter2, в его чанки можно пробросить данные через вызов сниппета, а есть сниппет, который отвечает за рендер результатов, он вызывается каждый раз, когда задаются новые условия в фильтрах и вот в его чанк можно пробросить параметры только через плагин.
Александр Мельник
26 марта 2024, 08:46
0
Цифры выглядят впечатляюще.
Пока документация не готова, есть пара вопросов.
1) Вы пишите —
Опции и ТВ не используются
но лично я воспринимаю фильтр как инструмент поиска по характеристикам (ну или в терминологии минишоп опциям). А что же тогда фильтрует фильтр, если нет опций?

2)
Фильтрация пользователей.
Не совсем понимаю, если можно то хоть пару строк. Что вообще такое фильтрация пользователей? Зачем она может применятся?

3)
Возможность добавить фильтрацию по произвольному параметру через плагин, своего рода SimpleSearch на минималках.
Часто использую simplesearch для реализации простого поиска по ресурсам сайта. Он дает форму для поиска и сниппет для показа результатов. Что тогда такое «фильтрацию по произвольному параметру через плагин» и в чем его схожесть с simplesearch?

4)
Пробрасывать в чанки дополнительные параметры через плагин.
Это речь о каких то конкретны странных чанках? Иначе почему параметры в них нужно пробрасывать через плагин, ведь все чанки modx поддерживают передачу параметров из коробки.

Спасибо.
Александр Мельник
26 марта 2024, 08:29
0
Александр, а расскажите пожалуйста подробнне.
Открывает большие возможности, которые с ExtJS казались очень сложными.
Я посмотрел видео и понял так, что Василий сделал два компонента для modx3, один из которых позволяет создавать веб формы для публичной части сайта, второй позволяет работать с моделями сайта не через прослойку xPDO, а через ORM Eloquent.
Но прочитав вашу фразу, что тепер открываются новые возможности, которые ранее были сложны с extjs, я засомневался. Я наверное не так понял функционал и назначение этих компонентов. Расскажите пожалуйста подробнее, какие именно возможности они открывют и в чем облегчают работу с extjs.
Александр
25 марта 2024, 19:40
+1
На modhost nginx с настроенными правилами по умолчанию, у меня локальный apache, с даже не переименованным ht.access был. Для админки он не нужен, а для этих дополнений не без него)
Арман
25 марта 2024, 18:55
0
Ну я вроде уже определился пообщавшись здесь, что мне не нужен SmartRouting (единственное у него в документации написано Cache the http_host/base_url => context settings to avoid database lookups on page load. Но я думаю это не критичный момент и можно обойтись без этого). Скорее всего воспользуюсь вариантом Артура Шевченко или вариантом из официальной документации. Я считаю вариант Артура хорош, особенно если будет много доменов и в любой момент нужно будет создавать и удалить их. Так как у меня на проекте всего 2 домена и больше не будет, мне так же подходит вариант из документации. Всем спасибо)
Арман
25 марта 2024, 18:43
0
Сегодня началась новая спам атака на сайт. Накидали за день номеров 200 на почту через assets/components/FetchIt/action.php. Этот код помог (стоит FetchIt). Единственное что не пойму почему не сработал файл .htaccess который я вставил в assets/components/FetchIt и прописал там
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?vision-hotel.ru [NC]
RewriteRule \.* - [F]
Похоже что заголовок Referer тоже подделывали при спаме.

SendIt пока что не хочется ставить. В общем и целом нравится FetchIt так же там готовая интеграция с AmoCRM которую легко и быстро настроил через FetchIt sucsess.

Надеюсь автор допилит этот момент из коробки. А так всем спасибо)
Александр Мельник
25 марта 2024, 15:52
0
Мне кажется вы не совсем правы, предлагая автору инструменты для многоязычности и ссылку, на которую опять-таки инструкция по многоязычности. Это только собьет его с толку.
Автор пишет
БЕЗ поддоменов и без определения контекста с помощью папок таких как site.ru/site1 и site.ru/site2.
а вы даете ссылку на инструкцию, которая начинается со слов
Русская версия сайта — site.ru/
Английская версия — site.ru/en/
Автор пишет, что
Сайт отличаются контентом и не только, то есть один сайт НЕ ЯВЛЯЕТСЯ переводом на другой язык второго сайта.
А в вашей инструкции как раз речь о том, что babel позволяет создать перевод для существующей страницы.
Артур Шевченко
25 марта 2024, 10:33
0
Я думаю излишне сложно. В моей практике не было случаев, когда нужен отдельный htaccess на каждый домен.
Василий Наумкин
25 марта 2024, 10:29
0
Каким образом можно будет избежать конфликтов
Composer просто не позволит установить конфликтое приложение, и ничего не сломается.

Нужно будет поискать более подходящее приложение, или попросить автора адаптировать своё. Например, указать другие возможные версии зависимостей, как уже сделал я с vesp/core, для нормальной работы в MODX 3.
Арман
25 марта 2024, 10:19
0
Всё читаю и пытаюсь вникнуть) Просто нет опыта и хочется разобраться в вопросе не поверхностно. Я ищу лёгкий путь в самой настройке но иду сложным путем в плане того что хочется собрать побольше информации.
Pandemic
25 марта 2024, 10:10
0
Ты явно не ищешь лёгкий путь и не читаешь что тебе пишут, контексты и babel тебе в помощь, всё так же зависит от того как ты хочешь чтобы твой сайт работал, можешь и в modstore.pro посмотреть плагины modstore.pro/packages/other/polylang ну а это вот бесплатно, быстро, тебе просто полная настройка всего cat-art.ru/blog/multiyazyichnost-modx-revo
Максим
25 марта 2024, 08:50
0
А можно подробнее? Каким образом можно будет избежать конфликтов, даже если все дополнения будут устанавливаться через Composer? Если МоёДополнение, например, использует зависимость версии 1, а ТвоёДополнение требует версию 5, где половина методов из версии 1 отсутствует, Composer как-то будет устанавливать 2 версии одной зависимости? И как потом этим пользоваться?
vit
vit
24 марта 2024, 21:03
0
Вдруг кто-то тоже с этим столкнется в ближайшее время. Этот тип поля не поддерживается сейчас в MODX3 работает только типо поля textbox
Арман
24 марта 2024, 20:58
0
А что насчёт реализации описанной на оф. сайте docs.modx.com/3.x/ru/building-sites/contexts/virtual-host? В плане удобства в каком-то плане мне нравится ваш код, не нужно файлы копировать и редактировать каждый раз при создании домена. Но мне так же нравится вариант представленный в документации так как он имеет свой .htaccess файл. Что вы думаете об это реализации?
Артур Шевченко
24 марта 2024, 20:33
1
+1
1. Все домены должны ссылаться на одну папку.
2. Каждый контекст должен иметь настройку http_host и base_url.
3. Нужно написать плагин который будет переключать контекст в зависимости от домена
<?php
// Работаем только на фронтенде
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}

// Определяем запрашиваемый хост
$host = $_SERVER['HTTP_HOST'];

if($ctx = $modx->getObject('modContextSetting', array('key' => 'http_host', 'value' => $host)) ){
    $ctx_key = $ctx->get('context_key');
    if($ctx_key != 'web'){
        $modx->switchContext($ctx_key);
    }
}
Всё. Сайты готовы.