Здравствуйте! Есть ли возможность вывести 2 и более инфоблоков с помощью компоненты news?
|
Здравствуйте! Есть ли возможность вывести 2 и более инфоблоков с помощью компоненты news?
|
|
|
|
|
|
|||||||
|
|
|
|
Это я понял, сделал:
component.php arFilter = array ( "IBLOCK_LID" => SITE_ID, "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y", ); убрал строку "IBLOCK_ID" => $arResult["ID"], а при вызове "IBLOCK_TYPE" => "", "IBLOCK_ID" => "", сделал так. Но не пойму как сделать проверку данных |
|
|
|
|
|
все не то.
открыть файл /bitrix/components/bitrix/news.list/component.php там в первых строках есть 12 строка у меня $arParams["IBLOCK_ID"] = trim($arParams["IBLOCK_ID"] ;ее закоментить и в параметры передать вместо 'IBLOCK_ID'=>4(к примеру) 'IBLOCK_ID'=>array(4,3,5,1,2,)(к примеру) /bitrix/components/bitrix/news.list изменять компонент заводской не советую так как при обновлении системы обновление может затереть ваши наработки. чтоб этого не было скопировать в папку /bitrix/components/ваша_папка/news.list |
|
|
|
|
|
А параметры передавать имеется ввиду при вызове компоненты?
|
|
|
|
|
|
да
|
|
|
|
|
|
Всеравно ничего не выводит
|
|
|
|
|
|
При одном инфоблоке все норм, а когда делаю несколько пишет: раздел не найден
|
|
|
|
|
|
Все, сделал.
|
|
|
|
|
|
Nikoz
в чем загвоздка была ? |
|
|
|
|
В component.php в строке //WHERE $arFilter = array ( "IBLOCK_ID" => $arResult["ID"], "IBLOCK_LID" => SITE_ID, "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y", ); Удалил "IBLOCK_ID" => $arResult["ID"], А до вызова компоненты добавил: <? GLOBAL $arrFilter; $arrFilter = array( "IBLOCK_ID" => $arParams["IBLOCK_ID"],// выбирается в настройках компоненты "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],// выбирается в настройках компоненты ); ?> <?$APPLICATION->IncludeComponent( "user:news.list", "", Array( ... "CACHE_FILTER" => "Y", ... "FILTER_NAME" => "arrFilter", ?> |
|||
|
|
|
|
что то я не понял, где вы передаете 2(или больше) инфоблоков... просто если задать массив из айдишников, он не пройдет проверку вот здесь
|
|||
|
|
|
|
Уже понял. Стараюсь сделать по другому.
|
|
|
|
|
Т.е. изменить проверку is_numeric на is_array в условии
??? |
|||||
|
|
|
если редактировать параметры компонента через публичную часть, там для инфоблока выведено поле типа STRING. можете добаить ему множественность и будет массив. можете и is_array использовать. |
|||
|
|
|
В news.list в components.php убрал строку $arParams["IBLOCK_ID"] = trim($arParams["IBLOCK_ID"]); Не пойму как сделать проверку входящих параметров на массив? |
|||
|
|
|
|
|||
|
|
|
|
$arParams["IBLOCK_ID"] = trim($arParams["IBLOCK_ID"]
;что он делает? он отрезает пробелы в начале и в конце параметра. Входной параметр идет как строка. Мы же меняем этот входной параметр на массив. проверить: if(is_array($arParams['IBLOCK_ID']) && !empty($arParams['IBLOCK_ID'])){ $arParams['IBLOCK_ID'] = $arParams['IBLOCK_ID']; } else { echo 'Не верный ИД инфоблока'; die(); } это как вариант. Можно еще сюда же добавить проверку от дурака с использованием того-же trim() или intval() |
||||
|
|
|
|||