скоро мне ответят, я уверен в этом
|
Нашёл решение попроще для фильтрации элементов без перезагрузки страницы:
1) создаем в шаблоне компонента любой пхп файлик (например, ajax.php) 2) с помощью JS делаем AJAX запрос к ajax.php, передавая ваш фильтр + $arParams вашего компонента 3) в ajax.php делаем снова $APPLICATION->IncludeComponent(), подставляя фильтр и параметры, которые пришли из JS 4) возвращаем в JS только что новосозданный компонент, с примененным фильтром 5) в JS получаем ответ, в виде HTML разметки, вставляем на то же место, где был старый, неотфильтрованный компонент -------------- Я почему-то думал, что в ajax.php нужно будет обращаться к битрикс API, для получения элементов инфоблока, а потом каким-то образом всё это вставить в template.php, и вернуть разметку. Не додумался до того, что можно просто снова создать такой же компонент с помощью $APPLICATION->IncludeComponent() и вернуть его в JS. Кстати, еще можно фильтровать компонент, вытягивая фильтр из url строки. Сам фильтр нужно, например, на клик, размещать в URL в виде параметра, а потом делать window.location.reload(). Перезагрузка страницы будет, но не жесткая, скролл страницы не затрагивает. |
|
|
|
|
например, я запрошу данные с помощью CIBlockElement::GetList мне придет массив со значениями. мне нужно будет передать каждую новость в виде объекта обратно в жс, и уже через жс в дом вставлять новые значения? или как-то можно вернуть будет обновленный хтмл сразу? я не понимаю как подставить значения, полученные через CIBlockElement::GetList, в мой template.php. |
|||||||
|
|
|
|
Объясните, пожалуйста, кто-нибудь процесс поподробнее.
Из своего ЖС кода, при клике на кнопочку, я отправляю ajax запрос к своему ajax.php, который лежит в папке с моим шаблоном news.list. А что дальше? Как мне сделать ререндер шаблона, который уже отрисован на страничке? Можно в ajax.php скопировать мой шаблон целиком из template.php, сделать запрос к моему ИБ, сформировать каким-то образом что-то похожее на $arResult, и потом отправить весь этот хтмл код обратно джава скрипту, который просто заменит предыдущий компонент? С фул перезагрузкой страницы вроде всё просто, страница перезагрузилась, вытащил с URL параметры для фильтрации, и воткнул в параметры компонента news.list. Без перезагрузки вообще не понимаю как подступиться. |
|
|
|
|
|
С помощью news.list вывожу данные из некоторого инфоблока. У инфоблока есть обязательное поле -- тип список, в котором можно выбрать одно из двух значений: значение1, значение2.
Получается, что у каждого элемента инфоблока установлено либо значение1, либо значение2. У менять есть две кнопки: "показать новости где значение1", "показать новости где значение2". Как мне при клике на эти кнопки выводить соответствующие элементы? Как отфильтровать news.list при клике на <button>? Без перезагрузки страницы. |
|
|
|
|