{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог: заметки с тегом modx",
    "_rss_description": "konditerov.ru",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/utata.ru\/tags\/modx\/",
    "feed_url": "https:\/\/utata.ru\/tags\/modx\/json\/",
    "icon": "https:\/\/utata.ru\/user\/userpic@2x.jpg?1641662784",
    "author": {
        "name": "Илья Кондитеров",
        "url": "https:\/\/utata.ru\/",
        "avatar": "https:\/\/utata.ru\/user\/userpic@2x.jpg?1641662784"
    },
    "items": [
        {
            "id": "102",
            "url": "https:\/\/utata.ru\/all\/modx-fromit-ajaxform-antispam\/",
            "title": "Modx Fromit AjaxForm antispam",
            "content_html": "<p>Создаем hidden-поле и записываем в него сгенерированный на сервере ключ, который кладем в сессию. Когда аякс с формой уйдет на сервер, происходит сверка значения из hidden-поля с тем, что лежит в сессии. В случае, если значения не равны — это спам, следовательно останавливаем отправку формы на почту.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&lt;input type=&quot;hidden&quot; name=&quot;message-key&quot; value=&quot;[[!getMessageKey]]&quot; \/&gt;<\/code><\/pre><p>где сниппет *getMessageKey* со следующим содержимым<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">if (!isset($_SESSION['spamProtectionMessageKey']) || empty($_SESSION['spamProtectionMessageKey'])){\r\n    $_SESSION['spamProtectionMessageKey'] = time();\r\n}\r\nreturn $_SESSION['spamProtectionMessageKey'];<\/code><\/pre><p>И создаем еще один снимппет — хук: chekSpamProtectionMessageKey, со следующим содержимым:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">$messageKey = $hook-&gt;getValue('message-key');\r\nif (!isset($_SESSION['spamProtectionMessageKey']) || empty($_SESSION['spamProtectionMessageKey'])\r\n    || empty($messageKey) || (int)$messageKey !== (int)$_SESSION['spamProtectionMessageKey']){\r\n    return false;\r\n}\r\nreturn true;<\/code><\/pre><p>и добавляем вы вызов данный хук<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&amp;hooks=`spam,chekSpamProtectionMessageKey,email`<\/code><\/pre>",
            "date_published": "2022-12-08T17:31:03+03:00",
            "date_modified": "2022-12-08T17:30:54+03:00",
            "_date_published_rfc2822": "Thu, 08 Dec 2022 17:31:03 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "102",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "79",
            "url": "https:\/\/utata.ru\/all\/ajaxform-formit-celi\/",
            "title": "AjaxForm FormIt Цели",
            "content_html": "<p>yandex<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">[[!AjaxForm?\r\n     &amp;snippet=`FormIt`\r\n     &amp;successMessage=`Сообщение успешно отправлено\r\n     &lt;script&gt;yaCounterXXXXXXXX.reachGoal('target');&lt;\/script&gt;`\r\n]]<\/code><\/pre><p>Google Analytics<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">[[!AjaxForm?\r\n     &amp;snippet=`FormIt`\r\n     &amp;successMessage=`Сообщение успешно отправлено\r\n     &lt;script&gt;ga('send', 'event', 'form' 'submit'); yaCounterXXXXXXXX.reachGoal('target');&lt;\/script&gt;`\r\n]]<\/code><\/pre>",
            "date_published": "2019-07-24T01:44:37+03:00",
            "date_modified": "2019-07-24T01:45:20+03:00",
            "_date_published_rfc2822": "Wed, 24 Jul 2019 01:44:37 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "79",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "59",
            "url": "https:\/\/utata.ru\/all\/zaschita-ot-spama-v-modx-pri-ispolzovanii-formit\/",
            "title": "Защита от спама в modx при использовании FormIt",
            "content_html": "<p><a href=\"https:\/\/modzone.ru\/blog\/2018\/01\/07\/csrf-token-formit-hook\/\">https:\/\/modzone.ru\/blog\/2018\/01\/07\/csrf-token-formit-hook\/<\/a><\/p>\n",
            "date_published": "2018-04-30T02:13:02+03:00",
            "date_modified": "2018-04-30T02:12:58+03:00",
            "_date_published_rfc2822": "Mon, 30 Apr 2018 02:13:02 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "59",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "34",
            "url": "https:\/\/utata.ru\/all\/udobnaya-adminka-dlya-menedzherov-v-modx-revolution\/",
            "title": "Удобная админка для менеджеров в Modx Revolution",
            "content_html": "<ol start=\"1\">\n<li><a href=\"http:\/\/bayguzin.ru\/main\/uroki\/uroki-modx-revolution\/udobnaya-adminka-modx-revo.html\">Удобная админка для менеджеров в Modx Revolution<\/a><\/li>\n<li><a href=\"http:\/\/webdesign-master.ru\/blog\/modx\/2016-04-04-modx-permissions.html\">Настройка прав доступа для контент-менеджера в MODX Revolution<\/a><\/li>\n<li><a href=\"http:\/\/bayguzin.ru\/main\/uroki\/uroki-modx-revolution\/resours-exclude-modx-revo.html\">Скрытие ресурсов в админке Modx Revolution для менеджера<\/a><\/li>\n<li><a href=\"http:\/\/bayguzin.ru\/main\/uroki\/uroki-modx-revolution\/seo-modx-revolution.html\">SEO оптимизация сайта на Modx Revolution<\/a><\/li>\n<\/ol>\n",
            "date_published": "2017-03-02T20:18:43+03:00",
            "date_modified": "2017-04-07T23:37:48+03:00",
            "_date_published_rfc2822": "Thu, 02 Mar 2017 20:18:43 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "34",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "24",
            "url": "https:\/\/utata.ru\/all\/modul-priema-platezhey-dlya-cms-modx-minishop2\/",
            "title": "Модуль приема платежей для CMS Modx Minishop2",
            "content_html": "<p><a href=\"https:\/\/www.walletone.com\/ru\/merchant\/modules\/cms-modx-minishop2\/\">https:\/\/www.walletone.com\/ru\/merchant\/modules\/cms-modx-minishop2\/<\/a><\/p>\n",
            "date_published": "2016-08-04T20:27:46+03:00",
            "date_modified": "2016-08-04T20:27:44+03:00",
            "_date_published_rfc2822": "Thu, 04 Aug 2016 20:27:46 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "24",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "15",
            "url": "https:\/\/utata.ru\/all\/snippet-if\/",
            "title": "snippet if",
            "content_html": "<p><a href=\"https:\/\/rtfm.modx.com\/extras\/revo\/if\">https:\/\/rtfm.modx.com\/extras\/revo\/if<\/a><\/p>\n",
            "date_published": "2016-04-22T16:42:24+03:00",
            "date_modified": "2016-04-22T16:42:21+03:00",
            "_date_published_rfc2822": "Fri, 22 Apr 2016 16:42:24 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "15",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "9",
            "url": "https:\/\/utata.ru\/all\/otklyuchaem-yandexmap-drag-na-mobilnyh-ustroystvah\/",
            "title": "Отключаем yandexmap.drag на мобильных устройствах",
            "content_html": "<pre class=\"e2-text-code\"><code class=\"\">\/* Определяем мобильный ли браузер*\/\r\n    var isMobile = {\r\n      Android: function() {\r\n        return navigator.userAgent.match(\/Android\/i);\r\n      },\r\n      BlackBerry: function() {\r\n        return navigator.userAgent.match(\/BlackBerry\/i);\r\n      },\r\n      iOS: function() {\r\n        return navigator.userAgent.match(\/iPhone|iPad|iPod\/i);\r\n      },\r\n      Opera: function() {\r\n        return navigator.userAgent.match(\/Opera Mini\/i);\r\n      },\r\n      Windows: function() {\r\n        return navigator.userAgent.match(\/IEMobile\/i);\r\n      },\r\n      any: function() {\r\n        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());\r\n      }\r\n    };\r\n\/* Запрещаем нахуй драг с мобилы*\/\r\n    if(isMobile.any()){\r\n      myMap[[+idMap]].behaviors.disable('drag');\r\n    }\r\n \/* Выключаем скрол *\/\r\n    myMap[[+idMap]].behaviors.disable('scrollZoom');<\/code><\/pre>",
            "date_published": "2016-02-18T17:36:00+03:00",
            "date_modified": "2016-03-01T12:47:47+03:00",
            "_date_published_rfc2822": "Thu, 18 Feb 2016 17:36:00 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "9",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "7",
            "url": "https:\/\/utata.ru\/all\/firstchildredirect\/",
            "title": "FirstChildRedirect",
            "content_html": "<p>FirstChildRedirect — сниппет для редиректа на первый дочерний ресурс<\/p>\n<h2>Параметры<\/h2>\n<hr \/>\n<p><b>&docid<\/b> — id папки, в первый дочерний документ которой необходим редирект<br \/>\n<b>Формат<\/b>: id документа<br \/>\n<b>Значение по умолчанию<\/b>: ID текущей страницы<br \/>\n<b>Примечание<\/b>:<br \/>\n<b>Пример<\/b>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&amp;docid=`12`<\/code><\/pre><hr \/>\n<p><b>&default<\/b> — перадресация на документ в случае отсутствия дочерних документов<br \/>\n<b>Формат<\/b>: id доумента | site_start | site_unavailable_page | error_page | unauthorized_page<br \/>\n<b>Значение по умолчанию<\/b>: site_start<br \/>\n<b>Примечание<\/b>:<br \/>\n<b>Пример<\/b>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&amp;default=`1`<\/code><\/pre><hr \/>\n<p><b>&sortBy<\/b> — получение первого документа в зависимости от сортировки<br \/>\n<b>Формат<\/b>: поле документа<br \/>\n<b>Значение по умолчанию<\/b>: menuindex<br \/>\n<b>Примечание<\/b>: любое допустимое поле документа<br \/>\n<b>Пример<\/b>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&amp;sortBy=`pagetitle`<\/code><\/pre><hr \/>\n<p><b>&sortDir<\/b> — направление сортировки<br \/>\n<b>Формат<\/b>: ASC | DESC<br \/>\n<b>Значение по умолчанию<\/b>: ASC<br \/>\n<b>Примечание<\/b>:<br \/>\n<i>ASC<\/i> — по возрастанию<br \/>\n<i>DESC<\/i> — по убыванию<br \/>\n<b>Пример<\/b>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&amp;sortDir=`DESC`<\/code><\/pre><hr \/>\n<p><b>&responseCode<\/b> — код перенаправления<br \/>\n<b>Формат<\/b>: 301 | 302 | HTTP\/1.1 302 Moved Temporarily<br \/>\n<b>Значение по умолчанию<\/b>: 301<br \/>\n<b>Примечание<\/b>:<br \/>\n<b>Пример<\/b>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&amp;responseCode=`302`<\/code><\/pre><hr \/>\n<h2>Примеры<\/h2>\n<p><b>Переадресация в первый дочерний документ<\/b>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">[!FirstChildRedirect!]<\/code><\/pre><hr \/>\n<p><b>Переадресация в первый дочерний документ контейнера с id=12<\/b>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">[[FirstChildRedirect? &amp;docid=`12`]]<\/code><\/pre><p><a href=\"http:\/\/i--gu.ru\/firstchildredirect\"> Отсюда<\/a><\/p>\n",
            "date_published": "2016-01-30T12:02:37+03:00",
            "date_modified": "2016-01-30T12:02:32+03:00",
            "_date_published_rfc2822": "Sat, 30 Jan 2016 12:02:37 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "7",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3877,
    "_e2_ua_string": "E2 (v3877; Aegea)"
}