Олег

Олег

Был в сети 09 января 2022, 15:35
Заказы не принимаю
Верно, нужно расширять фильтры для того, чтобы получать эти данные.
Скорее всего обойдется одним методом GET — дальше данные можно обрабатывать имеющимися методами.

Возможно я что-то упустил и не исключено, что кто-то предложит вариант без добавления метода.
Если смотреть документацию mfillter2, то там указано, что при указании фильтров первым параметром пишется метод, которым получаются значения, вторым параметром — поле, которое необходимо, третьим параметром — метод для построения фильтра.
По умолчанию первый и второй параметр — default.
Это я написал по памяти, не заглядывая в документацию — могу где-то ошибиться.

Примеры из документации вызовов фильтров:

&filters=`
    resource|parent:categories,
    resource|template:default,
    ms|price:number,
    tv|myname:default,
    msoption|size:default
`
Метод resource получает данные из таблицы modResource
Метод ms получает данные из таблицы msProduct
Метод tv получает данные из таблицы tv (не помню, как она точно называется, вроде бы template_variables)
Метод msoption получает данные, закодированные в json из таблицы msProduct

Вряд ли какой-то из них сможет получить данные остатков (которые, скорее всего, в отдельной таблице) — для этого нужен будет новый метод.
Либо, если остатки добавляются в таблицу msProduct, то остатки можно будет получить с помощью метода ms
Здравствуйте!
Есть примеры в описании компонента.
Вывод без пагинации:

[[!FAQ_get_questions?
&limit=`100`
]]

Вывод с pdoPage
[[!pdoPage?
&element=`FAQ_get_questions`
&limit=`4`
&ajaxMode=`default`
&sortdir=`DESC`
&sortby=`id`
]]

[[!+page.nav]]


Также можно использовать pdoResources, если мне не изменяет память вот так:
[[pdoResources?
&class=«FAQItem»]]
Я бы с радостью, но, как оказалось, для этого нужно времени потратить больше, чем сам компонент писать (у меня он простой, как калаш). Выложу, как будет время и силы.

Если кому интересно — можете попробовать
1drv.ms/u/s!Aryb646WHtY9uFCHYVe5fHDpSnkC
Буду рад отзывам и предложениям, но если компонент сильно усложнять — получим еще один tickets :)

Запланирован сейчас для простейшего функционала — реализации страницы «вопрос-ответ» на сайте. Для добавления новых вопросов используется formit + ajaxform.
На всякий случай перед установкой лучше сделать бэкап — я проверял только на своих сайтах, там все работало как часы.

Самый просто вариант — при выборе пункта в селекте сделать автоматическую отправку формы на эту же страницу, после чего перед вызовом pdoPage проверять, нет ли при запросе указания количества страниц, и если есть, то выводить с этим параметром.
Скорее всего не удастся обойтись одним запросом, наверное придется писать сниппет, в котором делать запрос для каждой категории отдельно и если в этой категории не нулевое количество товаров с таким брендом — записывать эту категорию для дальнейшего вывода.
Так как запросов к БД будет много, то я бы посоветовал закешировать результат, скажем, на час — тогда не будет сильно влиять на нагрузку.