Полный цикл в digital

Реализация lazy loading через result_modifier.php

Первым шагом выбираем все изображения из текста, затем получаем все атрибуты для конкретного изображения и данные по изображению помещаем в массив, для каждого изображения делаем подмену в детальном тексте.

/*
* Код из файла result_modifier.php, где происходит подмена для ленивой загрузки
*/
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
// регулярные выражения для поиска
$pattern="/<img([^>]*)\/?>/si";
$pattern2="/(alt|src|title|width|height)=(\"|')(.+?)(\"|')/si";
// поиск тегов img
preg_match_all($pattern,$arResult["DETAIL_TEXT"],$matches);
// результатирующий массив
$modifiedImages=array();
// перебераем массив $matches
foreach($matches[1] as $k=>$image){
// поиск тегов alt|src|title
preg_match_all($pattern2,$image,$Attrmatches);
// массив для хранения alt|src|title
$attributes=array();
// перебираем массив $Attrmatches
foreach($Attrmatches[1] as $kT=>$Tmp){
$attributes[$Tmp]=$Attrmatches[3][$kT];
}
// заполняем результатирующий массив
$modifiedImages[$matches[0][$k]]=$attributes;
}
// перебираем результатирующий массив
foreach ($modifiedImages as $image=>$attributes) {
// делаем resize картинки
$arFile = Array (
"HEIGHT" => $attributes["height"],
"WIDTH" => $attributes["width"],
"SUBDIR" => preg_replace('#^/([a-z0-9]*)/([a-z0-9/]*)/([a-z0-9-_]*.[a-z]{3})$#', '$2', $attributes["src"]),
"FILE_NAME" => preg_replace('#^/([a-z0-9]*)/([a-z0-9/]*)/([a-z0-9-_]*.[a-z]{3})$#', '$3', $attributes["src"])
);
$arImage = CFile::ResizeImageGet($arFile, Array("width"=>"1199", "height"=>"500"), BX_RESIZE_IMAGE_PROPORTIONAL_ALT, true);
$imgSrc = '<div class="baguettebox gallery"> <a href="' . $attributes["src"] . '">';
$imgSrc .= '<img class="b-lazy" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="' . $arImage["src"] . '" alt="' . $attributes["alt"] . '" width="' . $arImage["width"] . '" height="'. $arImage["height"] . '">';
$imgSrc .= '</a></div>';
// заполнение $arResult новым содержимым
$arResult["DETAIL_TEXT"] = str_replace($image,$imgSrc,$arResult["DETAIL_TEXT"]);
}
?>
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг