6 заметок с тегом

php

Избавляемся от проблем в PageSpeed Insights

Для этого нам поможет простой скрипт, который будет отдавать роботу PageSpeed Insights пустые результаты, вместо реальных. Вот стоит у вас счётчик Метрики или Аналитикс, из-за которых занижаются показатели. Влиять на код счётчика вы не можете. Что делать?

<? if(strpos($_SERVER['HTTP_USER_AGENT'],'Chrome-Lighthouse')):?>
<? else: ?>
// your code here 
<? endif; ?>

Водяной знак 1С-Битрикс

Задача: добавить watermark на товары импортируемые из 1С.
Откроем result_modifier.php в catalog.element, catalog.sections и добавим функцию:

$arWatermark = Array(
	array(
		"name" => "watermark", 
		"position" => "center", 
		"size" => "real", 
		"type" => "image", 
		"alpha_level" => 50,
		"file" => $_SERVER['DOCUMENT_ROOT']."/img/watermark.png"
	)
);

Теперь при вызове функции ResizeImageGet нужно добавить наш водяной знак:

if ($arResult['DETAIL_PICTURE']['SRC']) {
$big_file = CFile::ResizeImageGet($arResult['DETAIL_PICTURE']['ID'], array('width' => 2000, 'height' => 2000), BX_RESIZE_IMAGE_PROPORTIONAL, true, $arWatermark);
$arResult['DETAIL_PICTURE']['SRC'] = $big_file['src'];
 Нет комментариев    291   2020   php

PHP: повернуть все изображения в папке

Возникла потребность сменить ориентацию у 5 гигабайт фотографий с тканями. Так как понятия «небо» и «земля» в этом случае отсутствуют, написал скрипт на PHP, который анализирует ширину и высоту всех изображений в папке, и в случае портретной ориентации, происходит поворот изображения на 90 градусов.

В корне сайта создадим файлик с таким содержимым:

<?php
$pathto = getcwd(); // узнаём текущую директорию файла
$dir = $pathto . 'путь к папке с файлами'; // от корня сайта
$f = scandir($dir); // получаем все файлы в папке

foreach ($f as $file){
    if(preg_match('/\.(jpg)/', $file)) // проверяем расширение на JPG
        {
        $filename = $dir.$file; // формируем полный путь к изображению
        $size = getimagesize($filename); // получаем размеры изображения
        $width = $size[0]; // записываем значение ширины в переменную 
        $height = $size[1]; // записываем значение высоты в переменную
        
        if ($height > $width) { // проверяем изображение на портретную ориентацию
            $img = imagecreatefromjpeg($filename); // создадим новое изображение
            $new_image = $dir.'/rotated/'.$file; // укажем название для будущего файла и его расположение
            $imgRotated = imagerotate($img, 90, 0); // повернём изображение на 90 градусов
            imagejpeg($imgRotated, $new_image, 90); // сохраним изображение
        }
    }
}
?>

Всё.

P.S. У меня подвисал скрипт, даже писал 504 Bad Gateway Timeout, но все изображения в итоге перевернул.

 Нет комментариев    149   2020   php

PHP: склонение числительных

/*
 * $num число, от которого будет зависеть форма слова
 * $form_1 первая форма слова, например Яблоко
 * $form_2 вторая форма слова - Яблока
 * $form_3 третья форма множественного числа слова - Яблоков
 */
function true_wordform($num, $form_1, $form_2, $form_3){
	$num = abs($num) % 100; // берем число по модулю и сбрасываем сотни (делим на 100, а остаток присваиваем переменной $num)
	$num_x = $num % 10; // сбрасываем десятки и записываем в новую переменную
	if ($num > 10 && $num < 20) // если число принадлежит отрезку [11;19]
		return $form_3;
	if ($num_x > 1 && $num_x < 5) // иначе если число оканчивается на 2,3,4
		return $form_3;
	if ($num_x == 1) // иначе если оканчивается на 1
		return $form_1;
	return $form_3;
}

Вывод:

$count = 5; 
echo $count . ' ' . wordForm($count, 'яблоко', 'яблока', 'яблок');
 Нет комментариев    45   2019   php

PHP: Разделить число на разряды

Не люблю, когда нет разделителей разрядов в длинных числах, поэтому пришлось для себя отрыть функцию number_format.

<? number_format($string, 0, '', ' '); ?>
 Нет комментариев    215   2019   php