Здравствуйте! Есть ли возможность вывести 2 и более инфоблоков с помощью компоненты news?
11.04.2013 20:06:10
Здравствуйте! Есть ли возможность вывести 2 и более инфоблоков с помощью компоненты news?
|
|
|
|
11.04.2013 21:05:14
|
|||||||
|
|
11.04.2013 21:14:10
Это я понял, сделал:
component.php arFilter = array ( "IBLOCK_LID" => SITE_ID, "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y", ); убрал строку "IBLOCK_ID" => $arResult["ID"], а при вызове "IBLOCK_TYPE" => "", "IBLOCK_ID" => "", сделал так. Но не пойму как сделать проверку данных |
|
|
|
11.04.2013 21:24:38
все не то.
открыть файл /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 |
|
|
|
11.04.2013 21:26:20
А параметры передавать имеется ввиду при вызове компоненты?
|
|
|
|
11.04.2013 21:32:51
да
|
|
|
|
11.04.2013 21:34:41
Всеравно ничего не выводит
|
|
|
|
11.04.2013 21:45:04
При одном инфоблоке все норм, а когда делаю несколько пишет: раздел не найден
|
|
|
|
11.04.2013 22:10:32
Все, сделал.
|
|
|
|
13.04.2013 11:07:04
Nikoz
в чем загвоздка была ? |
|
|
|
13.04.2013 14:28:01
В 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", ?> |
|||
|
|
14.04.2013 22:02:48
что то я не понял, где вы передаете 2(или больше) инфоблоков... просто если задать массив из айдишников, он не пройдет проверку вот здесь
|
|||
|
|
15.04.2013 21:28:23
Уже понял. Стараюсь сделать по другому.
|
|
|
|
16.04.2013 11:17:52
Т.е. изменить проверку is_numeric на is_array в условии
??? |
|||||
|
|
16.04.2013 11:35:03
если редактировать параметры компонента через публичную часть, там для инфоблока выведено поле типа STRING. можете добаить ему множественность и будет массив. можете и is_array использовать. |
|||
|
|
16.04.2013 12:15:48
В news.list в components.php убрал строку $arParams["IBLOCK_ID"] = trim($arParams["IBLOCK_ID"]); Не пойму как сделать проверку входящих параметров на массив? |
|||
|
|
16.04.2013 19:15:55
|
|||
|
|
16.04.2013 20:07:41
$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() |
||||
|
|
|||