Ajax загрузка и подсчёт тв параметров в MODX
Александр, здравствуйте! Подскажите пожалуйста, как можно сделать чтобы у тв полей или своих полей, при загрузке страницы в результатах mFilter2, pdoResources или просто при выводе поля в шаблоне, выводилось определённое количество параметров а остальные подгружать аяксом только при нажатии (показать все 15)?
Реализовать подгрузку данных через AJAX, например, при нажатии на кнопку «Показать все» можно различными способами.
Вот, например один из них.
1. Создаём php файл, например «get_fields.php» и кладём его в папку «assets». В этом файле на основе полученного id будет получать нужные данные ресурса и отдавать их в формате JSON. В качестве примера, например, будем возвращать pagetitle и description ресурса.
Сниппет «get_fields.php»:
2. В качестве примера выводится список ресурсов на страницу будет так:
В атрибут «data-id» мы будем помещать id ресурса. А подгрузку данных будет производить при нажатии на кнопку с классом «ajax-more».
3. Теперь нам осталось только создать JavaScript код, который будет обрабатывать события при нажатии на кнопку с классом «ajax-more». В этом обработчике мы будем получать id ресурса из атрибута data-id и отправлять его на сервер, а после получения нужных полей от сервера помещать их в элемент в котором находилась эта кнопка:
В скрипте в сниппет .
Пример, в котором показано как её можно получить:
1) Александр а если тянуть поля со своей таблицы компонента в моём случае extendresource, то изменить нужно в этом месте: правильно я понимаю?
2) Как можно сделать чтобы при загрузке страницы, определённое количество параметров тв загружалось а остальные только при нажатии (Показать ещё 17)? Или в данном случае сделать это не получиться а нужно вызывать поле обычным образом и в нём ограничивать сколько показывать параметров, далее ставить кнопку с ajax подгрузкой?
3) Как можно вывести количество параметров привязанных к ресурсу (Показать все 20)?
4) Как правильно добавить второе тв?
5) Как можно разделить запятой выводимые параметры, сейчас подгружаются так белый||чёрный||красный?
Как я понимаю в данном случае не играет роли какой разделитель указан в параметрах вывода у тв.
1. Чтобы выбрать ещё данные нужно либо добавить ещё один запрос или сделать более комплексный запрос, выбирающий всё сразу.
Например, чтобы добавить ещё один запрос для выборки нужных данных нужно его просто добавить:
2. Тут всё просто, которые нужно выбирайте и выводите обычным способом. А те, которые нужно подгрузить потом, например, при нажатии кнопки, выбирайте в «get_fields.php», а затем выводите их на страницу.
3. Выбирайте любые поля, которые вам нужно в «get_fields.php», а затем их выводите.
4. Также, как и первое. Ну или писать комплексный запрос.
5. Это же php код, можно использовать все функции, которые есть в php. Например, использовать функцию str_replace. Она позволяет заменить все вхождения строки поиска (в данном случае "||") на строку замены (в данном случае ", ").
Для подсчёта количества параметров всё аналогично. Либо вы это выполняете сразу в MODX на этапе формирования страницы, либо потом через AJAX. В случае AJAХ действия будут аналогичными, создаёте сценарий на языке JavaScript, который, например будет выполняться после загрузки DOM, в этом сценарии пишите запрос на сервер, на сервере пишите логику для возвращения количества параметров. Далее на JavaScript после получения этих данных подставляете их на страницу.