<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блог: заметки с тегом modx</title>
<link>https://utata.ru/tags/modx/</link>
<description>konditerov.ru</description>
<author>Илья Кондитеров</author>
<language>ru</language>
<generator>E2 (v3877; Aegea)</generator>

<itunes:owner>
<itunes:name>Илья Кондитеров</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>konditerov.ru</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Modx Fromit AjaxForm antispam</title>
<guid isPermaLink="false">102</guid>
<link>https://utata.ru/all/modx-fromit-ajaxform-antispam/</link>
<pubDate>Thu, 08 Dec 2022 17:31:03 +0300</pubDate>
<author>Илья Кондитеров</author>
<comments>https://utata.ru/all/modx-fromit-ajaxform-antispam/</comments>
<description>
&lt;p&gt;Создаем hidden-поле и записываем в него сгенерированный на сервере ключ, который кладем в сессию. Когда аякс с формой уйдет на сервер, происходит сверка значения из hidden-поля с тем, что лежит в сессии. В случае, если значения не равны — это спам, следовательно останавливаем отправку формы на почту.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;message-key&amp;quot; value=&amp;quot;[[!getMessageKey]]&amp;quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;где сниппет *getMessageKey* со следующим содержимым&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;if (!isset($_SESSION['spamProtectionMessageKey']) || empty($_SESSION['spamProtectionMessageKey'])){
    $_SESSION['spamProtectionMessageKey'] = time();
}
return $_SESSION['spamProtectionMessageKey'];&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И создаем еще один снимппет — хук: chekSpamProtectionMessageKey, со следующим содержимым:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;$messageKey = $hook-&amp;gt;getValue('message-key');
if (!isset($_SESSION['spamProtectionMessageKey']) || empty($_SESSION['spamProtectionMessageKey'])
    || empty($messageKey) || (int)$messageKey !== (int)$_SESSION['spamProtectionMessageKey']){
    return false;
}
return true;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;и добавляем вы вызов данный хук&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;amp;hooks=`spam,chekSpamProtectionMessageKey,email`&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>AjaxForm FormIt Цели</title>
<guid isPermaLink="false">79</guid>
<link>https://utata.ru/all/ajaxform-formit-celi/</link>
<pubDate>Wed, 24 Jul 2019 01:44:37 +0300</pubDate>
<author>Илья Кондитеров</author>
<comments>https://utata.ru/all/ajaxform-formit-celi/</comments>
<description>
&lt;p&gt;yandex&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[[!AjaxForm?
     &amp;amp;snippet=`FormIt`
     &amp;amp;successMessage=`Сообщение успешно отправлено
     &amp;lt;script&amp;gt;yaCounterXXXXXXXX.reachGoal('target');&amp;lt;/script&amp;gt;`
]]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Google Analytics&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[[!AjaxForm?
     &amp;amp;snippet=`FormIt`
     &amp;amp;successMessage=`Сообщение успешно отправлено
     &amp;lt;script&amp;gt;ga('send', 'event', 'form' 'submit'); yaCounterXXXXXXXX.reachGoal('target');&amp;lt;/script&amp;gt;`
]]&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Защита от спама в modx при использовании FormIt</title>
<guid isPermaLink="false">59</guid>
<link>https://utata.ru/all/zaschita-ot-spama-v-modx-pri-ispolzovanii-formit/</link>
<pubDate>Mon, 30 Apr 2018 02:13:02 +0300</pubDate>
<author>Илья Кондитеров</author>
<comments>https://utata.ru/all/zaschita-ot-spama-v-modx-pri-ispolzovanii-formit/</comments>
<description>
&lt;p&gt;&lt;a href="https://modzone.ru/blog/2018/01/07/csrf-token-formit-hook/"&gt;https://modzone.ru/blog/2018/01/07/csrf-token-formit-hook/&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Удобная админка для менеджеров в Modx Revolution</title>
<guid isPermaLink="false">34</guid>
<link>https://utata.ru/all/udobnaya-adminka-dlya-menedzherov-v-modx-revolution/</link>
<pubDate>Thu, 02 Mar 2017 20:18:43 +0300</pubDate>
<author>Илья Кондитеров</author>
<comments>https://utata.ru/all/udobnaya-adminka-dlya-menedzherov-v-modx-revolution/</comments>
<description>
&lt;ol start="1"&gt;
&lt;li&gt;&lt;a href="http://bayguzin.ru/main/uroki/uroki-modx-revolution/udobnaya-adminka-modx-revo.html"&gt;Удобная админка для менеджеров в Modx Revolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://webdesign-master.ru/blog/modx/2016-04-04-modx-permissions.html"&gt;Настройка прав доступа для контент-менеджера в MODX Revolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bayguzin.ru/main/uroki/uroki-modx-revolution/resours-exclude-modx-revo.html"&gt;Скрытие ресурсов в админке Modx Revolution для менеджера&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bayguzin.ru/main/uroki/uroki-modx-revolution/seo-modx-revolution.html"&gt;SEO оптимизация сайта на Modx Revolution&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>Модуль приема платежей для CMS Modx Minishop2</title>
<guid isPermaLink="false">24</guid>
<link>https://utata.ru/all/modul-priema-platezhey-dlya-cms-modx-minishop2/</link>
<pubDate>Thu, 04 Aug 2016 20:27:46 +0300</pubDate>
<author>Илья Кондитеров</author>
<comments>https://utata.ru/all/modul-priema-platezhey-dlya-cms-modx-minishop2/</comments>
<description>
&lt;p&gt;&lt;a href="https://www.walletone.com/ru/merchant/modules/cms-modx-minishop2/"&gt;https://www.walletone.com/ru/merchant/modules/cms-modx-minishop2/&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>snippet if</title>
<guid isPermaLink="false">15</guid>
<link>https://utata.ru/all/snippet-if/</link>
<pubDate>Fri, 22 Apr 2016 16:42:24 +0300</pubDate>
<author>Илья Кондитеров</author>
<comments>https://utata.ru/all/snippet-if/</comments>
<description>
&lt;p&gt;&lt;a href="https://rtfm.modx.com/extras/revo/if"&gt;https://rtfm.modx.com/extras/revo/if&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Отключаем yandexmap.drag на мобильных устройствах</title>
<guid isPermaLink="false">9</guid>
<link>https://utata.ru/all/otklyuchaem-yandexmap-drag-na-mobilnyh-ustroystvah/</link>
<pubDate>Thu, 18 Feb 2016 17:36:00 +0300</pubDate>
<author>Илья Кондитеров</author>
<comments>https://utata.ru/all/otklyuchaem-yandexmap-drag-na-mobilnyh-ustroystvah/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/* Определяем мобильный ли браузер*/
    var isMobile = {
      Android: function() {
        return navigator.userAgent.match(/Android/i);
      },
      BlackBerry: function() {
        return navigator.userAgent.match(/BlackBerry/i);
      },
      iOS: function() {
        return navigator.userAgent.match(/iPhone|iPad|iPod/i);
      },
      Opera: function() {
        return navigator.userAgent.match(/Opera Mini/i);
      },
      Windows: function() {
        return navigator.userAgent.match(/IEMobile/i);
      },
      any: function() {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
      }
    };
/* Запрещаем нахуй драг с мобилы*/
    if(isMobile.any()){
      myMap[[+idMap]].behaviors.disable('drag');
    }
 /* Выключаем скрол */
    myMap[[+idMap]].behaviors.disable('scrollZoom');&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>FirstChildRedirect</title>
<guid isPermaLink="false">7</guid>
<link>https://utata.ru/all/firstchildredirect/</link>
<pubDate>Sat, 30 Jan 2016 12:02:37 +0300</pubDate>
<author>Илья Кондитеров</author>
<comments>https://utata.ru/all/firstchildredirect/</comments>
<description>
&lt;p&gt;FirstChildRedirect — сниппет для редиректа на первый дочерний ресурс&lt;/p&gt;
&lt;h2&gt;Параметры&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;b&gt;&amp;docid&lt;/b&gt; — id папки, в первый дочерний документ которой необходим редирект&lt;br /&gt;
&lt;b&gt;Формат&lt;/b&gt;: id документа&lt;br /&gt;
&lt;b&gt;Значение по умолчанию&lt;/b&gt;: ID текущей страницы&lt;br /&gt;
&lt;b&gt;Примечание&lt;/b&gt;:&lt;br /&gt;
&lt;b&gt;Пример&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;amp;docid=`12`&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;p&gt;&lt;b&gt;&amp;default&lt;/b&gt; — перадресация на документ в случае отсутствия дочерних документов&lt;br /&gt;
&lt;b&gt;Формат&lt;/b&gt;: id доумента | site_start | site_unavailable_page | error_page | unauthorized_page&lt;br /&gt;
&lt;b&gt;Значение по умолчанию&lt;/b&gt;: site_start&lt;br /&gt;
&lt;b&gt;Примечание&lt;/b&gt;:&lt;br /&gt;
&lt;b&gt;Пример&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;amp;default=`1`&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;p&gt;&lt;b&gt;&amp;sortBy&lt;/b&gt; — получение первого документа в зависимости от сортировки&lt;br /&gt;
&lt;b&gt;Формат&lt;/b&gt;: поле документа&lt;br /&gt;
&lt;b&gt;Значение по умолчанию&lt;/b&gt;: menuindex&lt;br /&gt;
&lt;b&gt;Примечание&lt;/b&gt;: любое допустимое поле документа&lt;br /&gt;
&lt;b&gt;Пример&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;amp;sortBy=`pagetitle`&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;p&gt;&lt;b&gt;&amp;sortDir&lt;/b&gt; — направление сортировки&lt;br /&gt;
&lt;b&gt;Формат&lt;/b&gt;: ASC | DESC&lt;br /&gt;
&lt;b&gt;Значение по умолчанию&lt;/b&gt;: ASC&lt;br /&gt;
&lt;b&gt;Примечание&lt;/b&gt;:&lt;br /&gt;
&lt;i&gt;ASC&lt;/i&gt; — по возрастанию&lt;br /&gt;
&lt;i&gt;DESC&lt;/i&gt; — по убыванию&lt;br /&gt;
&lt;b&gt;Пример&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;amp;sortDir=`DESC`&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;p&gt;&lt;b&gt;&amp;responseCode&lt;/b&gt; — код перенаправления&lt;br /&gt;
&lt;b&gt;Формат&lt;/b&gt;: 301 | 302 | HTTP/1.1 302 Moved Temporarily&lt;br /&gt;
&lt;b&gt;Значение по умолчанию&lt;/b&gt;: 301&lt;br /&gt;
&lt;b&gt;Примечание&lt;/b&gt;:&lt;br /&gt;
&lt;b&gt;Пример&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;amp;responseCode=`302`&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;h2&gt;Примеры&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;Переадресация в первый дочерний документ&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[!FirstChildRedirect!]&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;
&lt;p&gt;&lt;b&gt;Переадресация в первый дочерний документ контейнера с id=12&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[[FirstChildRedirect? &amp;amp;docid=`12`]]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href="http://i--gu.ru/firstchildredirect"&gt; Отсюда&lt;/a&gt;&lt;/p&gt;
</description>
</item>


</channel>
</rss>