Last active
February 4, 2020 08:37
-
-
Save Elvinz/e31e3b63f06eccbfc40ba4419b65c278 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FrameBuffered - класс для буферизированных динамических областей. Именно объект этого класса создаётся когда в шаблоне компонента мы вызываем $this->createFrame(). С помощью этого класса удобно создавать заглушки динамических областей. | |
$frame = new \Bitrix\Main\Page\FrameBuffered("my_dynamic"); // или $this->createFrame() в шаблоне | |
$frame->begin(); | |
// Содержание динамической области | |
$frame->beginStub(); | |
// Заглушка | |
$frame->end(); | |
Метод удобный, но в нём не работают отложенные функции. Для обхода этой ситуации создан второй класс: | |
FrameStatic - класс для статических динамических областей. | |
$dynamicArea = new \Bitrix\Main\Page\FrameStatic("my_dynamic"); | |
$dynamicArea->setAnimation(true); | |
$dynamicArea->setStub("заглушка"); | |
$dynamicArea->setContainerID("my-div-id"); | |
$dynamicArea->startDynamicArea(); | |
// Содержимое динамической области | |
// HTML, PHP, подключение компонентов | |
$dynamicArea->finishDynamicArea(); | |
Класс ничего не буферизирует, а просто расставляет метки начала и конца динамической зоны и потом, когда страничка выполнилась вся по этим меткам вырезается контент динамической области. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
$dynamicArea = new \Bitrix\Main\Page\FrameStatic("my_dynamic"); | |
$dynamicArea->setAnimation(true); | |
$dynamicArea->setStub("заглушка"); | |
$dynamicArea->setContainerID("my-div-id"); | |
$dynamicArea->startDynamicArea(); | |
if(!empty($arResult["PRODUCT"]["QUANTITY"])){ | |
// Поскольку от 1 до 12, а в массиве, как мы знаем, отсчет идет от нуля (0 до 11), | |
// то вычитаем 1 чтоб правильно выбрать уже из нашего массива. | |
$arr = [ | |
'января', | |
'февраля', | |
'марта', | |
'апреля', | |
'майя', | |
'июня', | |
'июля', | |
'августа', | |
'сентября', | |
'октября', | |
'ноября', | |
'декабря' | |
]; | |
?> | |
<span class="delivery_time"> | |
Ближайшая дата доставки: | |
<? | |
if(date('w') == 6){ | |
echo date('d', strtotime('+2 day')) .' '; | |
$month = date('n', strtotime('+2 day '))-1; | |
}else{ | |
echo date('d', strtotime('+1 day')) .' '; | |
$month = date('n', strtotime('+1 day '))-1; | |
} | |
echo $arr[$month].' '; | |
echo " - "; | |
if(date('w') == 6){ | |
echo date('d', strtotime('+4 day')) .' '; | |
$month2 = date('n', strtotime('next +4 day '))-1; | |
}else{ | |
echo date('d', strtotime('+3 day')) .' '; | |
$month2 = date('n', strtotime('+3 day '))-1; | |
} | |
echo $arr[$month2].' '; | |
?> | |
</span> | |
<?} else{?> | |
<div class="delivery_none" > | |
<span>Уточняйте у менеджера</span></div> | |
<?} | |
$dynamicArea->finishDynamicArea(); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment