Документация для разработчиков
Темная тема

GetList

Описание и параметры

CDBResult
CBlogPost::GetList(
	array arOrder = Array("ID"=>"DESC"),
	array arFilter = Array(),
	bool  arGroupBy = false,
	bool  arNavStartParams = false,
	array arSelectFields = Array()
);

Возвращает список сообщений по фильтру arFilter, отсортированный в порядке arOrder. Метод нестатический.

Примечание: фильтрация по ID категорий делается так: CATEGORY_ID_F. В результате ID категорий будут выведены через запятую.

Параметры метода

ПараметрОписание
arOrder Массив для сортировки результата. Массив вида array("поле сортировки"=>"направление сортировки" [, ...]) Поле для сортировки может принимать значения:
  • ID - идентификатор сообщения;
  • TITLE - заголовок сообщения;
  • BLOG_ID - идентификатор блога;
  • AUTHOR_ID - идентификатор автора сообщения;
  • DETAIL_TEXT - текст сообщения;
  • DATE_CREATE - дата создания сообщения;
  • DATE_PUBLISH - дата публикации сообщения;
  • KEYWORDS - ключевые слова сообщения;
  • PUBLISH_STATUS - статус публикации сообщения;
  • ATRIBUTE - атрибуты сообщения;
  • ENABLE_TRACKBACK - разрешены ли trackback'и к сообщению;
  • ENABLE_COMMENTS - разрешены ли комментарии к сообщению;
  • NUM_COMMENTS - количество комментариев;
  • NUM_TRACKBACKS - количество trackback'ов;
  • AUTHOR_LOGIN - логин автора сообщения;
  • AUTHOR_NAME - имя автора сообщения;
  • AUTHOR_LAST_NAME - фамилия автора сообщения;
  • AUTHOR_EMAIL - Email автора сообщения;
  • VIEWS — сортировка по количеству просмотров.
Необязательный. По умолчанию фильтруется по убыванию идентификатора сообщения.
arFilter Массив вида array("фильтруемое поле"=>"значение фильтра" [, ...]). Фильтруемое поле может принимать значения:
  • ID - идентификатор сообщения;
  • TITLE - заголовок сообщения;
  • BLOG_ID - идентификатор блога;
  • BLOG_ACTIVE - признак активности блога Стандартный GetList выбирает записи и из неактивных блогов. Чтобы выборка не включала в себя неактивные блоги нужно указать:
    $arFilter = Array ( "BLOG_ACTIVE" => "Y" );
    ;
  • AUTHOR_ID - идентификатор автора сообщения;
  • DETAIL_TEXT - текст сообщения;
  • DATE_CREATE - дата создания сообщения;
  • DATE_PUBLISH - дата публикации сообщения;
  • DATE_PUBLISH_DAY - день публикации сообщения;
  • DATE_PUBLISH_MONTH - месяц публикации сообщения;
  • DATE_PUBLISH_YEAR - год публикации сообщения;
  • KEYWORDS - ключевые слова сообщения;
  • PUBLISH_STATUS - статус публикации сообщения;
  • CATEGORY_ID_F - идентификатор категории сообщения;
  • ATRIBUTE - атрибуты сообщения;
  • ENABLE_TRACKBACK - разрешены ли trackback'и к сообщению;
  • ENABLE_COMMENTS - разрешены ли комментарии к сообщению;
  • NUM_COMMENTS - количество комментариев;
  • NUM_TRACKBACKS - количество trackback'ов;
  • AUTHOR_LOGIN - логин автора сообщения;
  • AUTHOR_NAME - имя автора сообщения;
  • AUTHOR_LAST_NAME - фамилия автора сообщения;
  • AUTHOR_EMAIL - Email автора сообщения;
  • VIEWS — сортировка по количеству просмотров.
Перед названием фильтруемого поля может указать тип фильтрации:
  • "!" - не равно
  • "<" - меньше
  • "<=" - меньше либо равно
  • ">" - больше
  • ">=" - больше либо равно

"значения фильтра" - одиночное значение или массив.

Необязательный. По умолчанию записи не фильтруются.
arGroupBy Массив полей, по которым группируются записи. Массив имеет вид:
array(
	"название_поля1",
	"группирующая_функция2" => "название_поля2",
	...
)
В качестве "название_поляN" может стоять любое поле. В качестве группирующей функции могут стоять:
  • COUNT - подсчет количества;
  • AVG - вычисление среднего значения;
  • MIN - вычисление минимального значения;
  • MAX - вычисление максимального значения;
  • SUM - вычисление суммы.
Если массив пустой, то метод вернет число записей, удовлетворяющих фильтру.

Необязательный. По умолчанию - false - означает, что результат группироваться не будет.
arNavStartParams Массив параметров выборки. Может содержать следующие ключи:
  • "nTopCount" - количество возвращаемых методом записей будет ограничено сверху значением этого ключа
  • любой ключ, принимаемый методом CDBResult::NavQuery в качестве третьего параметра.
Необязательный. По умолчанию - false - означает, что параметров выборки нет.
arSelectFields Массив полей записей, которые будут возвращены методом. Можно указать только те поля, которые необходимы. Если в массиве присутствует значение "*", то будут возвращены все доступные поля.

Необязательный. По умолчанию - пустой массив array() - означает, что будут возвращены все поля основной таблицы запроса.

Примечание: в компонент blog.blog невозможно передать фильтрацию по опубликованности. Для этого необходимо скопировать стандартный компонент в своё пространство имён и вручную дописать проверку на опубликованность.

Возвращаемое значение

Возвращается объект CDBResult.

Смотрите также

Примеры использования

<?
// выберем все опубликованные сообщения всех блогов за апрель 2007 года
// у которых больше двух комментариев

$SORT = Array("DATE_PUBLISH" => "DESC", "NAME" => "ASC");
$arFilter = Array(
	"PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH,
	"DATE_PUBLISH_MONTH" => '04',
	"DATE_PUBLISH_YEAR" => '2007',
	">NUM_COMMENTS" => 2
);	

$dbPosts = CBlogPost::GetList(
	$SORT,
	$arFilter
);

while ($arPost = $dbPosts->Fetch())
{
	print_r($arPost);
}
?>
// выборка всех сообщений блога с заголовком, включающим слово "фильм"

$arFilter =  Array ( "~TITLE" => "%фильм%" );


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Александр Андрианов
Для успешной фильтрации сообщений (добавленных через апи CBlogPost::Add($arFields))
по полю CATEGORY_ID_F, необходимо добавить категорию CBlogPostCategory::Add(Array("BLOG_ID" => 1, "POST_ID" => $newID, "CATEGORY_ID"=>2));

Код
$arFields = array(
                     "TITLE" => $arResult['arInfoAlb']['response'][0]['title'],
                     "DETAIL_TEXT" => $cont,
                                                        "DETAIL_TEXT_TYPE"   => "text",
                     "BLOG_ID" => 1,
                     "AUTHOR_ID" => $USER->GetID(),
                     "=DATE_CREATE" => $DB->GetNowFunction(),
                     "DATE_PUBLISH" => $arResult['albCreat'],
                     "PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH,
                     "ENABLE_TRACKBACK" => 'N',
                     "ENABLE_COMMENTS" => 'N',
                     "CATEGORY_ID" => 2,
                                                        "PATH" => '/blog/journal/#post_id#/',
                                                        "ATRIBUTE"     => $ATRIBUTE,          
                  );

                  $newID = CBlogPost::Add($arFields);
                                                CBlogPostCategory::Add(Array("BLOG_ID" => 1, "POST_ID" => $newID, "CATEGORY_ID"=>2));
 
0
Пётр Громов
Также, если добавить в вызов стандартного компонента bitrix:blog.blog дополнительные входные параметры, то можно отсортировать значения по нужному нам признаку.

Вот, например, сортировка по условию "сначала все, отмеченные галочкой "выводить в топ", затем по дате публикации"
Код
<?$APPLICATION->IncludeComponent("bitrix:blog.blog", "office_detail_blog_short_view", array(
            "YEAR" => $year,
            "MONTH" => $month,
            "DAY" => $day,
        X 
            /* Вламываем сортировку */
            "SORT_BY1" => "UF_BLOG_POST_ON_TOP",
            "SORT_ORDER1" => "desc",
            "SORT_BY2" => "DATE_PUBLISH",
            "SORT_ORDER2" => "desc",
            ),
            false
        );?>
Примечание: как и говорилось раньше, параметр UF_BLOG_POST_ON_TOP добавляем из вкладки "Пользовательские поля". Тип "Да/нет", объект BLOG_POST, название UF_BLOG_POST_ON_TOP.
0
Александр Пятницин
Посту блога можно задать пользовательское свойство вручную, указав в качестве объекта "BLOG_POST".
Так же по этому полю будет доступно фильтрация.

Код
CModule::IncludeModule("blog"); 

//Сортировка 
$SORT = Array("DATE_PUBLISH" => "DESC", "NAME" => "ASC");  

//Выбираемые из базы поля, "UF_ONMAIN" - пользовательское свойство типа "Да/нет"
$SELECT = array("ID", "TITLE", "PUBLISH_STATUS", "AUTHOR_ID", "UF_ONMAIN");  

//Фильтруем по нашему свойству, ищем записи, где оно установлено как "Да"
$arFilter = Array("UF_ONMAIN" => True); 

$dbPosts = CBlogPost::GetList(
        $SORT,
        $arFilter,
        false,
        false,
        $SELECT
    );

while ($arPost = $dbPosts->Fetch())
{
    var_dump($arPost);
    echo '<br/><br/>';
}


Так можно реализовать, к примеру, свойство "показывать на главной", и выводить записи пользователей, которые одобрил модератор.
Свойство можно менять стандартным способом через CBlogPost::Update():

Код
$arFields = array(
    "UF_ONMAIN" => "Y"
);

CBlogPost::Update($PostId, $arFields);
1
Денис Клоков
Кол-во просмотров поста храниться в "VIEWS", пример:
Код
$dbPosts = CBlogPost::GetList(
        $sort,
        $arFilter,
        false,
        false,
        array("ID", "TITLE", "AUTHOR_ID", "DATE_CREATE", "PUBLISH_STATUS", "BLOG_ID", "VIEWS";)
    );
2
Mikhail Kryachek
Если необходима фильтрация по like, то необходимо формировать фильтра вида:

Код
$arFilter =  Array ( "~TITLE" => "%фильм%" );


Результатом будет выборка всех сообщений блога с заголовком включаеющим слово "фильм", например "новый фильм", "хороший фильм идет по 1 каналу"
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх