<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0">

<channel>

<title>Блог Чуденкова Алексея</title>
<link>https://blog.chudenkov.ru/</link>
<description></description>
<generator>E2 (v3365; Aegea)</generator>

<item>
<title>DAX: Используем SWITCH, если данные содержат искомое значение</title>
<guid isPermaLink="false">84</guid>
<link>https://blog.chudenkov.ru/all/dax-ispolzuem-switch-esli-dannye-soderzhat-iskomoe-znachenie/</link>
<comments>https://blog.chudenkov.ru/all/dax-ispolzuem-switch-esli-dannye-soderzhat-iskomoe-znachenie/</comments>
<description>
&lt;p&gt;Создаем столбец и с помощью свитча заполняем таблицу данными, в которых есть искомые значения.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;Type = 
IF([CPU] = &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, (
SWITCH (
TRUE (),
ISERROR(FIND(&amp;quot;ES&amp;quot;,[Название])) &amp;lt;&amp;gt; TRUE (), &amp;quot;ES&amp;quot;,
ISERROR(FIND(&amp;quot;QS&amp;quot;, [Название])) &amp;lt;&amp;gt; TRUE (), &amp;quot;QS&amp;quot;
, &amp;quot;Release&amp;quot;)
))&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog.chudenkov.ru/pictures/Screenshot_8.png" width="479" height="210" alt="" /&gt;
&lt;/div&gt;
</description>
<pubDate>Wed, 06 Jul 2022 15:15:40 +0300</pubDate>
</item>

<item>
<title>Избавляемся от проблем в PageSpeed Insights</title>
<guid isPermaLink="false">82</guid>
<link>https://blog.chudenkov.ru/all/izbavlyaemsya-ot-problem-v-pagespeed-insights/</link>
<comments>https://blog.chudenkov.ru/all/izbavlyaemsya-ot-problem-v-pagespeed-insights/</comments>
<description>
&lt;p&gt;Для этого нам поможет простой скрипт, который будет отдавать роботу PageSpeed Insights пустые результаты, вместо реальных. Вот стоит у вас счётчик Метрики или Аналитикс, из-за которых занижаются показатели. Влиять на код счётчика вы не можете. Что делать?&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;? if(strpos($_SERVER['HTTP_USER_AGENT'],'Chrome-Lighthouse')):?&amp;gt;
&amp;lt;? else: ?&amp;gt;
// your code here 
&amp;lt;? endif; ?&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
<pubDate>Thu, 09 Sep 2021 15:10:03 +0300</pubDate>
</item>

<item>
<title>Водяной знак 1С-Битрикс</title>
<guid isPermaLink="false">79</guid>
<link>https://blog.chudenkov.ru/all/vodyanoy-znak-1s-bitriks/</link>
<comments>https://blog.chudenkov.ru/all/vodyanoy-znak-1s-bitriks/</comments>
<description>
&lt;p&gt;Задача: добавить watermark на товары импортируемые из 1С.&lt;br /&gt;
Откроем result_modifier.php в catalog.element, catalog.sections и добавим функцию:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;$arWatermark = Array(
	array(
		&amp;quot;name&amp;quot; =&amp;gt; &amp;quot;watermark&amp;quot;, 
		&amp;quot;position&amp;quot; =&amp;gt; &amp;quot;center&amp;quot;, 
		&amp;quot;size&amp;quot; =&amp;gt; &amp;quot;real&amp;quot;, 
		&amp;quot;type&amp;quot; =&amp;gt; &amp;quot;image&amp;quot;, 
		&amp;quot;alpha_level&amp;quot; =&amp;gt; 50,
		&amp;quot;file&amp;quot; =&amp;gt; $_SERVER['DOCUMENT_ROOT'].&amp;quot;/img/watermark.png&amp;quot;
	)
);&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь при вызове функции ResizeImageGet нужно добавить наш водяной знак:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;if ($arResult['DETAIL_PICTURE']['SRC']) {
$big_file = CFile::ResizeImageGet($arResult['DETAIL_PICTURE']['ID'], array('width' =&amp;gt; 2000, 'height' =&amp;gt; 2000), BX_RESIZE_IMAGE_PROPORTIONAL, true, $arWatermark);
$arResult['DETAIL_PICTURE']['SRC'] = $big_file['src'];&lt;/code&gt;&lt;/pre&gt;</description>
<pubDate>Mon, 22 Jun 2020 17:26:25 +0300</pubDate>
</item>

<item>
<title>JS: Рисуем логотип</title>
<guid isPermaLink="false">77</guid>
<link>https://blog.chudenkov.ru/all/js-risuem-logotip/</link>
<comments>https://blog.chudenkov.ru/all/js-risuem-logotip/</comments>
<description>
&lt;p&gt;Я бродил по Codepen в поисках интересных решений для анимаций форм и объектов на CSS и наткнулся на клёвую реализацию анимации SVG логотипа. Принцип прост — указываем для каждого элемента path в SVG класс и он будет анимирован. Можно на прелоадер поставить, будет эффектно.&lt;/p&gt;
&lt;p class="codepen" data-height="377" data-theme-id="light" data-default-tab="html,result" data-user="alexey-chudenkov" data-slug-hash="KKpqKwd" style="height: 377px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Animated SVG Logo"&gt;
  &lt;span&gt;See the Pen &lt;a href="https://codepen.io/alexey-chudenkov/pen/KKpqKwd"&gt;
  Animated SVG Logo&lt;/a&gt; by Alexey  Chudenkov (&lt;a href="https://codepen.io/alexey-chudenkov"&gt;@alexey-chudenkov&lt;/a&gt;)
  on &lt;a href="https://codepen.io"&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;script async src="https://static.codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;
</description>
<pubDate>Sat, 29 Feb 2020 11:50:49 +0300</pubDate>
</item>

<item>
<title>PHP: Выводим только первый абзац предложения</title>
<guid isPermaLink="false">76</guid>
<link>https://blog.chudenkov.ru/all/php-vyvodim-tolko-pervy-abzac-predlozheniya/</link>
<comments>https://blog.chudenkov.ru/all/php-vyvodim-tolko-pervy-abzac-predlozheniya/</comments>
<description>
&lt;p&gt;Иногда очень удобно выводить в разметке Open Graph самый первый абзац текста.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;$og_description = substr($content[&amp;quot;text&amp;quot;],0, strpos($content[&amp;quot;text&amp;quot;],'&amp;lt;/p&amp;gt;')-1 );&lt;/code&gt;&lt;/pre&gt;</description>
<pubDate>Sat, 15 Feb 2020 11:15:32 +0300</pubDate>
</item>

<item>
<title>jQuery: запретить вводить пробелы в E-Mail</title>
<guid isPermaLink="false">75</guid>
<link>https://blog.chudenkov.ru/all/jquery-zapretit-vvodit-probely-v-e-mail/</link>
<comments>https://blog.chudenkov.ru/all/jquery-zapretit-vvodit-probely-v-e-mail/</comments>
<description>
&lt;p&gt;Защита от дурака, который может скопировать и вставить почту с пробелами или хуже того ещё и написать её с пробелами.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;$(&amp;quot;#input_Id&amp;quot;).change(function()
     $(this).val($(this).val().replace(/ +/g, ''))
});&lt;/code&gt;&lt;/pre&gt;</description>
<pubDate>Mon, 10 Feb 2020 14:05:01 +0300</pubDate>
</item>

<item>
<title>CSS3: Simplest preloader with your logo</title>
<guid isPermaLink="false">74</guid>
<link>https://blog.chudenkov.ru/all/css3-simplest-preloader-with-your-logo/</link>
<comments>https://blog.chudenkov.ru/all/css3-simplest-preloader-with-your-logo/</comments>
<description>
&lt;p&gt;Написал простейший прелоадер для предварительной загрузки страниц вашего сайта. Работает на чистом CSS, скрипты используются только для того чтобы после загрузки скрыть прелоадер.&lt;/p&gt;
&lt;p class="codepen" data-height="400" data-theme-id="light" data-default-tab="html,result" data-user="alexey-chudenkov" data-slug-hash="wvaBRqy" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Simple preloader with your logo"&gt;
  &lt;span&gt;See the Pen &lt;a href="https://codepen.io/alexey-chudenkov/pen/wvaBRqy"&gt;
  Simple preloader with your logo&lt;/a&gt; by Alexey  Chudenkov (&lt;a href="https://codepen.io/alexey-chudenkov"&gt;@alexey-chudenkov&lt;/a&gt;)
  on &lt;a href="https://codepen.io"&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;script async src="https://static.codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;
&lt;p&gt;Чтобы заработало, надо в тег body добавить:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;onload=&amp;quot;preloader()&amp;quot;&lt;/code&gt;&lt;/pre&gt;</description>
<pubDate>Sun, 09 Feb 2020 17:18:19 +0300</pubDate>
</item>

<item>
<title>PHP: повернуть все изображения в папке</title>
<guid isPermaLink="false">73</guid>
<link>https://blog.chudenkov.ru/all/php-povernut-vse-izobrazheniya-v-papke/</link>
<comments>https://blog.chudenkov.ru/all/php-povernut-vse-izobrazheniya-v-papke/</comments>
<description>
&lt;p&gt;Возникла потребность сменить ориентацию у 5 гигабайт фотографий с тканями. Так как понятия «небо» и «земля» в этом случае отсутствуют, написал скрипт на PHP, который анализирует ширину и высоту всех изображений в папке, и в случае портретной ориентации, происходит поворот изображения на 90 градусов.&lt;/p&gt;
&lt;p&gt;В корне сайта создадим файлик с таким содержимым:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;?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 &amp;gt; $width) { // проверяем изображение на портретную ориентацию
            $img = imagecreatefromjpeg($filename); // создадим новое изображение
            $new_image = $dir.'/rotated/'.$file; // укажем название для будущего файла и его расположение
            $imgRotated = imagerotate($img, 90, 0); // повернём изображение на 90 градусов
            imagejpeg($imgRotated, $new_image, 90); // сохраним изображение
        }
    }
}
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Всё.&lt;/p&gt;
&lt;p&gt;P.S. У меня подвисал скрипт, даже писал 504 Bad Gateway Timeout, но все изображения в итоге перевернул.&lt;/p&gt;
</description>
<pubDate>Tue, 04 Feb 2020 23:36:28 +0300</pubDate>
</item>

<item>
<title>CSS3: самая простая анимация кнопки при наведении</title>
<guid isPermaLink="false">72</guid>
<link>https://blog.chudenkov.ru/all/css3-samaya-prostaya-animaciya-knopki/</link>
<comments>https://blog.chudenkov.ru/all/css3-samaya-prostaya-animaciya-knopki/</comments>
<description>
&lt;p class="codepen" data-height="506" data-theme-id="light" data-default-tab="css,result" data-user="alexey-chudenkov" data-slug-hash="VwYoKgV" style="height: 506px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Button Fill Left to Right"&gt;
  &lt;span&gt;See the Pen &lt;a href="https://codepen.io/alexey-chudenkov/pen/VwYoKgV"&gt;
  Button Fill Left to Right&lt;/a&gt; by Alexey  Chudenkov (&lt;a href="https://codepen.io/alexey-chudenkov"&gt;@alexey-chudenkov&lt;/a&gt;)
  on &lt;a href="https://codepen.io"&gt;CodePen&lt;/a&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;script async src="https://static.codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;
</description>
<pubDate>Sun, 02 Feb 2020 11:50:15 +0300</pubDate>
</item>

<item>
<title>Shopify: add quantity button to cart</title>
<guid isPermaLink="false">71</guid>
<link>https://blog.chudenkov.ru/all/shopify-add-quantity-button-to-cart/</link>
<comments>https://blog.chudenkov.ru/all/shopify-add-quantity-button-to-cart/</comments>
<description>
&lt;p&gt;Добавить в cart-template.liquid&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;input type='button' value='-' class='qtyminus' field='updates_{{ item.id }}' /&amp;gt;
&amp;lt;input type=&amp;quot;number&amp;quot; name=&amp;quot;updates[]&amp;quot; id=&amp;quot;updates_{{ item.id }}&amp;quot; class=&amp;quot;quantity&amp;quot; value=&amp;quot;{{ item.quantity }}&amp;quot; /&amp;gt;
&amp;lt;input type='button' value='+' class='qtyplus' field='updates_{{ item.id }}' /&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Добавить в Assets cart.js и его содержание:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;jQuery(document).ready(function(){
    $('.qtyplus').click(function(e){
        e.preventDefault();
        fieldName = $(this).attr('field');
        var currentVal = parseInt($('input[id='+fieldName+']').val());
        if (!isNaN(currentVal)) {
            $('input[id='+fieldName+']').val(currentVal + 1);
        } else {
            $('input[id='+fieldName+']').val(0);
        }
    });
    $(&amp;quot;.qtyminus&amp;quot;).click(function(e) {
        e.preventDefault();
        fieldName = $(this).attr('field');
        var currentVal = parseInt($('input[id='+fieldName+']').val());
        if (!isNaN(currentVal) &amp;amp;&amp;amp; currentVal &amp;gt; 0) {
            $('input[id='+fieldName+']').val(currentVal - 1);
        } else {
            $('input[id='+fieldName+']').val(0);
        }
    });
});&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Не забыть подключить JS с условием если вы находитесь на странице корзины, чтобы не перегружать сайт лишними скриптами.&lt;/p&gt;
</description>
<pubDate>Sat, 01 Feb 2020 13:35:31 +0300</pubDate>
</item>


</channel>
</rss>