Можно и не использовать ob.
Ну а если нужен вызов с параметрами, тогда например так, пусть нужны параметры PARAMX, ID, IBLOCK_ID, а DETAIL_TEXT равен $text = "fasdfsdfsd #MY_COMPONENT(a,3,4)# dsa d sad asd sa #MY_COMPONENT(d,1,2)# dad sad as";
В шаблон:
Код |
---|
preg_match_all('~#MY_COMPONENT\((.*?)\)#~',$text,$m);
$arText = explode('#MY_COMPONENT#',preg_replace('~#MY_COMPONENT\((.*?)\)#~','#MY_COMPONENT#',$text));
for($i=0;$i<count($arText);$i++) {
$p = explode(',',$m[1][$i-1]);
$arParams['PARAMX'] = $p[0];
$arParams['ID'] = $p[1];
$arParams['IBLOCK_ID'] = $p[2];
if ($i>0) $APPLICATION->IncludeComponent('my_component','',$arParams);
echo $arText[$i];
} |