Предварительно включите композитный сайт в настройках сайта
1) в dbconn.php в конец файла дописать
Теперь в режиме инкогнито запускаем сайт (начните с главной страницы). Обновляем страницу, и идем смотреть в наш log.txt
в файле вот это 0-0
Host: bxd24.itracker.ru Date: 2014-05-21 16:55:57 Module: composite Template: /bitrix/templates/books/components/bitrix/menu/horizontal_multilevel/template.php Request URI: / Script: /index.php CBitrixComponentTemplate::__IncludePHPTemplate < CBitrixComponentTemplate::IncludeTemplate < CBitrixComponent::showComponentTemplate < CBitrixComponent::includeComponentTemplate < include /srv/www/bx-dev/bxd24/public_html/bitrix/modules/main/classes/general/component_template.php:584 /srv/www/bx-dev/bxd24/public_html/bitrix/modules/main/classes/general/component.php:615 /srv/www/bx-dev/bxd24/public_html/bitrix/modules/main/classes/general/component.php:564 /srv/www/bx-dev/bxd24/public_html/bitrix/components/bitrix/menu/component.php:373 /srv/www/bx-dev/bxd24/public_html/bitrix/modules/main/classes/general/component.php:480 ----------
Этот текст нам говорит: «Уважаемый, вот этот шаблон
Template: /bitrix/templates/books/components/bitrix/menu/horizontal_multilevel/template.php
против композитного сайта…».
Тут два варианта, либо этому шаблону говорим, что он будет отдаваться статикой, либо динамикой.
Для отдачи статикой
$this->setFrameMode(true); // если передать $this->setFrameMode(false);, то шаблон // будет вечно против композитного сайта
если весь компонент нужно отдать динамикой:
или так
или так
можно сделать динамическую область и статическую область
<span id="sale-basket-basket-line-container"> <?$frame = $this->createFrame("sale-basket-basket-line-container", false)->begin(); ?> <div>// динамическая область</div> <?$frame->beginStub();?> <div>// статическая область</div> <?$frame->end();?> </span>
Если нужно сделать динамическую область в шаблоне сайта
Bitrix\Main\Page\Frame::getInstance()->startDynamicWithID("test-b"); // тут может быть компонент или вывод времени... Bitrix\Main\Page\Frame::getInstance()->finishDynamicWithID("test-b", ""); \Bitrix\Main\Page\Frame::getInstance()->startDynamicWithID("ololo"); $APPLICATION->ShowViewContent('ololo'); \Bitrix\Main\Page\Frame::getInstance()->finishDynamicWithID("ololo", "", "ID_OLOLO"); <div id="ID_OLOLO"></div>
Самостоятельно вставить данные дин. области можно на вот этих событиях:
событие происходит перед началом цикла вставки дин. блоков
событие происходит перед вставкой каждого блока. Если для конкретного блока в шаблоне компонента было указано $frame->setAutoUpdate(false), то вставка динамического блока не происходит
событие происходит после цикла вставки дин. блоков
где json — это все данные, которые пришли в композитном ajax-хите
block — это данные по конкретному блоки (id, контент и другие)
fromCache — равен true, когда данные вставляют из локальной SQL-базы.
BX.addCustomEvent('onAjaxSuccess', function(){ $(".checkbox, .radio").uniform(); }); BX.ready(function(){ BX.addCustomEvent("onFrameDataReceived", function(json) { console.log(json) }); });
Отсюда https://dev.1c-bitrix.ru/community/blogs/Docs_and_other/course-composite-website.php
Подробней тут http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=39&INDEX=Y
Данная информация является моей шпаргалкой, писал в основном ее для себя.
Вот тут есть еще много полезного Композитный сайт: tips & tricks