Сообщения

Сообщения за март, 2017

Битрикс: несколько форм на одной странице

Частая ситуация что на странице расположено несколько форм и после отправки одной из них необходимо вывести сообщение. При успешной отправке битрикс добавляет к ссылке formresult=addok. Но как определить какая форма успешно отработала? Для этого можно добавить id формы в url отправки: Заменяем это: <?=$arResult[ "FORM_HEADER" ]?> На это: < form name = "<?=$arResult[ "arForm" ][ "SID" ]?>" action = "<?=$APPLICATION -> GetCurPageParam( "form_id=" . $arResult[ "arForm" ][ "ID" ], array ( "FORM_ID" ))?>" method = "POST" enctype = "multipart/form-data" > <?=bitrix_sessid_post()?> < input type = "hidden" name = "WEB_FORM_ID" value = "<?=$arResult[ "arForm" ][ "ID" ]?>" > И добавляем вывод сообщения об успешной отправке: <? if ( isset ($_REQUEST[ "formr

Битрикс: какого х*я ты ищешь в неактивных разделах

Столкнулся с проблемой что если родительский раздел не активен а элементы активны битрикс все равно индексирует их. Чтоб исправить этот казус вешаем обработчик и запускаем переиндексацию. После в результатах поиска элементы неактивного раздела исчезнут. <? AddEventHandler( 'search' , 'BeforeIndex' , "onBeforeIndexHandler" ); function onBeforeIndexHandler ($arFields) { if ($arFields[ "MODULE_ID" ] == "iblock" ) { $check = substr ($arFields[ "ITEM_ID" ], 0 , 1 ); if ($check == "S" ) { $res = CIBlockSection :: GetList( Array ( 'SORT' => 'ASC' ) , Array ( "IBLOCK_ID" => $arFields[ "PARAM2" ], "ACTIVE" => "Y" , "ID" => substr ($arFields[ "ITEM_ID" ], 1 ), "GLOBAL_ACTIVE" => "Y" ) , false , Arr

PHP substr HTML

Корректно разделить текст в $arItem["~PREVIEW_TEXT"] без обрезания тегов. <? $max_lenght = 1000 ; $preview = "" ; $body = "" ; if ( strlen ($arItem[ "~PREVIEW_TEXT" ]) > $max_lenght) { preg_match_all ( '/<( [^>] + )>. * ?<\/(\1)>/s' , $arItem[ "~PREVIEW_TEXT" ], $matches); if (( isset ($matches[ 0 ])) && ( count ($matches[ 0 ]) > 1 )) { foreach ($matches[ 0 ] as $match) { if ( strlen (($preview)) < $max_lenght) { $preview .= $match; } else { $body .= $match; } } } } if ( ! strlen ($body)):?> < div class = "text" > <?=$arItem[ "~PREVIEW_TEXT" ]?> </ div > <? else :?> < div class = "service-list-preview" > <?=$preview?> </ div > < div class = "service-list-body" > <?=$b

Битрикс: какого х*я у меня не работает группировка

CIBlockElement::GetList и с установкой группировки не выводит поля? Убираем сортировку и все работает: $res = CIBlockElement :: GetList ( Array ( ) , Array ( " IBLOCK_ID " = > 4 , " SECTION_ID " = > $item [ " ID " ] , " ACTIVE " = > " Y " , " INCLUDE_SUBSECTIONS " = > " Y " ) , Array ( " PROPERTY_BRAND " ) ) ; while ( $ar_fields = $res - > Fetch ( ) ) { $brands [ ] = $ar_fields ; }