|
Цитата |
---|
написал: Итак, у вас менеджеры (элементы) привязаны к разделам, верно? И вам нужно менеджеров показывать в разделах, верно?
Если да, то надо бы сделать наоборот, к разделам привязывать менеджеров, если я верно понял задачу.
Хотя если судить по стартовому сообщению, то Цитата |
---|
Как сделать чтобы товары из инфблока 14 выводились бы в выбранных разделах 15 инфоблока ? |
Вообще, крайне желательно чтобы вы четко описали куда что и как должно выводиться, я до сих пор не совсем понимаю задачу.
Вы в менеджерах выводите товары из тех разделов, которые указаны. Свойства инфоблока Менеджеры хранятся в отдельной таблице? (так множественные свойства проще, наверное, получать).
1. Делаете гетлист по своим менеджерам, что-то типа: Код |
---|
<?CModule::IncludeModule("iblock");
$arFormanagerItems = Array();
$arSelect = Array("ID", "IBLOCK_ID", "PROPERTY_FORMANAGER");//FORMANAGER - свойство у менеджеров с привязкой к разделам каталога, исхожу из того, что свойства НЕ в отдельной таблице.
$arFilter = Array("ID"=>29, "IBLOCK_ID"=>8);//Указываем Инфоблок менеджеров и Айди конкретного менеджера, мы же в деталке менеджера выводим все это???
$res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, false, Array(), $arSelect);
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields();
$arFormanagerItems[]=$arFields["PROPERTY_FORMANAGER_VALUE"];
}
//$arFormanagerItems - тут на выходе будет массив с адишниками привязанных категорий.
?> |
Далее полученный массив передаете во второй гетлист, который уже будет отбирать ваши товары: Код |
---|
$arFormanagerElems = Array();
$arSelect = Array("ID", "IBLOCK_ID");
$arFilter = Array("SECTION_ID"=>$arFormanagerItems, "IBLOCK_ID"=>20);//Тут айди инфоблока каталога, который с товарами
$res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, false, Array(), $arSelect);
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields();
echo "<pre>"; var_dump($arFields); echo "</pre>";
$arFormanagerElems[]=$arFields["ID"];
}
//$arFormanagerElems тут уже массив с айди товаров из выбранных разделов. Этот массив вы передаете в фильтр для компонента, который вызываете ниже вне цикла. |
Цитата |
---|
Если компонент вывести из цикла, то тогда ничего не получится так как в цикле за 1 проход появляется только один ID привяза |
Соберите в цикле массив, далее уже массив целиком передавайте в фильтр компонента, компонент вызывается один раз. |
Спасибо ! Переделал так вот ) Код |
---|
$arr = []; // массив для цикла while для записи всех id менеджеров
while($ar_fields = $my_elements->GetNext())
{
$oll = ($ar_fields['ID']).",";
$arr[] = $oll;
}
$itog =(implode("", $arr));
//echo $itog;
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"specialists",
array(
"ACTIVE_DATE_FORMAT" => "d.m.Y",
"ADD_SECTIONS_CHAIN" => "Y",
"AJAX_MODE" => "N",
"AJAX_OPTION_ADDITIONAL" => "",
"AJAX_OPTION_HISTORY" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "A",
"CHECK_DATES" => "Y",
"DETAIL_URL" => "",
"DISPLAY_BOTTOM_PAGER" => "Y",
"DISPLAY_DATE" => "Y",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "Y",
"DISPLAY_TOP_PAGER" => "N",
"FIELD_CODE" => array(
0 => "",
1 => "",
),
"FILTER_NAME" => $itog,
"HIDE_LINK_WHEN_NO_DETAIL" => "N",
"IBLOCK_ID" => "15",
"IBLOCK_TYPE" => "specialists",
"INCLUDE_IBLOCK_INTO_CHAIN" => "Y",
"INCLUDE_SUBSECTIONS" => "Y",
"MESSAGE_404" => "",
"NEWS_COUNT" => "20",
"PAGER_BASE_LINK_ENABLE" => "N",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
"PAGER_SHOW_ALL" => "N",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_TEMPLATE" => ".default",
"PAGER_TITLE" => "Новости",
"PARENT_SECTION" => "",
"PARENT_SECTION_CODE" => "",
"PREVIEW_TRUNCATE_LEN" => "",
"PROPERTY_CODE" => array(
0 => "mail_sp",
1 => "tel_sp",
2 => "",
),
"SET_BROWSER_TITLE" => "Y",
"SET_LAST_MODIFIED" => "N",
"SET_META_DESCRIPTION" => "Y",
"SET_META_KEYWORDS" => "Y",
"SET_STATUS_404" => "N",
"SET_TITLE" => "Y",
"SHOW_404" => "N",
"SORT_BY1" => "ACTIVE_FROM",
"SORT_BY2" => "SORT",
"SORT_ORDER1" => "DESC",
"SORT_ORDER2" => "ASC",
"STRICT_SECTION_CHECK" => "N",
"COMPONENT_TEMPLATE" => "specialists"
),
false
);
|
! Всё идеально вроде, но не работает ( фильтр не отрабатывает так вот его делаю: $GLOBALS['oleg'] = array('ID' => array($itog));
|