Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Выборка из каталога по датам

00 голосов
3
Здравствуйте. Скажите пожалуйста, каким образом можно реализовать следущую задачу. Есть сайт, на нем есть каталог товаров. В каталоге скажем 10 разделов. В разделах еще подразделы встречаются. А выборку сделать надо из четырех, включая подразделы.
Назовем их
-авто
-мото
-вело
-фото
и так далее. Нужно чтобы на страничке [последние объявления] отображались товары из каждой категории за указаный период, например за одну неделю от текущей даты. Сортировка - по ID предмета. Но чтобы из всех нужных категорий.
Возможно ли использование какого-то конкретного компонента, или надо писать что-то свое? Если свое, то в сторону каких функций искать? Наверное можно даже sql запросом такое сделать?
Версия битрикса 5.9.
Заранее спасибо всем откликнувшимся :)
спросил 06 Июнь, 13 от Zigfrid (160 баллов)

3 Ответы

00 голосов
Выбор элементов с учетом их разделов
Код
<?
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", "SECTION_ID", 'IBLOCK_ID');
$arFilter = Array(
      "IBLOCK_ID"=>IntVal($IBLOCK_ID), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", 
      "SECTION_ID"=>array(ID_SECTION_1, ID_SECTION_2, ....), /// Это массив для разделов
      "INCLUDE_SUBSECTIONS"=>"Y" // тут указали выбор подразделов
);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNextElement())
{
  $arFields = $ob->GetFields();
  print_r($arFields);
}
?>

Где
ID_SECTION_1, ID_SECTION_2 ... - это ID разделов элементов
INCLUDE_SUBSECTIONS - если задан фильтр по родительским группам SECTION_ID, то будут также выбраны элементы находящиеся в подгруппах этих групп

для указания диапазона дат пользуйтесь условием для DATE_ACTIVE_FROM или похожим полем

Документация по теме CIBlockElement::GetList
ответил 06 Июнь, 13 от spamer (500 баллов)
00 голосов
Я видимо не понимаю что-то фундаментальное :(
От себя добавил if(CModule::IncludeModule("iblock")), без этого ошибку выдавало
Сделал php страничку вот с таким кодом

Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
?>
<?
if(CModule::IncludeModule("iblock"))
{
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM", "SECTION_ID", 'IBLOCK_ID');
$arFilter = Array(
      "IBLOCK_ID"=>IntVal($IBLOCK_ID), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y",
      "SECTION_ID"=>array(11,12,13,17), /// Это массив для разделов
      "INCLUDE_SUBSECTIONS"=>"Y" // тут указали выбор подразделов
);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNextElement())
{
  $arFields = $ob->GetFields();
  print_r($arFields);
}
}
?> 
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>


теперь ничего не выдает. Пустой шаблон сайта без выборки.
ID разделов смотрел примерно по такому адресу
site.ru/bitrix/admin/iblock_admin.php?type=catalog
Там отображаются все разделы каталога и в крайней правой колонке - их ID
Что я делаю не так? :(
ответил 14 Июнь, 13 от Zigfrid (160 баллов)
00 голосов
Код
$IBLOCK_ID
забыли указать
ответил 17 Сен, 13 от spamer (500 баллов)

Похожие вопросы

0 голосов
3 ответов
0 голосов
3 ответов
спросил 16 Июнь, 13 от ASpec (160 баллов)
0 голосов
3 ответов
спросил 24 Март, 14 от LoVeAndPa (160 баллов)
0 голосов
3 ответов
спросил 18 Март, 14 от Marino (100 баллов)