Битрикс случайная статья и ajax обновление

В данной статье вы узнаете как вывести случайную новость и настроить ее обновление по кнопке.

Как вывести случайную статью на Битриксе

Чтобы вывести случайную статью нам понадобится документация для CIBlockElement::GetList:
https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php

В описании параметров данного метода (функции) у нас есть параметр arOrder, в который нам нужно передать массив. Один из возможных ключей это RAND, записывается таким образом:

Разницу в значении ASC или DESC лично я не заметил. Мы сейчас не будем разбивать логику, так как это делается «по правильному» для компонентов Битрикса, на файлы component.php и template.php. Код для случайной статьи выглядит следующим образом:

Теперь по порядку:
1. if (CModule::IncludeModule(«iblock»)): проверяем модуль инфоблоков, если он установлен то подключаем его. Теперь нам доступны все связанные методы. Стоит отметить, что инфоблоки это основной инструмент любого сайта на битриксе, поэтому увидеть их не подключенными невозможно :).

2. Описание параметров:

— первый массив говорит о том, что сортировка случайная
— второй массив, выбираем из инфоблока с ID = 1, только среди активных
— третий массив для данной задачи не нужен, поэтому пишем false
— в четвертом указываем nTopCount = 1 — ограничиваем количество
— пятый массив — это выбранные свойства и поля из инфобока

3. запускаем цикл while ($arItem = $my_elements->GetNext()) {
тут стоит отметить, если вам нужно использовать только для одной новости, то можно заменить на

Но, если в выводе может измениться количество новостей, например, их потом станет 3, то цикл можно не трогать. Я бы не сказал что от цикла сайт работает медленнее и заметна разница в производительности.

4. $img = CFile::GetPath($arItem[‘PREVIEW_PICTURE’]); — получаем путь к изображению для анонса при помощи GetPath.

Как настроить ajax обновление для случайной статьи в 1С-Битрикс

Если вы будете нажимать F5, то статья будет обновляться. Наша цель уйти об обновления и повесить его на кнопку. Чтобы использовать ajax, напишем простой js (используется jQuery):

а вот как выглядит HTML кнопки:

Обратите внимание, data-id — передаем ID текущей новости, чтобы при клике не было дублей. А вот как выглядит страница ajax.php:

Внимательный читатель заметил, что при клике на кнопку, у нее не меняется data-id, про который упоминалось выше. Как это исправить пускай будет вашим заданием :).

Полный код для страницы /random/index.php (все стили и скрипты помещены на одну страницу, чтобы вам было удобнее все исправить под себя, но потом обязательно распределите стили и скрипты по компонентам и файлам шаблона):

На этом всё, надеюсь у вас всё получилось.

Если на вашем сайте нужно вывести случайную статью, последние новости или любые другие задачи связанные с выводом материалов, обращайтесь ко мне.

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.com/dmitriy/.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *