Вывод контента до или после с помощью ShowViewContent в 1С-Битрикс
К примеру можно в header.php указать:
$APPLICATION->ShowViewContent('view_insert');
Затем вывод может быть в каком нибудь компоненте в footer.php:
<?$this->SetViewTarget("view_insert");?>
...
<?$this->EndViewTarget();?>
То что было выведено в подвале будет отображено сверху страницы.
В примере сохраняется вывод компонента фильтрации каталога:
if(!isset($_REQUEST["ajax"])) $this->SetViewTarget("sidebar");
$APPLICATION->IncludeComponent(
"bitrix:catalog.smart.filter",
"",
array(...),
false
);
if(!isset($_REQUEST["ajax"])) $this->EndViewTarget("sidebar");
Вывод визуализации работы скрипта между $this->SetViewTarget(«sidebar») и $this->EndViewTarget(«sidebar»):
$APPLICATION->ShowViewContent('sidebar');
Пример записи вывода для последующего вывода:
<?ob_start();
echo 'SomeText';
$out1 = ob_get_contents();
ob_end_clean();
$APPLICATION->AddViewContent('block_id',$out1); ?>
Пример использования конструкции к файле component_epilog.php:
<?$this->__template->SetViewTarget('mdf_title');?>
same text here ...
<?$this->__template->EndViewTarget();?>
Очень часто бывает ситуация, когда заголовок h1 по структуре прописывается в шапке сайта, но на некоторых страницах его нужно отключить, либо вывести какой-то специфический. В этом нам также помогут отложенные функции. В init.php, или просто в header.php или где-то еще, где вам удобно, прописываем функцию:
if(!function_exists('mdfH1')){
function mdfH1()
{
global $APPLICATION;
if(!$APPLICATION->GetPageProperty("H1")){
return '<1>'.$APPLICATION->GetTitle(false).'</h1>';
} else {
$h1 = $APPLICATION->GetPageProperty("H1");
if(!$h1 || $h1==false || $h1=='false')
{
return '';
} elseif(strlen($h1)<=0){
return '<h1>'.$APPLICATION->GetTitle(false).'</h1>';
} else {
return '<h1>'.$h1.'</h1>';
}
}
}
}
И в нужном месте, где должен выводиться заголовок h1 вызываем данную функцию:
$APPLICATION->AddBufferContent('mdfH1');
Если функция прописана в классе, то вызов ее примет вид:
$APPLICATION->AddBufferContent(array('SomeClassName', 'mdfH1'));
Таким образом, если заголовок выводить не нужно — просто на нужной странице задаем свойство страницы «H1» со значением «false»:
$APPLICATION->SetPageProperty('H1', 'false');
Источник: https://pai-bx.com/wiki/1c-bitrix/29-example-of-setviewtarget/