Семён Кудрявцев

Семён Кудрявцев

С нами с 21 августа 2015; Место в рейтинге пользователей: #40

Авторизация в новом контексте

Всем привет, возник вопрос:
Когда пользователь авторизован в админке, то это без проблем можно проверить в контексте web
{if $_modx->hasSessionContext('mgr')}OK{/if}
Но возникает проблема в новом созданном контексте, там этот метод не работает.
Нашёл в сообществе пост, где Василий поделился плагином, который может авторизовать в любом контексте
<?php
if ($modx->event->name == 'OnWebPageInit') {
   if ($modx->user->hasSessionContext('mgr') && !$modx->user->hasSessionContext($modx->context->key)) {
	$modx->user->addSessionContext($modx->context->key);
   }
}

Но проблема в том, что первая часть условия не срабатывает в новом контексте и авторизация не происходит.
Подскажите как можно из любого контекста проверить авторизован ли пользователь в админке?
Семён Кудрявцев
31 октября 2017, 07:38
modx.pro
2 790
0

callback на добавление в корзину (id товара)

Всем привет, возникла задача поставить цель на добавление в корзину определённого товара.
В miniShop2 есть система коллбеков, однако как добавить в ответ сервера поле с id товара не разобрался.
Я использую такой код:
miniShop2.Callbacks.add('Cart.add.response.success', 'add_ok', function(response) {
    console.log(response.data)
  });
//и в response.data получаю следующие поля
//key:"33e75ff09dd601bbe69f351039152189"
//total_cost:7500
//total_count:1
//total_weight:0
Как сделать, чтобы в ответ прилетало также поле id товара?
Семён Кудрявцев
24 октября 2017, 07:01
modx.pro
1
3 700
0

Как реализовать белый список get параметров?

Всем привет! Сегодня возникла довольно параноидальная SEO задача — создать на сайте белый список допустимых гет-параметров, которые будут обрабатываться системой, а всё остальное должно редиректить на канонический url страницы, всё это с целью избежать возможный дублей.

Допустим белый список содержит следующее — utm_,yclid,query
Адрес сайта — site.ru/some-page/?utm_yandex=11 — должна обрабатываться и отдавать минимум код 200 или другая логика, например если это параметр для поиска по сайту.

А такой адрес — site.ru/some-page/?bad_param=1 — должен отредиректить с кодом 301 на канонический url — site.ru/some-page/

Как лучше реализовать такую задачу, есть идеи?
Мне приходят в голову такие варианты, либо всё через htaccess писать, либо создавать плагин, который каждый запрос будет мониторить, но вот с плагинами я не очень силён, поэтому может, кто подскажет пример такого решения?
Семён Кудрявцев
23 октября 2017, 11:28
modx.pro
825
0

Как в запросе к базе данных получить id записи

Всем привет! Возник вопрос как получить id записи в базу данных, после выполнения запроса INSERT
Допустим я записываю в базу каждое посещение страницы с некоторыми полями, id генерируется автоматом с автоинкрементом.
Как получить в переменную id записи которая только что записалась в базу?
В старых версиях PHP была такая функция: mysql_insert_id(), которая возвращала такой id
Но как получить его через PDO в MODX не могу понять?
Знатоки помогите, пожалуйста.
Семён Кудрявцев
18 октября 2017, 07:10
modx.pro
988
0

атрибуты ссылки - поле ещё функциональное или нет?

Всем привет, сегодня один клиент спросил про поле в админке — атрибуты ссылки и я чё-то залип с ответом, помню ещё года 2 назад по-моему это поле использовалось при генерации ссылок на ресурс, для установки дополнительных атрибутов или для генерации меню сайта, но сегодня попробовал туда позаписывать всяких атрибутов и ни один компонент ни один MODX тег так или иначе связанный с генерацией ссылок не стал использовать это поле.
Вопрос — сегодня это поле имеет хоть какое-то значение в работе системы? Или его можно юзать для своих целей, не переживая, что значения этого поля вдруг попадут куда не надо?
Семён Кудрявцев
15 октября 2017, 18:06
modx.pro
3 985
0

Циклы в Fenom - таблица по 4 в ряд

Всем привет, изучая Fenom пытаюсь решать частые задачи на сайтах и сегодня возникла следующая:
Нужно вывести таблицу названий стран, всего их 88 по 4 названия в одной строке, то есть должно получится 22 ряда по 4 столбика со значениями.
Пробовал использовать для определения текущей итерации параметр index, но он всегда начинается с ноля, дополнительный свой счётчик создать не получилось, так же встала проблема, что конструкция {continue} не работает, сразу ломается весь цикл и ничего не выводится.
Вот пример как я пытаюсь это сделать:
//Пример массива со странами
{var $countryArray = [
"ag"=>"Антигуа и Барбуда",
"al"=>"Албания",
"am"=>"Армения",
"at"=>"Австрия"
]
<table>
    <tbody>
    {foreach $countryArray as $key => $value index=$index first=$first}
        <tr>
              <td class="country_{$key}">{$value}</td>
        </tr>
    {/foreach}
    </tbody>
</table>
В этом коде каждая страна выводится в своей строке таблицы.
Подскажите как можно вывести все страны по 4 в ряд на Fenom?
Семён Кудрявцев
10 октября 2017, 08:17
modx.pro
1
2 748
0

Все url сайта через / в окончании

Привет, дорогое сообщество!
Вот уж не думал, что мне попадётся капризный сайт для которого принципиально важно сделать все url
с окончанием /
В сообществе уже не раз обсуждалась данная проблема, но, честно говоря универсального решения, по-моему так и не было найдено. Собственно, поэтому и пишу ещё раз вопрос на эту тему, может что нибудь придумается в этот раз.
И так проблема:
1)В MODX по-умолчанию все контейнеры имеют слеш на конце, простые ресурсы нет, но зато они имеют окончание .html
Семён Кудрявцев
06 октября 2017, 12:37
modx.pro
1 764
0

Fenom циклы

Всем привет!
Сегодня столкнулся с необходимостью просто в цикле вывести числа от 1 до 45 и решил для этого использовать Fenom.
В качестве цикла взял самый обычный for, в документации нет ни одного примера использования.
В итоге у меня получилось вот такая фигня:
{for $counter=0 to=45 index=$index}
                    {if $index == 0}
                        {continue}
                    {/if}
                    <option>{$index}</option>
{/for}
Кто нибудь может продемонстрировать нормальный пример поизящнее этого, так как у меня любые манипуляции с параметрами цикла сразу приводят к 500 ошибке.
Нужно просто вывести числа от 1 до 45 включительно.
Семён Кудрявцев
04 октября 2017, 07:35
modx.pro
2
7 552
0

Как парсить страницы своего же сайта?

Всем привет!
Возник вопрос как в сниппете имея id ресурса, послать запрос на эту страницу, распарсить и получить самое первое изображение в контенте и вернуть адрес на него?
Семён Кудрявцев
03 октября 2017, 09:56
modx.pro
2
1 300
0

Необычная сортировка pdoResources

Приветствую, дорогое сообщество!
Возникла сегодня задача отсортировать документы, полученные через pdoResoruces по одному из полей тв-шки сделанной при помощи MIGX таблички.
Структура migx-tv:
1)name
2)order
В документации pdoTools, сказано, что в качестве поля для сортировки можно указывать tv-поля, но как указать tv-поле, которое входить в состав migx-tv, а именно нужно поле — order?

Я подумал, что можно решить задачу передав в pdoResources в параметр resources нужную мне последовательность id ресурсов и он выведет их, но это не сработало, скорее всего потому, что существует параметр сортировки sortby со значением по-умолчанию, и ему нельзя указать, что, типа, смотри в последовательность, указанную в параметре resources, что было бы очень полезным, так как часто эти id получаются каким либо другим сниппетом и, собственно тогда моя задача была бы решена.
Семён Кудрявцев
29 сентября 2017, 14:33
modx.pro
1 858
0