Всем привет!
У меня вот такой вопрос: умеет ли битриксовская библиотека BX отслеживать события класса CIBlockElement ?
Есть вот такая задача:
Есть инфоблок "Цвет". У элементов этого инфоблока есть свойство "COLOR" - текстовая строка, в которую в формате #FFFFFF можно задавать цвет.
Нужно, чтобы скрипт без перезагрузки страницы отслеживал момент, когда новый элемент только что был добавлен, и вытаскивал бы из самого "свежего" элемента этого инфоблока свойство COLOR.
Просто как получить самый новый элемент из инфоблока, и вытащить оттуда свойство - это я сделал. Не понятно как это сделать БЕЗ перезагрузки страницы.
Вот пример:
Вот код этой страницы:
Этот код вытаскивает последний добавленный элемент инфоблока с ID=4 и выводит его цвет - в данном случае как фон у прямоугольника.
Подскажите пожалуйста, как сделать, чтобы если пользователь уже находится на этой странице, и в этот момент добавляется новый элемент инфоблока с другим цветом, чтобы и на странице без перезагрузки цвет также обновлялся бы??
У меня вот такой вопрос: умеет ли битриксовская библиотека BX отслеживать события класса CIBlockElement ?
Есть вот такая задача:
Есть инфоблок "Цвет". У элементов этого инфоблока есть свойство "COLOR" - текстовая строка, в которую в формате #FFFFFF можно задавать цвет.
Нужно, чтобы скрипт без перезагрузки страницы отслеживал момент, когда новый элемент только что был добавлен, и вытаскивал бы из самого "свежего" элемента этого инфоблока свойство COLOR.
Просто как получить самый новый элемент из инфоблока, и вытащить оттуда свойство - это я сделал. Не понятно как это сделать БЕЗ перезагрузки страницы.
Вот пример:
Вот код этой страницы:
| Код |
|---|
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Интернет-магазин \"Одежда\"");
?>
<st yle>
.color{
width: 100px;
height: 100px;
color: #fff;
}
</style>
<sc ript>
BX.ready(function(){
console.log('BX.ready');
});
</sc ript>
<?
if (CModule::IncludeModule('iblock')) {
$arOrder = Array("created"=>"DESC");
$arFilter = Array("IBLOCK_ID"=>4, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$arGroupBy = Array();
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM","PROPERTY_COLOR");
$res = CIBlockElement::GetList($arOrder, $arFilter, false, Array("nTopCount"=>1), $arSelect);
while($ob = $res->GetNextElement()){
$arProps = $ob->GetProperties();
$last_color = $arProps['COLOR']['VALUE'];
//echo $last_color;
}
}
?>
<?
if($last_color!=null){?>
<div class="color" st yle="background:<?=$last_color?>">
<?=$last_color?>
</div>
<?}?>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?> |
Этот код вытаскивает последний добавленный элемент инфоблока с ID=4 и выводит его цвет - в данном случае как фон у прямоугольника.
Подскажите пожалуйста, как сделать, чтобы если пользователь уже находится на этой странице, и в этот момент добавляется новый элемент инфоблока с другим цветом, чтобы и на странице без перезагрузки цвет также обновлялся бы??