Ресайз изображений через обработчик событий Битрикс

Для клиента недавно решил интересную задачу: нужно было сделать так, чтобы при загрузке  изображений в элементы или разделы инфоблока, производилось их пропорциональное уменьшение (resize), если длина или ширина изображения превышает заданное значение.

За основу была взята Битриксовая функция ресайза CIBlock::ResizePicture

Собственно код:

Читать далее

Зоны доставки на Яндекс картах. Бесплатное решение для Битрикс от автора блога.

Всем привет! Наконец-то у меня дошли руки до реализации своего собственного решения для Битрикс Маркетплейса.

Собственно встречайте: Зоны доставки на Яндекс картах

Данное решение позволяет рисовать и отображать зоны доставки на Яндекс картах.

Ну и небольшой демонстрационный видос, как пользоваться решением:

Резиновое (адаптивное) видео с YouTube и Vimeo

Всем известно, что в iframe кодах встраивания видео YouTube и Vimeo присутствуют такие параметры, как размеры видеоплеера — ширина и высота. Что же делать, если сайт адаптивный?

Решение есть:

Обрамляем наш iframe дивником:

<div class="video-container">
     <iframe width="560" height="315" src="https://www.youtube.com/embed/{ID_ВИДЕО}?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>

Стили video-container-а ставим следующие:

Читать далее

Кнопки редактирования элементов инфоблока в режиме правки

В дополнение к статье Редактирование и удаление элементов и разделов из публичной части сайта Битрикс дополню реализацию следующего случая: как отобразить кнопки редактирования элементов инфоблока в режиме правки, если вывод этих элементов осуществляется простым GetList-ом

Собственно реализация:

CModule::IncludeModule("iblock");

//создаём экземпляр CBitrixComponent 
//для привязки к элементам инфоблока
//кнопок редактирования:
$app = new CBitrixComponent();

//какой-то гетлист...
$elems = CIBlockElement::GetList(array("SORT"=>"ASC"), 
                            array('IBLOCK_ID' => 2,
                                  'ACTIVE' => 'Y'
                                 ), 
                            false, 
                            false, 
                            array('ID',
                                  'IBLOCK_ID',
                                  'NAME'
                                 )
                            );
while ($elem = $elems->Fetch()){

 $arButtons = CIBlock::GetPanelButtons(
     $elem["IBLOCK_ID"],
     $elem["ID"],
     0,
     array("SECTION_BUTTONS"=>false, "SESSID"=>false)
 );

 $elem["ADD_LINK"] = $arButtons["edit"]["add_element"]["ACTION_URL"];
 $elem["EDIT_LINK"] = $arButtons["edit"]["edit_element"]["ACTION_URL"];
 $elem["DELETE_LINK"] = $arButtons["edit"]["delete_element"]["ACTION_URL"]; 

 $elem["ADD_LINK_TEXT"] = $arButtons["edit"]["add_element"]["TEXT"];
 $elem["EDIT_LINK_TEXT"] = $arButtons["edit"]["edit_element"]["TEXT"];
 $elem["DELETE_LINK_TEXT"] = $arButtons["edit"]["delete_element"]["TEXT"];

 $app->AddEditAction($elem['ID'], $elem['ADD_LINK'], $elem["ADD_LINK_TEXT"]);
 $app->AddEditAction($elem['ID'], $elem['EDIT_LINK'], $elem["EDIT_LINK_TEXT"]);
 $app->AddDeleteAction($elem['ID'], $elem['DELETE_LINK'], $elem["DELETE_LINK_TEXT"], array("CONFIRM" => 'Точно удалить?'));

 ?>
 <div id="<?=$app->GetEditAreaID($elem['ID'])?>">
    <!--какие-то данные элемента инфоблока-->
 </div>
 <?

})

Анимация AJAX загрузки. Эффект размытия.

Давно хотел сделать так, чтобы при загрузке информации в какой-либо блок (к примеру, AJAX-ом) помимо обычного прелоадера сам блок бы еще размывался.

Собственно пример можно посмотреть здесь: https://jsfiddle.net/va61mk5t/1/

Читать далее