Вывод контента до или после с помощью 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/