<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Леха.com</title>
	<atom:link href="http://xn--80ajr5b.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://xn--80ajr5b.com</link>
	<description>Записная книжка рыбинского вебмастера</description>
	<lastBuildDate>Wed, 21 Jun 2023 11:38:38 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.4.17</generator>
	<item>
		<title>Несколько команд linux для защиты от парсеров в Битрикс окружении</title>
		<link>https://xn--80ajr5b.com/2020/10/neskolko-komand-linux-dlya-zashhity-ot-parserov-v-bitriks-okruzhenii/</link>
					<comments>https://xn--80ajr5b.com/2020/10/neskolko-komand-linux-dlya-zashhity-ot-parserov-v-bitriks-okruzhenii/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Thu, 01 Oct 2020 10:48:25 +0000</pubDate>
				<category><![CDATA[Заметка]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Битрикс]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3261</guid>

					<description><![CDATA[Столкнулся с ситуацией, когда интернет-магазин на 1С-Битрикс работающий на VPS в битрикс окружении начал жестко тормозить. С помощью мониторинга (у меня установлен на этом сервере zabbix и есть мониторинг от хостера) единственную аномалию, которую обнаружил &#8212; сильно подрос исходящий трафик с сервера. При этом нагрузка на процессор, жесткий диск осталась в пределах обычной нормы, когда <a class="more-link" href="https://xn--80ajr5b.com/2020/10/neskolko-komand-linux-dlya-zashhity-ot-parserov-v-bitriks-okruzhenii/">Читать дальше ...</a>]]></description>
										<content:encoded><![CDATA[
<p>Столкнулся с ситуацией, когда интернет-магазин на 1С-Битрикс работающий на VPS в битрикс окружении начал жестко тормозить. С помощью мониторинга (у меня установлен на этом сервере zabbix и есть мониторинг от хостера) единственную аномалию, которую обнаружил &#8212; сильно подрос исходящий трафик с сервера. При этом нагрузка на процессор, жесткий диск осталась в пределах обычной нормы, когда ничего не тормозит. Единственное, что пришло на ум &#8212; кто то парсит (а парсить было что ценного, да еще и довольно нагрузные страницы в огромном количестве).</p>



<p>Но я не системный администратор и не особо разбираюсь в администрировании вебсерверов. Поэтому начал искать команды, которые мне помогут определить засранца, которыми и хочу поделиться.</p>



<p>Для начала, я пытался в логах nginx найти IP адреса с которых было много обращений. <span class="has-inline-color has-luminous-vivid-amber-color">В логах апача все IP 127.0.0.1 (видимо из за связки с nginx).</span> Вот команда, которая сортирует все IP адреса лога nginx по количеству совпадений.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container">
<pre class="crayon-plain-tag"># less /var/log/nginx/default_access.log | cut -d' ' -f1 | uniq -c | sort -g</pre>
</div></div>



<p>В целом команда работает, но мне она ничего не дала, я там не увидел никакие IP адреса с большим количеством обращений к сайту. Да и вообще, это разбирается лог за день, а надо бы вообще за последний час, а как это сделать &#8212; я не нашел. </p>



<p>Далее решил, что видимо парсят в большое количество проксиков и поэтому не смогу я их так определить. Вроде как можно поставить специальное ПО для мониторинга, но я не нашел доступной инструкции для Centos по этому вопросу.</p>



<p>На помощь пришла мысль, что надо просто посмотреть сколько соединений в данный момент на порту https. Для этого есть команды (одна для http, другая для https).</p>



<pre class="crayon-plain-tag"># netstat -an | grep :80 | grep ESTABLISHED | wc -l

# netstat -an | grep :443 | grep ESTABLISHED | wc -l</pre>



<p>Соединений оказалось не так и много (меньше 100), значит никаких кучи проксиков нет. И тут пришла на помощь команда, показывающая сколько соединений с каждого IP адреса.</p>



<pre class="crayon-plain-tag"># netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more</pre>



<p>И так уж свезло, что там был всего 1 IP адрес (не 127.0.0.1 &#8212; это от апача) который имел в районе 60 соединений, остальные максимум 4 соединения. Вот этот IP я проверил в whois, на удивление он был из города, в котором находилась компания, чей сайт. И благополучно забанил его. Нагрузку как рукой сняло.</p>



<p><strong>UPDATE 21/06/2023:</strong> Команда для группировки IP адресов по количеству обращений к сайту за определенную дату:</p>



<pre class="crayon-plain-tag"># grep '21/Jun/2023' /var/log/nginx/access.log | awk -F ' ' '{print $1}' | sort | uniq -c | sort -rn | more</pre>



<p>Вывод: надо настраивать fail2ban.</p>



<p><em>PS. Прошу прощения, если есть неточности, правьте в комментах, я не специалист в этой области, мог многое напутать. И буду признателен за подсказки полезных против парсеров и брутфорсеров утилит.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2020/10/neskolko-komand-linux-dlya-zashhity-ot-parserov-v-bitriks-okruzhenii/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Выполнение серверного скрипта после закрытия сессии в терминале Centos</title>
		<link>https://xn--80ajr5b.com/2020/08/vypolnenie-servernogo-skripta-posle-zakrytiya-sessii-v-terminale-centos/</link>
					<comments>https://xn--80ajr5b.com/2020/08/vypolnenie-servernogo-skripta-posle-zakrytiya-sessii-v-terminale-centos/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Tue, 11 Aug 2020 13:01:18 +0000</pubDate>
				<category><![CDATA[Заметка]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[linux]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3253</guid>

					<description><![CDATA[Порою приходится на сервере выполнять задачи затратные по времени. В моем случае &#8212; скрипт парсинга товаров, который будет работать неделю. И чтобы не зависеть от своей рабочей машины и местного провайдера &#8212; я его запускаю в терминале сервера. Сервер на то и сервер, чтобы работать сутками беспрерывно. Но с сервером тоже не все так просто. <a class="more-link" href="https://xn--80ajr5b.com/2020/08/vypolnenie-servernogo-skripta-posle-zakrytiya-sessii-v-terminale-centos/">Читать дальше ...</a>]]></description>
										<content:encoded><![CDATA[
<p>Порою приходится на сервере выполнять задачи затратные по времени. В моем случае &#8212; скрипт парсинга товаров, который будет работать неделю. И чтобы не зависеть от своей рабочей машины и местного провайдера &#8212; я его запускаю в терминале сервера. Сервер на то и сервер, чтобы работать сутками беспрерывно. </p>



<p>Но с сервером тоже не все так просто. Я запускаю скрипт в терминале и после завершения сеанса &#8212; он прекратит свое выполнение. Я же не могу неделю держать открытым терминальное соединение с сервером, да и теряется весь смысл. Иными словами, надо подключиться к серверу, запустить скрипт, закрыть сессию и чтобы скрипт продолжил работу.</p>



<p>И вот тут приходит на помощь приходит консольное приложение <strong>Screen</strong> для работы с сессиями. С помощью него можно создавать несколько сессий, переключаться между ними, сохранять и восстанавливать их.</p>



<p>Т.к. я работаю с битрикс окружением, то у меня на сервере centos. Поэтому устанавливаю приложение под Screen командой (если оно уже не установлено):</p>



<pre class="crayon-plain-tag">#  yum install screen</pre>



<p>Далее создаю сессию:</p>



<pre class="crayon-plain-tag"># screen</pre>



<p>Далее запускаю нужные скрипты, и сохраняю эту сессию:</p>



<pre class="crayon-plain-tag">Жмем клавиши Ctrl + a + d</pre>



<p>Далее можно закрывать сессию терминала, скрипт продолжит работать на сервере. </p>



<p>Чтобы просмотреть сохраненные сессии есть команда:</p>



<pre class="crayon-plain-tag"># screen -ls</pre>



<p>Так выведется список ваших сохраненных сессий с их идентификаторами. Вернуться в нужную сессию можно командой:</p>



<pre class="crayon-plain-tag"># screen -r &lt;id сессии&gt;</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2020/08/vypolnenie-servernogo-skripta-posle-zakrytiya-sessii-v-terminale-centos/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Массовое изменение отображения свойств в детальной карточке 1С-Битрикс</title>
		<link>https://xn--80ajr5b.com/2020/06/massovoe-izmenenie-otobrazheniya-svojjstv-v-detalnojj-kartochke-1s-bitriks/</link>
					<comments>https://xn--80ajr5b.com/2020/06/massovoe-izmenenie-otobrazheniya-svojjstv-v-detalnojj-kartochke-1s-bitriks/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Thu, 04 Jun 2020 11:59:35 +0000</pubDate>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Битрикс]]></category>
		<category><![CDATA[веб-мастерская]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3237</guid>

					<description><![CDATA[Столкнулся с задачей, когда на клиентском сайте более 500 пользовательских свойств в инфоблоке и необходимо было в настройках (параметры свойства) у всех включить &#171;Показывать на детальной странице элемента&#187;. Само собою, вручную тыкать в 500-1000 свойств и проставлять это свойство &#8212; не наш метод. И вот на помощь пришел метод setFeatures класса \Bitrix\Iblock\Model\PropertyFeature (само собою, плохо <a class="more-link" href="https://xn--80ajr5b.com/2020/06/massovoe-izmenenie-otobrazheniya-svojjstv-v-detalnojj-kartochke-1s-bitriks/">Читать дальше ...</a>]]></description>
										<content:encoded><![CDATA[
<p>Столкнулся с задачей, когда на клиентском сайте более 500 пользовательских свойств в инфоблоке и необходимо было в настройках (параметры свойства) у всех включить &#171;Показывать на детальной странице элемента&#187;.</p>



<figure class="wp-block-image size-large"><img src="http://xn--80ajr5b.com/wp-content/uploads/2020/06/изображение.png" alt="" class="wp-image-3239" srcset="https://xn--80ajr5b.com/wp-content/uploads/2020/06/изображение.png 485w, https://xn--80ajr5b.com/wp-content/uploads/2020/06/изображение-450x126.png 450w" sizes="(max-width: 485px) 100vw, 485px" /></figure>



<p>Само собою, вручную тыкать в 500-1000 свойств и проставлять это свойство &#8212; не наш метод. И вот на помощь пришел метод <strong><a rel="noreferrer noopener" href="https://dev.1c-bitrix.ru/api_d7/bitrix/iblock/model/propertyfeature/setfeatures.php" target="_blank">setFeatures</a> </strong>класса <strong>\Bitrix\Iblock\Model\PropertyFeature</strong> (само собою, плохо документированный в официальной документации).</p>



<p>  В результате получился такой простенький php-скрипт:</p>


<p></p><pre class="crayon-plain-tag">if (\Bitrix\Main\Loader::includeModule('iblock')) {
	$IBLOCK_ID = 1; // Идентификатор инфоблока
	$properties = CIBlockProperty::GetList(
		Array(&quot;sort&quot;=&gt;&quot;asc&quot;, &quot;name&quot;=&gt;&quot;asc&quot;), 
		Array(&quot;ACTIVE&quot;=&gt;&quot;Y&quot;, &quot;IBLOCK_ID&quot;=&gt;$IBLOCK_ID)
		);

	while ($prop_fields = $properties-&gt;GetNext())
	{
		if($prop_fields[&quot;SORT&quot;]&gt;=500) { // В моем случае я менял только у тех свойств, у которых сортировка более 500, чтобы не трогать служебные свойства
		\Bitrix\Iblock\Model\PropertyFeature::setFeatures(
		 $prop_fields[&quot;ID&quot;],[[
			&quot;MODULE_ID&quot;=&gt;&quot;iblock&quot;,
			&quot;IS_ENABLED&quot;=&gt;&quot;Y&quot;,
			&quot;FEATURE_ID&quot; =&gt; &quot;DETAIL_PAGE_SHOW&quot;
			]]
		);
		}
	}
	
}</pre><p></p>



<p>Если поковыряться в БД Битрикса, то найдете там таблицу <pre class="crayon-plain-tag">b_iblock_property_feature</pre> в которой хранятся эти настройки отображения свойства. И оттуда мы узнаем, что в методе setFeatures мы среди параметров можем передать под ключом <strong>FEATURE_ID </strong>такие значения:</p>



<ul><li><strong>LIST_PAGE_SHOW </strong>&#8212; Показывать на странице списка элементов</li><li><strong>DETAIL_PAGE_SHOW </strong>&#8212; Показывать на детальной странице элемента</li></ul>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2020/06/massovoe-izmenenie-otobrazheniya-svojjstv-v-detalnojj-kartochke-1s-bitriks/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Верстка резиновых колонок на сайте через css float</title>
		<link>https://xn--80ajr5b.com/2020/02/css-col-float/</link>
					<comments>https://xn--80ajr5b.com/2020/02/css-col-float/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Sun, 09 Feb 2020 18:17:40 +0000</pubDate>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[адаптивная верстка]]></category>
		<category><![CDATA[веб-мастерская]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3211</guid>

					<description><![CDATA[Практически любой вебсайт использует колонки. Это может быть контент и сайдбар, новости в несколько колонок, вывод миниатюр фотогалереи и т.п. Оказывается для многих, эта регулярная задача вызывает затруднение. Решить её можно несколькими адекватными способами: Используя CSS свойство float (самый кроссбраузерный способ, про него и поговорим) Используя flexbox модуль (тоже уже вполне кроссбраузерный способ, на мой <a class="more-link" href="https://xn--80ajr5b.com/2020/02/css-col-float/">Читать дальше ...</a>]]></description>
										<content:encoded><![CDATA[
<p>Практически любой вебсайт использует колонки. Это может быть контент и сайдбар, новости в несколько колонок, вывод миниатюр фотогалереи и т.п. Оказывается для многих, эта регулярная задача вызывает затруднение. Решить её можно несколькими адекватными способами:</p>



<ol><li>Используя CSS свойство float (самый кроссбраузерный способ, про него и поговорим)</li><li>Используя flexbox модуль (тоже уже <a href="https://caniuse.com/#search=Flexible%20Box%20Layout%20Module">вполне кроссбраузерный способ</a>, на мой взгляд он еще проще, но я привык к первому способу)</li><li>Используя Grid (<a href="https://caniuse.com/#search=grid">поддержка</a> браузерами еще не полная, но уже вот-вот, я им пока не пользовался)</li></ol>



<p><strong>Далее я расскажу о простом, безглючном, легко прогнозируемом в поведении решении для верстки колонок. </strong></p>



<p>В свое время, я взял решение из bootstrap 3 и оно мне показалось на столько простым и логичным, что до сих пор использую. Вообще рекомендую подсматривать решения именно на популярных решениях.</p>



<p>И так, приступим. Например, нам нужно разбить страницу такими способами:</p>



<figure class="wp-block-image size-large"><a href="http://xn--80ajr5b.com/wp-content/uploads/2020/02/Колонки.png" rel="wpdevart_lightbox"><img src="http://xn--80ajr5b.com/wp-content/uploads/2020/02/Колонки.png" alt="" class="wp-image-3213" srcset="https://xn--80ajr5b.com/wp-content/uploads/2020/02/Колонки.png 739w, https://xn--80ajr5b.com/wp-content/uploads/2020/02/Колонки-450x233.png 450w" sizes="(max-width: 739px) 100vw, 739px" /></a></figure>



<p><strong>Для начала делаем html-разметку:</strong></p>



<div class="wp-block-group"><div class="wp-block-group__inner-container">
<pre class="crayon-plain-tag">&lt;!--Две одинаковые колонки--&gt;
&lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;col&quot;&gt;Колонка 1 (50% ширины)&lt;/div&gt;
    &lt;div class=&quot;col&quot;&gt;Колонка 2 (50% ширины)&lt;/div&gt;
&lt;/div&gt;

&lt;!--Три одинаковые колонки--&gt;
&lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;col-3&quot;&gt;Колонка 1 (33.3% ширины)&lt;/div&gt;
    &lt;div class=&quot;col-3&quot;&gt;Колонка 2 (33.3% ширины)&lt;/div&gt;
    &lt;div class=&quot;col-3&quot;&gt;Колонка 3 (33.3% ширины)&lt;/div&gt;
&lt;/div&gt;

&lt;!--Три разные колонки--&gt;
&lt;div class=&quot;wrap&quot;&gt;
    &lt;div class=&quot;col-20&quot;&gt;Колонка 1 (20% ширины)&lt;/div&gt;
    &lt;div class=&quot;col-60&quot;&gt;Колонка 2 (60% ширины)&lt;/div&gt;
    &lt;div class=&quot;col-20&quot;&gt;Колонка 3 (20% ширины)&lt;/div&gt;
&lt;/div&gt;</pre>
</div></div>



<p>Обращаем внимание, что у нас все колонки вкладываются в один общий div с классом &#171;wrap&#187;.</p>



<p>Далее начинаем задавать css стили блокам. Для начала первая хитрость &#8212; задаем всем блокам свойство <strong>box-sizing</strong>. (Полный код CSS в конце документа)</p>



<pre class="crayon-plain-tag">* {
    box-sizing: border-box;
}</pre>



<p>Это значит, что теперь у всех объектов в ширину и высоту включаются размеры полей отступов от содержимого контейнера <strong>padding </strong>и толщина рамки <strong>border</strong>. Если вы не можете это применить ко всем селекторам (*), то применяйте к каждой колонке. Но без этого свойства ничего не выйдет. </p>



<p>Далее вторая хитрость. Добавляем псевдоэлементам контейнера (в который вложены колонки)  свойство clear: both. Это, чтобы после колонок прекращалось действие обтекания и верстка себя вела предсказуемо. Иначе у вас периодически будут строить &#171;лесенки&#187; и скорее всего &#171;поедет верстка&#187;.</p>



<pre class="crayon-plain-tag">.wrap::after, .wrap::before{
    content: &quot;&quot;;
    display: table;
    clear: both;
}</pre>



<p>Далее, если нам нужны отступы между содержимым колонок, как на изображении ниже:</p>



<figure class="wp-block-image size-large"><img src="http://xn--80ajr5b.com/wp-content/uploads/2020/02/отступы-1.png" alt="" class="wp-image-3223"/></figure>



<p>То добавляем следующий css код для контейнера .wrap с отрицательным margin. <strong>Это необходимо, чтобы потом содержимое колонок встало ровно</strong> по вашей сетке (слева в самой левой колонке и справа в самой право колонке). Про отступы поговорим более понятно в конце статьи.</p>



<pre class="crayon-plain-tag">.wrap{
    margin: 0 -15px;
}</pre>



<p>Далее задаем css код для самих колонок. Начнем с двух одинаковых, с классом &#171;col&#187;:</p>



<pre class="crayon-plain-tag">.col{
    float: left;
    padding: 0 15px;
    width: 50%;
}</pre>



<p>Тут мы остановимся более подробно:</p>



<ol><li><strong>float: left;</strong> &#8212; контейнер (колонка) выравнивается по левому краю, все остальные элементы обтекают его справа. </li><li><strong>padding: 0 15px;</strong> &#8212; Добавляет поля в 15 px слева и справа от содержимого контейнера (колонки). Это если нужны отступы между содержимым колонок (чтобы содержимое не соприкасалось). Потом подробнее объясню.</li><li><strong>width: 50%;</strong> &#8212; Ширина нашей колонки, относительно доступного места. Соответственно все доступное место &#8212; 100%. 50% &#8212; это половина. Само собою, <strong>сумма ширины всех колонок не должна быть более 100%.</strong></li></ol>



<p>Для трех одинаковых колонок мы задаем ширину 33,3% (да, можно не целое число):</p>



<pre class="crayon-plain-tag">.col-3{
    float: left;
    padding: 0 15px;
    width: 33.3%;
}</pre>



<p>Для 3 колонок (крайние одинаковые, средняя отличается) мы задаем два класса:</p>



<pre class="crayon-plain-tag">.col-20{
    float: left;
    padding: 0 15px;
    width: 20%;
}
.col-60{
    float: left;
    padding: 0 15px;
    width: 60%;
}</pre>



<p>Хочется сразу обратить внимание на название классов колонок внутри одного проекта. Рекомендую их называть так, чтобы было понятно сколько они по ширине, не давать разные классы для одинаковых колонок. Например: не надо называть 2 одинаковые колонки с шириной 50% левая и правая (можно просто .col &#8212; как у нас, если других размерностей нет). Если по нашим названиям классов, то: .col-3 &#8212; (одна треть),   .col-60 &#8212; (60%). </p>



<p>У bootstrap названия по количеству колонок сетки (но как только приходит понимание построения своей сетки и работе с адаптивностью &#8212; то bootstrap становится не нужен).</p>



<p></p>



<h2>Полный css код для всех наших колонок на float: </h2>



<pre class="crayon-plain-tag">* {
    box-sizing: border-box;
}

.wrap::after, .wrap::before{
    content: &quot;&quot;;
    display: table;
    clear: both;
}

.wrap{
    margin: 0 -15px;
}

.col{
    float: left;
    padding: 0 15px;
    width: 50%;
}

.col-3{
    float: left;
    padding: 0 15px;
    width: 33.3%;
}

.col-20{
    float: left;
    padding: 0 15px;
    width: 20%;
}
.col-60{
    float: left;
    padding: 0 15px;
    width: 60%;
}</pre>



<h2>Отступы между содержимым колонок:</h2>



<p>Тут все просто, у колонок мы задаем padding слева и справа по 15px. Т.к. соседние колонки соприкасаются, то между содержимым получается расстояние 30px. А чтобы самая левая колонка и самая правая были ровно по родительскому контейнеру, то родительскому контейнеру .wrap мы задаем слева и справа отрицательные отступы margin в -15px (т.е. ровно по размеру padding). Далее постарался изобразить наглядно:</p>



<figure class="wp-block-image size-large"><img src="http://xn--80ajr5b.com/wp-content/uploads/2020/02/Схема-отступов.png" alt="" class="wp-image-3231" srcset="https://xn--80ajr5b.com/wp-content/uploads/2020/02/Схема-отступов.png 562w, https://xn--80ajr5b.com/wp-content/uploads/2020/02/Схема-отступов-450x258.png 450w" sizes="(max-width: 562px) 100vw, 562px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2020/02/css-col-float/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Как посмотреть отправленные SMS в bitrix</title>
		<link>https://xn--80ajr5b.com/2019/12/kak-posmotret-otpravlennye-sms-v-bitrix/</link>
					<comments>https://xn--80ajr5b.com/2019/12/kak-posmotret-otpravlennye-sms-v-bitrix/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Fri, 27 Dec 2019 12:24:58 +0000</pubDate>
				<category><![CDATA[Заметка]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[Битрикс]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3203</guid>

					<description><![CDATA[С недавних пор в 1с-Битрикс внедрена возможность штатно отправлять sms через шлюзы sms.ru, SMS-ассистент, Twilio.com. Для просмотра отправленных СМС необходимо выполнить такую SQL команду: [crayon-68b4dd6fe82d9000109966/] В результате получите подобную таблицу: По сообщению из техподдержки, данные в таблице b_messageservice_message хранятся не более 14 дней.]]></description>
										<content:encoded><![CDATA[
<p>С недавних пор в 1с-Битрикс внедрена возможность штатно отправлять sms через шлюзы sms.ru,  SMS-ассистент,  Twilio.com.</p>



<p>Для просмотра отправленных СМС необходимо выполнить такую SQL команду:</p>



<pre class="crayon-plain-tag">select * from b_messageservice_message order by id desc</pre>



<p>В результате получите подобную таблицу:</p>



<figure class="wp-block-image"><a href="http://xn--80ajr5b.com/wp-content/uploads/2019/12/SQL-запрос-ТИМ-Mozilla-Firefox-2019-12-27-15.20.55.png" rel="wpdevart_lightbox"><img src="http://xn--80ajr5b.com/wp-content/uploads/2019/12/SQL-запрос-ТИМ-Mozilla-Firefox-2019-12-27-15.20.55-780x229.png" alt="" class="wp-image-3207" srcset="https://xn--80ajr5b.com/wp-content/uploads/2019/12/SQL-запрос-ТИМ-Mozilla-Firefox-2019-12-27-15.20.55-780x229.png 780w, https://xn--80ajr5b.com/wp-content/uploads/2019/12/SQL-запрос-ТИМ-Mozilla-Firefox-2019-12-27-15.20.55-450x132.png 450w, https://xn--80ajr5b.com/wp-content/uploads/2019/12/SQL-запрос-ТИМ-Mozilla-Firefox-2019-12-27-15.20.55-768x225.png 768w, https://xn--80ajr5b.com/wp-content/uploads/2019/12/SQL-запрос-ТИМ-Mozilla-Firefox-2019-12-27-15.20.55.png 1727w" sizes="(max-width: 780px) 100vw, 780px" /></a></figure>



<p>По сообщению из техподдержки, данные в таблице b_messageservice_message хранятся не более 14 дней.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2019/12/kak-posmotret-otpravlennye-sms-v-bitrix/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Коллтрекинг от Битрикс24 на сайте с динамическими зонами композита</title>
		<link>https://xn--80ajr5b.com/2019/08/kolltreking-ot-bitriks24-na-sajjte-s-dinamicheskimi-zonami-kompozita/</link>
					<comments>https://xn--80ajr5b.com/2019/08/kolltreking-ot-bitriks24-na-sajjte-s-dinamicheskimi-zonami-kompozita/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Wed, 28 Aug 2019 11:10:05 +0000</pubDate>
				<category><![CDATA[Заметка]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[Битрикс]]></category>
		<category><![CDATA[Битрикс24]]></category>
		<category><![CDATA[коллтрекинг]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3191</guid>

					<description><![CDATA[Столкнулся со специфической проблемой. На сайте номер телефона выводится в зависимости от региона посетителя. Т.к. на сайте используется технология композитного сайта, то этот телефон выводится в динамической зоне композита (чтобы все посетители видели правильный свой телефон). В результате, код коллтрекинга, просто размещенный на странице сайта меняет все телефонные номера до того, как отработают динамические зоны <a class="more-link" href="https://xn--80ajr5b.com/2019/08/kolltreking-ot-bitriks24-na-sajjte-s-dinamicheskimi-zonami-kompozita/">Читать дальше ...</a>]]></description>
										<content:encoded><![CDATA[
<p>Столкнулся со специфической проблемой. На сайте номер телефона выводится в зависимости от региона посетителя. Т.к. на сайте используется технология композитного сайта, то этот телефон выводится в динамической зоне композита (чтобы все посетители видели правильный свой телефон). В результате, код коллтрекинга, просто размещенный на странице сайта меняет все телефонные номера до того, как отработают динамические зоны композита, а соответственно номер телефона не меняется.</p>



<p>Вероятно, такая проблема может возникнуть и с другими сервисами коллтрекинга, поэтому читаем дальше.</p>



<p>Чтобы решить эту проблему &#8212; необходимо определить страница на сайте отработала в обычном или композитном режиме, и если в композитном, то запустить код коллтрекинга после загрузки всех динамических зон композита. Например, вставив такой код в шаблон сайта, заменив <strong>{код коллтрекинга}</strong> на тот, что вам выдал битрикс24:</p>



<pre class="crayon-plain-tag">&lt;script&gt;
if (window.frameCacheVars !== undefined)
{
    BX.addCustomEvent(&quot;onFrameDataReceived&quot; , function(json) {
        bx24callTracker();
    });
} else {
    BX.ready(function() {
        bx24callTracker();
    });
}
function bx24callTracker(){
    {код коллтрекинга}
}
&lt;script&gt;</pre>



<p>Добавлять именно в шаблон, а не в Google Tag Manager.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2019/08/kolltreking-ot-bitriks24-na-sajjte-s-dinamicheskimi-zonami-kompozita/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Почему я перешел с MODx Evo на 1С-Битрикс</title>
		<link>https://xn--80ajr5b.com/2018/09/pochemu-ya-pereshel-s-modx-na-1s-bitriks/</link>
					<comments>https://xn--80ajr5b.com/2018/09/pochemu-ya-pereshel-s-modx-na-1s-bitriks/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Sat, 15 Sep 2018 16:14:54 +0000</pubDate>
				<category><![CDATA[Заметка]]></category>
		<category><![CDATA[MODx Evo]]></category>
		<category><![CDATA[Битрикс]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3174</guid>

					<description><![CDATA[Решил поделиться своими мыслями, может для кого то это станет мотивашкой. Да, я немного хитрю и этот текст преследует еще одну скрытую цель &#8212; немного увеличить количество программистов под Битрикс, ибо это проблема. Ну сейчас вообще проблема с программистами, может перетянем одеяло на себя немного. Да, хочу обратить внимание, что тут речь больше не с <a class="more-link" href="https://xn--80ajr5b.com/2018/09/pochemu-ya-pereshel-s-modx-na-1s-bitriks/">Читать дальше ...</a>]]></description>
										<content:encoded><![CDATA[<p>Решил поделиться своими мыслями, может для кого то это станет мотивашкой. Да, я немного хитрю и этот текст преследует еще одну скрытую цель &#8212; немного увеличить количество программистов под Битрикс, ибо это проблема. Ну сейчас вообще проблема с программистами, может перетянем одеяло на себя немного. Да, хочу обратить внимание, что тут речь больше не с позиции программиста (да и кто я такой, чтобы спорить о чистоте говнокода Битрикса?), а с позиции студии.</p>
<p>Раньше я разрабатывал сайты на ModX Evo. Все было клево, бесплатная система управления, легкость разработки (при небольших знаниях php), не требовательность к хостингу, реализован паттерн MVC. В общем все клево, как любят программисты. Но со временем, мы растем не только в профессиональном плане, но и просто набираемся жизненным опытом. Хотим чего то большего, чем просто писать чистый код и хвастаться какую сложную задачу мы выполнили. Плюс на это накладывается, что у MODx ветка Revo отделилась и Evo перестало поддерживаться официально. Но я к Evo привык, он клевый, легкий и т.д. Не вижу причин переходить на Revo (хотя у него больше перспектив), продолжаю работать с Evo. Тут русскоязычное коммунити берет шефство над веткой EVO (и до сих пор ею занимается). Взялись его развивать очень опытные программисты (уровень их знаний для меня просто не достижим), но система все равно не успевает за конкурентами. До сих пор нет нормального интернет-магазина, да и думается мне не появится он. Был Шопкипер, но елки моталки, интернет-магазин сейчас это не тупо каталог товаров с кнопкой заказать, это куда более сложный механизм.</p>
<p>С другой стороны есть Битрикс и где то год назад я уже осознал, что огромное количества топовых сайтов именно на Битрикс. Да, много пугают тормознутостью и сложностью разработки Битрикса, его требовательностью, но черт возьми, как тогда получается, что в 2017 году среди русских магазинов доля Битрикса 28%? Неужели каждый 4 владелец интернет-магазина дурак и вместо MODx взялся БИТРИКС?</p>
<div id="attachment_3175" style="width: 720px" class="wp-caption alignnone"><a href="http://xn--80ajr5b.com/wp-content/uploads/2018/09/DI1.jpg" rel="wpdevart_lightbox"><img aria-describedby="caption-attachment-3175" class="wp-image-3175 size-full" src="http://xn--80ajr5b.com/wp-content/uploads/2018/09/DI1.jpg" alt="" width="710" height="537" srcset="https://xn--80ajr5b.com/wp-content/uploads/2018/09/DI1.jpg 710w, https://xn--80ajr5b.com/wp-content/uploads/2018/09/DI1-450x340.jpg 450w" sizes="(max-width: 710px) 100vw, 710px" /></a><p id="caption-attachment-3175" class="wp-caption-text">Найди MODx)</p></div>
<p>В общем в этот момент (2017 год) я окончательно решил попытаться освоить Битрикс. И что оказалось? Я без проблем стал бизнес-партнером Битрикса (сейчас уже сертифицированным партнером), получил бесплатную партнерскую техническую поддержку, где через тикеты сотрудники Битрикса помогают (хотя надо отдать должное, в основном констатируют факт того, что так не сделать, но и я ведь вопросы задаю только когда не могу сам ответы найти в документации и интернете).</p>
<p>Раньше мне попадались заказы по доработке сайтов на Битрикс, но порог вхождения высок и я просто отказывался, т.к. не мог понять откуда что работает и вообще все казалось не логично.</p>
<p>Оказалось, у Битрикс есть бесплатные&nbsp; структурированные курсы, которые позволяют буквально за 2-3 дня начать разбираться в Битрикс на таком же уровне, что и в MODx. Уже после 2 дней просмотра курсов я начал понимать, что MODx &#8212; это ребячество. Modx &#8212; это больше похоже на программирование ради программирования (работа ради работы), в Битрикс программирование ради заработка.У меня крайние сомнения, что на MODx быстрее интегрируется дизайн. Да это просто не правда, после того, как вы узнаете что за что отвечает &#8212; все становится довольно просто. А у Битрикса почти все работает из коробки. Надо интеграцию с 1с &#8212; пожалуйста, хотите купоны, систему скидок, интеграцию с любой платежной системой (а не только Робокассой) интеграцию с доставкой, сео анализатор, который даст подсказки что сделать для продвижения, правила формирования тайтлов, ЧПУ, метатегов, выгрузку в маркет &#8212; все из коробки, вам только настроить. Да Битрикс даже сам вас пропишет в Яндекс.вебмастере. Т.е. на практике вы экономите свое время и сильно выигрываете (вы можете с легкостью цену сайта сделать ниже, чем на модХ с таким функционалом, и при этом клиент будет знать что у Вас крутой Битрикс, а не поделка на бесплатном МОДх) на средненьких и крупных проектах.</p>
<p>Спустя неделю я четко осознал, что лицензия Битрикс за 5400 руб. перекрывает все, что дает бесплатный MODx Evo (у нас же еще есть маркетплейс Битрикса). Давайте будем честны, нам никому не нужны такие заказчики, которые не могут купить лицензию за 5400 руб. Ну не о таких клиентах мы мечтаем, которые отказываются от сотрудничества с нами из-за того, что надо заплатить за лицензию стоимостью похода на концерт любимой группы. Вы должны понять, что сейчас Виндовс на офисный компьютер стоит дороже (раза в 2). А лицензии &#171;Малый Бизнес&#187; и &#171;Бизнес&#187;, ценой которых пугают неискушенного программиста (именно программиста, как оказалось заказчика эти цифры не пугают, у него Управление Торговлей дороже стоит, тот кому нужны такие лицензии &#8212; он понимает сколько все вокруг стоит, а остальным хватит и Стартовой лицензии).</p>
<p>Еще один миф развеялся, когда я узнал, что для Битрикса есть очень <a href="http://xn--80ajr5b.com/?ulc_safe_link=3050">дешевые тарифы</a>. Т.е. реально смешные деньги. Опять будем честны сами с собою, у большинства наших клиентов посещаемость до 100 человек в день. А у кого нормальная посещаемость, уж стоимость хостинга их вообще не волнует, это ничто по сравнению с рекламным бюджетом и доходами. Если у интернет-магазина миллион товаров и 10к посещалка &#8212; дедик арендуют, не почувствуют нагрузки. Тут же отметил, что если сделан сайт на Битрикс не криворуким программистом, то не тормозит. Кэширование там работает и оно более гибкое, чем в модХ, хоть и не такое быстрое. Так с другой стороны на MODx вы и не сделаете такой сложный функционал, как идет из коробки у Битрикс. А композит вообще радует глаз. Представьте, CDN включается одним переключателем.</p>
<p>Дальше меня порадовала простота с которой клиент может наполнять сайт, плюс есть бесплатный курс контент-менеджера. Админка для клиента куда проще и удобнее. А уж возможность редактировать все что предусмотрит программист просто тыкая в эту область мышкой &#8212; такое в MODx и не снилось. Клиенты просто счастливы. Но тут не без ложки дегтя. Визуальный текстовый редактор работает на столько убого, на сколько это возможно, даже спорить не буду (код ужасен, все время куда-то строки перебегают, вставляет свои теги, это просто жесть, банально подпись к фотографии без знания HTML-кода не сделаешь). Пока лучший редактор контента в WordPress. В MODx тоже лучше, но до WP как до Китая раком (хотя тот же самый). Но по-моему в Битриксе считают что контент-менеджер должен знать основы HTML и поэтому им плевать на секретаршу, которую попросили новость добавить на сайт.</p>
<p>Очень интересно придумано с готовыми решениями для сайтов. В пару кликов устанавливается рабочий сайт с демоматериалами. Надо понимать, что битрикс &#8212; это фреймворк с админкой (как и MODx, у них есть похожие моменты) и вся структура сайта задается разработчиком. Благодаря готовым решениям можно дать клиенту вариант дешевого сайта, на который у вас уходит очень мало времени. Это тот случай, когда можно интернет-магазин сделать за пол дня и при этом очень хорошо заработать (это фишка для партнеров битрикса, обычным программистам это не принципиально).</p>
<p>Для программиста надо понимать, что он не грузчик и может работать удаленно (да да, я капитан Очевидность). Так вот средняя з/п программиста под MODx в полтора раза ниже чем под Битрикс. И с Битриксом даже начинающий программист может с легкостью устроиться на 45к в месяц, а опытный будет за 100к получать (но это не точно). И при этом он не будет, как проклятый стругать сайты на конвейере от рассвета до заката &#8212; ему будут давать интересные сложные задания. Т.к. простое все уже давно сделано. При этом никому не нужен программист который знает только MODx (вы должны знать еще WP, Drupal, Joomla и желательно опыт Битрикс и стругать, стругать, стругать), а вот если Вы знаете только Битрикс &#8212; вас все равно с руками оторвут. И чтобы с Битрикс работать &#8212; надо вообще минимальные знания php (уж не знаю хорошо это или плохо).</p>
<p>Еще обратил внимание, что реально спрос выше чем предложения от тех, кто в состоянии сделать сайт на Битрикс. Работа сама находит вас. Я думал попробовать разработать свое готовое решение для сайта и продавать его, так оказалось, что и без этого работы много. Но может еще возьмусь, хотя конкуренция там высокая.</p>
<p>Удобно, что можно по взрослому использовать IDE для разработки с анализатором кода, можно даже с git подружить, благо Битрикс упрощает это. Да, по началу вымораживает эта безумная вложенность папок у шаблонов, но со временем привыкаешь и очередность их применения довольно очевидна и не вызывает путаницы (после просмотра соответствующего курса).</p>
<p>По поводу, того, что МОДх можно расширять как душе угодно и решать любые задачи, так это под Битрикс можно (и вообще это в описании почти всех CMS указано), но сравните маркетплейс битрикса и МодХ (у ево всетаки внедрили, автоматическую установку дополнений, через модуль) и сами решите где проще расширять функционал. А те, кто считают, что там цена высокая &#8212; разработайте сами этот функционал и заработайте, нет проблем. У кого время стоит дороже, тот купит, у кого дешевле, сам разработает, все решают что выгоднее для них.</p>
<p>И вообще никого не волнует что там код кривой, что в Битриксе 2 ядра одновременно работают (старое и новое) и для меня это просто большая путаница, т.к. я толком не знаю ни того, ни другого, все по справочнику, все через гугл делаю. Зато совместимы сайты на старых версиях. А модХ что? Просто взяли господа энтузиасты и отключили ряд старых методов API. Да нафига вы так сделали? Чтобы все после найденной очередной дыры в безопасности почувствовали анальную боль при обновлении ядра системы?&nbsp; А все потому, что MODx Evo развивают программисты для программистов и так будет правильно с их точки зрения. Я был вынужден обновить сайт портфолио на МОДх, так отвалились даже некоторые типы кастомных TV от mm. Их то за что? И я понимаю, что банально нету времени и желания разбираться и чинить. И уж тем более продолжать разрабатывать под MODx.</p>
<p>Зато Битриксоиды регулярно проводят вебинары, со временем скопилось огромное количество документации, всегда можно за разъяснениями обратиться в Техподдержку. Особенно моя жизнь наладилась, когда товарищ сказал, чтобы я не стеснялся обращаться в техподдержку, на то ведь мы и партнеры.</p>
<p>В общем, я надеюсь что этот текст поможет решиться на то, чтобы самому пощупать что такое Битрикс. Для этого достаточно открыть бесплатные курсы. Даже <a href="https://academy.1c-bitrix.ru/training/course/7785/">Быстрого старта достаточно</a>, чтобы понять с чем имеете дело. 1,5 часа времени и вы узнаете что все довольно просто. А то уже просто смешно читать, какой клевый MODx и ужасный Битрикс. Уж если кому хочется тру разработки &#8212; смотрите в сторону yii, там вас научат Родину любить и разбираться в ООП и паттернах проектирования. Там за каждый чих можно с клиента денег просить.</p>
<p><em>PS. Обратите внимание, я никого не намереваюсь оскорбить, это лично мое мнение основанное на моем опыте. Просто пришел к выводу, что мне интереснее работать с Битрикс. Очень жаль, что я это понял только год назад, а не пять.</em></p>


<h2>Запрос переноса сайта с Modx на 1С-Битрикс</h2>



<p><span class="has-inline-color has-vivid-red-color"><strong>Если вы столкнулись с необходимостью переноса сайта на 1С-Битрикс</strong></span> (например: узнали что у Modx нет нормальной интеграции с 1С, устали искать специалистов под Modx или просто ваш проект вырос во что-то более серьезное и вы хотите лучше, чем у конкурентов), оставляйте в форме ниже заявку на перенос, я свяжусь с вами.</p>



<script data-b24-form="inline/18/hbuie1" data-skip-moving="true"> (function(w,d,u){ var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/180000|0); var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h); })(window,document,'https://cdn-ru.bitrix24.ru/b6558319/crm/form/loader_18.js'); </script>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2018/09/pochemu-ya-pereshel-s-modx-na-1s-bitriks/feed/</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
			</item>
		<item>
		<title>1С-Битрикс &#8212; редирект на первый элемент инфоблока</title>
		<link>https://xn--80ajr5b.com/2018/07/bitrix-redirect/</link>
					<comments>https://xn--80ajr5b.com/2018/07/bitrix-redirect/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Sun, 08 Jul 2018 13:08:02 +0000</pubDate>
				<category><![CDATA[Заметка]]></category>
		<category><![CDATA[bitrix]]></category>
		<category><![CDATA[веб-мастерская]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3079</guid>

					<description><![CDATA[Бывает ситуация, когда при переходе в корень раздела &#8212; посетитель перенаправлялся на первый элемент инфоблока. Например, у нас раздел /news/, в котором вызывается комплексный компонент Новости (bitrix.news). А страницы для списка новостей не предусмотрено логикой сайта (может это и не новости вовсе). И надо при обращению к корню, вместо вывода списка новостей- переадресовало на страницу <a class="more-link" href="https://xn--80ajr5b.com/2018/07/bitrix-redirect/">Читать дальше ...</a>]]></description>
										<content:encoded><![CDATA[<p>Бывает ситуация, когда при переходе в корень раздела &#8212; посетитель перенаправлялся на первый элемент инфоблока.</p>
<p>Например, у нас раздел <strong>/news/</strong>, в котором вызывается комплексный компонент Новости (bitrix.news). А страницы для списка новостей не предусмотрено логикой сайта (может это и не новости вовсе). И надо при обращению к корню, вместо вывода списка новостей- переадресовало на страницу первой детальной новости.</p>
<p>Для этого копируем шаблон комплексного компонента bitrix.news и в нем правим файл <strong>news.php. </strong>Точнее, приводим его к такому коду:</p><pre class="crayon-plain-tag">&lt;?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$this-&gt;setFrameMode(true);

if(CModule::IncludeModule("iblock"))
{

	$IBLOCK_ID = $arParams['IBLOCK_ID'];
	$arOrder = Array("SORT"=&gt;"ASC"); // здесь задаем правило сортировки, чтобы определить кто у нас первый
	$arSelect = Array("ID", "DETAIL_PAGE_URL");
	$arFilter = Array("IBLOCK_ID"=&gt;$IBLOCK_ID, "ACTIVE"=&gt;"Y");
	$res = CIBlockElement::GetList($arOrder, $arFilter, false, ["nTopCount" =&gt; 1], $arSelect);

	while($ob = $res-&gt;GetNextElement())
	{
		$arFields = $ob-&gt;GetFields();
		LocalRedirect($arFields["DETAIL_PAGE_URL"]);
	}

}</pre><p>Обратите внимание, на строку где задаем правило сортировки. Именно с помощью неё мы определяем по какому правилу выбрать первый элемент инфоблока. У меня берется с самым наименьшим значением поля сортировки. Тут можно поменять, сделать последнюю по дате активности, или в алфавитном порядке и т.п. <a href="https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php">Полный перечень полей для сортировки тут</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2018/07/bitrix-redirect/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Фиксирование достижения цели Яндекс.метрики в онлайн чате Битрикс24 (через GTM) [update 2019]</title>
		<link>https://xn--80ajr5b.com/2018/06/metrika-bitrix24-onlinechat/</link>
					<comments>https://xn--80ajr5b.com/2018/06/metrika-bitrix24-onlinechat/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Sun, 24 Jun 2018 10:13:37 +0000</pubDate>
				<category><![CDATA[Заметка]]></category>
		<category><![CDATA[bitrix24]]></category>
		<category><![CDATA[GTM]]></category>
		<category><![CDATA[метрика]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3064</guid>

					<description><![CDATA[Эта инструкция реализуется через Google Tag Manager. Предполагается, что код Яндекс метрики, GTM, виджета онлайн чата Битрикс24 уже установлены на сайте. Чтобы отправить данные о конверсии (цели) в Яндекс Метрику о том, что посетитель отправил сообщение в онлайн чат открытых линий CRM Битрикс24 необходимо совершить такие настройки: Установить код, для отслеживания события отправки сообщения, который <a class="more-link" href="https://xn--80ajr5b.com/2018/06/metrika-bitrix24-onlinechat/">Читать дальше ...</a>]]></description>
										<content:encoded><![CDATA[<p>Эта инструкция реализуется через <strong>Google Tag Manager</strong>. Предполагается, что код Яндекс метрики, GTM, виджета онлайн чата Битрикс24 уже установлены на сайте.</p>
<p>Чтобы отправить данные о конверсии (цели) в Яндекс Метрику о том, что посетитель отправил сообщение в онлайн чат открытых линий CRM Битрикс24 необходимо совершить такие настройки:</p>
<ol>
<li>Установить код, для отслеживания события отправки сообщения, который будет запускать триггер</li>
<li>По этому триггеру отправлять данные в Яндекс.метрику</li>
</ol>
<p>Все достаточно просто. Единственный момент &#8212; надо продумать, чтобы триггер срабатывал только первый раз, для посетителя, а не при каждом отправлении сообщения. Иначе один пользователь может генерировать много достижений цели.</p>
<h2>Устанавливаем код отслеживания события отправки сообщений</h2>
<h3>1) Создаем новый тег в GTM:</h3>
<p><strong>Тип тега:</strong> Пользовательский HTML</p>
<p><strong>HTML:</strong></p>
<p><span style="color: #993300;">Код обновлен 19.04.2019, теперь снова работает. Спасибо, Александру Шевченко за помощь.</span></p><pre class="crayon-plain-tag">&lt;script type="text/javascript"&gt;
window.addEventListener('onBitrixLiveChat', function(event)
{
	var widget = event.detail.widget;

	widget.subscribe({
		type: BX.LiveChatWidget.SubscriptionType.userMessage,
		callback: function(data) {
      
        if (typeof(dataLayer) == 'undefined')
        {
          dataLayer = [];
        }
        dataLayer.push({'event' : 'bx24chatonline'});
		
		}
	});
});
&lt;/script&gt;</pre><p><strong>Триггеры:</strong> All Pages</p>
<p>Этот код в момент отправки сообщения в онлайн чат создает пользовательское событие с именем bx24chatonline.</p>
<p>Выглядит созданный тег примерно так:</p>
<p><a href="http://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.35.59.png" rel="wpdevart_lightbox"><img class="alignnone wp-image-3066 size-large" src="http://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.35.59-780x520.png" alt="" width="780" height="520" srcset="https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.35.59-780x520.png 780w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.35.59-450x300.png 450w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.35.59-768x512.png 768w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.35.59.png 1186w" sizes="(max-width: 780px) 100vw, 780px" /></a></p>
<p>&nbsp;</p>
<h3>2) Создаем переменную, чтобы определить, что это первое сообщение (чтобы наш триггер сработал только один раз, а не при каждой отправке)</h3>
<p><strong>Тип переменной:</strong> Переменная уровня данных</p>
<p><strong>Имя переменной уровня данных:</strong> CHAT_FLAG</p>
<p><strong>Значение по умолчанию</strong>: false</p>
<p>Выглядит примерно так:</p>
<p><a href="http://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.47.00.png" rel="wpdevart_lightbox"><img class="alignnone size-large wp-image-3068" src="http://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.47.00-780x323.png" alt="" width="780" height="323" srcset="https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.47.00-780x323.png 780w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.47.00-450x186.png 450w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.47.00-768x318.png 768w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.47.00.png 1184w" sizes="(max-width: 780px) 100vw, 780px" /></a></p>
<p>&nbsp;</p>
<h3>3) Создаем триггер в GTM, который сработает при отправке сообщения.</h3>
<p><strong>Название:</strong> Отправка сообщения в чат открытых линий</p>
<p><strong>Тип триггера:</strong> Пользовательское событие</p>
<p><strong><label for="18-trigger.data.filter">Имя события</label>:</strong> bx24chatonline</p>
<p><strong>Условия активации триггера:</strong> Некоторые специальные события</p>
<p>Активировать триггер при наступлении события и выполнении всех этих условий:</p>
<p><strong>CHAT_FLAG</strong> равно <strong>false</strong></p>
<p>Т.е. наш триггер сработает в момент отправки сообщения, если CHAT_FLAG равен false.</p>
<p>Выглядит так:</p>
<p><a href="http://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.52.24.png" rel="wpdevart_lightbox"><img class="alignnone size-large wp-image-3070" src="http://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.52.24-780x321.png" alt="" width="780" height="321" srcset="https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.52.24-780x321.png 780w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.52.24-450x185.png 450w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.52.24-768x316.png 768w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-12.52.24.png 1207w" sizes="(max-width: 780px) 100vw, 780px" /></a></p>
<p>Все самое сложное сделано, теперь приступаем к самой отправке цели в Яндекс метрику.</p>
<p>&nbsp;</p>
<h2>Отправляем данные цели в Яндекс.метрику</h2>
<p>1) Создаем в Яндекс метрике цель с типом JavaScript событие и задаем её идентификатор. Предполагаю, что это все умеют, описывать не буду.</p>
<p>2) Создаем новый тег в GTM:</p>
<p><strong>Тип тега:</strong> Пользовательский HTML</p>
<p><strong>HTML:</strong></p><pre class="crayon-plain-tag">&lt;script&gt;
  yaCounterXXXXXXX.reachGoal('{идентификатор цели}');
  dataLayer.push({'CHAT_FLAG':'true'});
&lt;/script&gt;</pre><p>где XXXXXXX &#8212; номер счетчика Яндекс метрики, {идентификатор цели} &#8212; идентификатор вашей цели</p>
<p>dataLayer.push({&#8216;CHAT_FLAG&#8217;:&#8217;true&#8217;}); &#8212; тут мы меняем значение нашей переменной. Соответственно, наш триггер не будет больше срабатывать и при последующих сообщениях в онлайн чат от Битрикс24 достижения цели не будут фиксироваться для текущего посетителя.</p>
<p><strong>Триггер: </strong>Отправка сообщения в чат открытых линий</p>
<p><a href="http://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-13.05.23.png" rel="wpdevart_lightbox"><img class="alignnone size-large wp-image-3072" src="http://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-13.05.23-780x559.png" alt="" width="780" height="559" srcset="https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-13.05.23-780x559.png 780w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-13.05.23-450x323.png 450w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-13.05.23-768x551.png 768w, https://xn--80ajr5b.com/wp-content/uploads/2018/06/Диспетчер-тегов-Google-Google-Chrome-2018-06-24-13.05.23.png 1173w" sizes="(max-width: 780px) 100vw, 780px" /></a></p>
<p>Все, настройка закончена. Не забудьте опубликовать внесенный изменения в Google Tag Manager.</p>
<hr />
<p>PS:</p>
<ol>
<li>Вы можете в тег с кодом отправки информации о цели в Яндекс, добавить код отправки события в Google Analytics и куда еще захотите.</li>
<li>GTM не обязателен, все тоже самое можно и на прямую сделать, но я сделал через GTM.</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2018/06/metrika-bitrix24-onlinechat/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Автоматическое открытие окна JivoSite (бесплатная версия)</title>
		<link>https://xn--80ajr5b.com/2018/03/avtomaticheskoe-otkrytie-okna-jivosite-besplatnaya-versiya/</link>
					<comments>https://xn--80ajr5b.com/2018/03/avtomaticheskoe-otkrytie-okna-jivosite-besplatnaya-versiya/#comments</comments>
		
		<dc:creator><![CDATA[Леха]]></dc:creator>
		<pubDate>Tue, 20 Mar 2018 08:59:55 +0000</pubDate>
				<category><![CDATA[Заметка]]></category>
		<category><![CDATA[jivosite]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[веб-мастерская]]></category>
		<guid isPermaLink="false">http://xn--80ajr5b.com/?p=3037</guid>

					<description><![CDATA[Времена нынче тяжелые, клиенты просят, чтобы окно JivoSite открывалось автоматически на бесплатной версии. Делается просто, необходимо перед закрывающимся тегом &#60;/body&#62; разместить такой код: [crayon-68b4dd6feae06743801912/] В коде 15000 &#8212; это задержка в милисекундах. Можно свою задать. 15000 = 15 сек. &#160;]]></description>
										<content:encoded><![CDATA[<p>Времена нынче тяжелые, клиенты просят, чтобы окно JivoSite открывалось автоматически на бесплатной версии.</p>
<p>Делается просто, необходимо перед закрывающимся тегом &lt;/body&gt; разместить такой код:</p><pre class="crayon-plain-tag">&lt;script&gt;
	setTimeout(function(){
		jivo_api.open();
	}, 15000);
&lt;/script&gt;</pre><p>В коде 15000 &#8212; это задержка в милисекундах. Можно свою задать. 15000 = 15 сек.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://xn--80ajr5b.com/2018/03/avtomaticheskoe-otkrytie-okna-jivosite-besplatnaya-versiya/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
