А, другой пример нашёл. Там вообще список ID элементов берётся из левой таблицы.
Если повыкусывать лишнее, останется что-то типа:
component.php
[CODE]<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$arParams['DISPLAY_TOP_PAGER'] = $arParams['DISPLAY_TOP_PAGER']=='Y';
$arParams['DISPLAY_BOTTOM_PAGER'] = $arParams['DISPLAY_BOTTOM_PAGER']!='N';
$arParams['PAGER_TITLE'] = trim($arParams['PAGER_TITLE']);
$arParams['PAGER_SHOW_ALWAYS'] = $arParams['PAGER_SHOW_ALWAYS']!='N';
$arParams['PAGER_TEMPLATE'] = trim($arParams['PAGER_TEMPLATE']);
$arParams['PAGER_DESC_NUMBERING'] = $arParams['PAGER_DESC_NUMBERING']=='Y';
$arParams['PAGER_DESC_NUMBERING_CACHE_TIME'] = intval($arParams['PAGER_DESC_NUMBERING_CACHE_TIME']);
$arParams['PAGER_SHOW_ALL'] = $arParams['PAGER_SHOW_ALL']!=='N';
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
if($arParams['DISPLAY_TOP_PAGER'] || $arParams['DISPLAY_BOTTOM_PAGER'])
{
$arNavParams = array(
'nPageSize' => $arParams['ELEMENT_COUNT'],
'bDescPageNumbering' => $arParams['PAGER_DESC_NUMBERING'],
'bShowAll' => $arParams['PAGER_SHOW_ALL'],
);
$arNavigation = CDBResult::GetNavParams($arNavParams);
if($arNavigation['PAGEN']==0 && $arParams['PAGER_DESC_NUMBERING_CACHE_TIME']>0)
$arParams['CACHE_TIME'] = $arParams['PAGER_DESC_NUMBERING_CACHE_TIME'];
}
else
{
$arNavParams = array(
'nTopCount' => $arParams['ELEMENT_COUNT'],
'bDescPageNumbering' => $arParams['PAGER_DESC_NUMBERING'],
);
$arNavigation = false;
}
if ($this->StartResultCache(false, array($param1, $param2, $arNavigation, $param3)))
{
if(!CModule::IncludeModule('iblock'))
{
$this->AbortResultCache();
ShowError('Модуль "Инфоблоки" не установлен.');
return;
}
$arResult = array();
// ......
// тут всякое шаманство
// ......
$strSql = '
SELECT ELEMENT_ID, MIN_SUM, MIN_DAYS, MIN(SOMETHING) as MIN_SOMETHING, MAX(SOMETHING) as MAX_SOMETHING
FROM some_table
WHERE '.implode(' AND ', $arWhere).'
GROUP BY ELEMENT_ID '.$strOrder;
$res = $GLOBALS['DB']->Query($strSql, false, $err_mess.__LINE__);
$res->NavStart($arParams['ELEMENT_COUNT']);
while ($el = $res->Fetch())
$arResult['ITEMS'][$el['ELEMENT_ID']] = $el;
$arResult["NAV_STRING"] = $res->GetPageNavStringEx(
$navComponentObject,
'элемент, элемента, элементов',
$arParams["PAGER_TEMPLATE"],
false
);
$arResult["NAV_RESULT"] = $navComponentObject->arResult;
if (count($arResult['ITEMS']))
{
// список элементов на этой странице постранички
$res = CIBlockElement::GetList(
false,
array(
'IBLOCK_ID' => SOME_IBLOCK_ID,
'ID' => array_keys($arResult['ITEMS']),
),
false,
false,
array('ID', 'OTHER_FIELDS')
);
while ($el = $res->GetNext(false, false))
{
$arResult['ITEMS'][$el['ID']] = $el;
}
}
$this->IncludeComponentTemplate();
}
else
{
$this->AbortResultCache();
}
?> [/CODE]