Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 141 комментарий

Alex Vakhitov
Alex Vakhitov
Да тылы это самое главное (:

Сам посмотрел и удивился числу попыток авторизации на серваке где вход по паролю

35 Jan 6
604 Jan 7
496 Jan 8
279 Jan 9
925 Jan 10
456 Jan 11
643 Jan 12
19 Jan 13
139 Jan 15
458 Jan 16
176 Jan 17
357 Jan 18

Но думаю случайно генерированное имя и пароль в 42 случайных символа займут слишком много времени на подбор
Василий Наумкин
Василий Наумкин
1. Более-менее нормальный вариант, при условии, что на всех страницах фильтр одинаковый (а тогда и mFilter не особо нужен), это сгенерировать фильтр, скопировать его html и рассовать руками по шаблону внутри формы.

У него будут определённые классы и id на которые будет реагировать родной js. По другому — только свой фильтр делать.

2. Там указывается чанк для вывода, используются сниппеты getPage + getResources. В чанке, соответственно, нужные плейсхолдеры прописать, а ненужные — удалить.

3. Сбросить фильтр можно на js — пройтись по всем переключателям и выстваить в дефолтное положение, или проще, при клике по специальной ссылке:
document.location = document.location;
Но тут будет перезагрузка страницы.
Василий Наумкин
Василий Наумкин
Вот тебе сниппет getTodayIds, который присоединяет таблицу с ТВ и выбирает по ней подходящие id.
Нужно указать id ТВ с датой
<?php
$tvid = 1; // id ТВ с датой
$date = date('Y-m-d'); // Сегодня

$q = $modx->newQuery('modResource');
$q->leftJoin('modTemplateVarResource', 'TV', 'modResource.id = TV.contentid AND TV.tmplvarid = '.$tvid);
$q->select('modResource.id');
$q->where('DATE(TV.value) = "'.$date.'"');

if ($q->prepare() && $q->stmt->execute()) {
	$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
	return implode(',', $ids);
}

Вызываем в getPage:
[[!getPage?
	&element=`getResources`
	&resources=`[[!getTodayIds]]`
]]
Prizrak Pro
Prizrak Pro
Влезу со своим вопросом. Так как он продолжает тему.

С подсказками Василия я дошел до примера, который вы привели. И у меня все возвращается.

Проблема у тебя теперь в другом.

1. Я хочу фильтры расположить в разных местах страницы. Но фильтровать они должны все вместе. Я понимаю, все элемент формы должны быть внутри формы. Понятно можно объявить форму в начале и конце body. Но тогда необходимо будет элементы формы фильтра расставлять самостоятельно и ручками писать js под каждый, что бы заполнялся.

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

В обоих пример придется руками расставлять элементы. А во втором, заранее в js указать все элементы из которых брать данные.

А есть ли какой либо ещё вариант. И правильно ли я мыслю.

2. Вопрос это по выводу. Во первых как вижу фильтр возвращает данные в плейсходер [+rows], не пойму а как настроить нужный вид отображения. Указать какие поля отображать.

И как сбросить фильтр, что бы снова вывести все элементы.

Вопросов много. Уже неделю разбираюсь с фильтром, и пока конца я не вижу. Очень буду благодарен за любую подсказку.
Denys Butenko
Denys Butenko
Ну так, вы или &resources передавайте или &query. В данном случае вам необходимо убрать input name=query.
Вот так выглядит мой вызов mFilter
<form action="[[~[[*id]]]]" method="post" id="mFilter">
[[!mFilter?
&includeMS=`1`
&includeMSList=`price,add1`
&tpl=`tpl.msGoods.row`
&resources=`[[!getCatIds]]`
&limit=`9`
]]
<input type="hidden" name="page" value="1">
<input type="hidden" name="sort" value="ms_price,desc">
<input type="hidden" name="limit" value="9">
<input type="hidden" name="action" value="filter">
</form>
Светлана Закревская
Светлана Закревская
К сожалению, у меня такой вариант не работает, пробовала до того как здесь задать вопрос, пишет: Задан пустой поисковый запрос
P.S. А по поводу чего не могу сделать — написать свой сниппет, о котором сказал Василий.