Чтобы передать данные, например, из шаблона компонента в шаблон сайта можно воспользоваться функционалом отложенных функций.
ShowViewContent это обычная отложенная функция такая же как и SetTitle или SetPageProperty.
Поэтому вывод контента с помощью ShowViewContent может быть выше по коду, чем передача самого контента с помощью AddViewContent или с помощью SetViewTarget + EndViewTarget.
Передаём контент в буферизируемую область:
$APPLICATION->AddViewContent('myContentBlockName', '<p>Hello</p>');
И указываем где нужно выводить содержимое этой буферизируемой области, но только в некешируемой части, например в шаблоне сайта:
$APPLICATION->ShowViewContent('myContentBlockName');
Если не будет выполнено ни одного AddViewContent, то в месте вывода ShowViewContent будет пусто.
Если не будет выполнен метод ShowViewContent, то контент переданный в AddViewContent не будет выведен нигде.
Если метод ShowViewContent будет выполнен в разных местах или, например, несколько раз подряд, то контент будет продублирован в каждом из этих мест.
При этом можно добавлять сколько угодно частей контента:
$APPLICATION->AddViewContent('myContentBlockName', '<p>Hello</p>');
$APPLICATION->AddViewContent('myContentBlockName', '<p>World</p>');
$APPLICATION->AddViewContent('myContentBlockName', '<p>!</p>');
Позиционировать выводимые части контента можно с помощью веса (третьего аргумента):
$APPLICATION->AddViewContent('myContentBlockName', '<span>world!</span>', 600);
$APPLICATION->AddViewContent('myContentBlockName', '<span>Hello, </span>', 500);
Как и все отложенные функции AddViewContent можно использовать только в некешируемой области, т. е. в component_epilog.php.
Но в шаблоне компонента даже в кешируемой области в файлах template.php и result_modifier.php можно использовать методы SetViewTarget + EndViewTarget:
$this->SetViewTarget('myContentBlockName');
?><p>Hello</p><?
$this->EndViewTarget();
Можно комбинировать SetViewTarget + EndViewTarget и AddViewContent.
Например, в template.php передаём одну часть:
$this->SetViewTarget('myContentBlockName', 600); // в этом методе тоже есть возможность указать вес (второй аргумент)
?><span>world</span><?
$this->EndViewTarget();
А в component_epilog.php другую:
$APPLICATION->AddViewContent('myContentBlockName', '<span>Hello, </span>', 500);