Александр Мельник

Александр Мельник

С нами с 02 сентября 2016; Место в рейтинге пользователей: #64

что не так в optionFilters ?

Есть вызов msProducts
$products=$modx->runSnippet('msProducts',[
    'parents'=>2,
    'limit'=>100,
    'optionFilters'=>'{"height:=":"200","OR:height:=":"900"}'   
]);
и вот никакими синтаксисами я не могу сделать выборку и товаров со значением 200 и 900.
Как по мне строка передаваемая в optionFilters совершенно валидна и соответствует как документации по minishop
docs.modx.pro/komponentyi/minishop2/snippetyi/msproducts
так и оф документации по modx
docs.modx.com/current/en/extending-modx/xpdo/class-reference/xpdoquery/xpdoquery.where
так и заметкам пользователей этого сайта
modx.pro/help/13189

Но в логе ошибка, причем видно (ну или мне так кажется), что именно какой-то сбой в синтаксисе.
Вот лог
Александр Мельник
03 мая 2020, 17:45
modx.pro
844
+1

а какие методы борьбы с недобросовестными заказчиками используете вы?

Будет интересно услышать ваши мысли.
Используете ли вы лично или компания в которой вы работаете какие-то способ защитить себя от «плохих» заказчиков?
Мы сталкиваемся с такими проблемами.
Сайты заказчика находятся на его хостинге и под его контролем. И часто заказчик решает, что вместо того чтобы оплатить услуги, которые уже сделаны, лучше просто сменить всюду доступы и «кинуть».
На моей недолгой практике (я занимаюсь веб разработкой всего 3 года) сегодня уже 10ый такой случай.
Вместо оплаты долга (в кризис и карантин многие работы проводились по «дружбе» и с оплатой потом), заказчик нанял людей, которые сменили все доступы, закрыли все подключения (ftp, ssh) и все.
Да мы заключаем договора, да юридически можно спорить, но в нашем мире любое судебное разбирательство — себе дороже.
И даже было 2 опыта судебных, когда заказчики не стали платить большие суммы. Но боже мой, они не приходят в суд, заседания откладываются, шлют повестки и это длиться годами.
Александр Мельник
30 апреля 2020, 19:22
modx.pro
573
0

кеширование файловых элементов. Оно есть? Нет? Как отлючить?

Есть файл шаблона
В нем код
{extends 'file:templates/general.tpl'}

{block 'content'}
<div class="container">
    <h1>{$_modx->resource.pagetitle}</h1>
    {'@FILE snippets/getFilters.php'|snippet}
</div>
{/block}
Так вот все что я пишу в getFilters.php жутко кешируется. Хотя в системных настройках установил все что связано с кешированием в «нет». Однако на странице ничего не меняется, пока не очистить кеш или в админке или физически.
Хотя в документации про файловые элементы написано, что они не кешируются.
docs.modx.pro/komponentyi/pdotools/fajlovyie-elementyi

Кто подскажет как отключить?
Александр Мельник
30 апреля 2020, 17:01
modx.pro
373
0

где core.transport.zip ?

Осваиваю для себя новые способы установки modx.
Всегда просто скачивал с сайта modx.com, заливал на сервер, запускал /setup/
Сейчас склонировал репозиторий отсюда
github.com/modxcms/revolution
устанавливаю и на последнем уже этапе ошибка
Не удалось установить MODX, поскольку MODX не смог распаковать пакет /home/admin/web/site.ru/public_html/core/packages/core.transport.zip. Проверьте, что файл /home/admin/web/site.ru/public_html/core/packages/core.transport.zip существует, доступен для записи, и возможна запись в каталог /home/admin/web/site.ru/public_html/core/packages/.
Проверяю — на сервере нет такого файла в директории /core/packages/
Смотрю на гитхабе — и там его нет.

Что я делаю не так?
Александр Мельник
20 апреля 2020, 22:19
modx.pro
741
0

Подскажите, что за ошибка.

Сначала 5 строк предистории.
Создаю пользователя на сайте и заполняю его профиль вот так
$user =$modx->newObject('modUser');
    $user->set('username',$login);
    $user->set('password',$password);
    $profile=$modx->newObject('modUserProfile');
    $profile->set('fullname', $name);
    $profile->set('email', $login);
    $user->addOne($profile);
    //$profile->save();
    $user->save();
Получал в логе ошибку (своими словами) — дублирование internalKey = 0; Понял что причина в том, что я вызывл метод save отдельно для профиля, отдельно для user и я закоментил сохранение профиля, уверен именно оно давало ошибку. И да, она пропала. НО появилась другая, которую я понять уж совсем не могу
Александр Мельник
17 апреля 2020, 17:22
modx.pro
558
0

reCaptchaV3 и настройка "жескости"

На многих формах, разных сайтов, где установлена reCaptchaV3 люди жалуются, что форма не отправляется с пометкой — вы не прошли каптчу.
И сам тоже периодически это наблюдаю — идеально заполненная форма не отправляется, причем тут 50 на 50, как повезет.
Почему то думал, что в системных настройках reCaptchaV3 были настройки, где можно числом задать степень «жескости».
Но открыл системные настройки компонента и там совершенно пусто, приснилось мне что-ли.
Есть способы «умерить пыл» reCaptchaV3?
Александр Мельник
17 апреля 2020, 13:25
modx.pro
303
0

Как взаимодействовать из плагина со страницей?

Есть плагин, на событие от minishop2 — msOnGetOrderCost
Как правильно из него взаимодействовать со страницей?
Все что нахожу в документации по плагинам, это —
$modx->event->output('Вас ожидает подарок на следующей странице');
однако во всем примерах такой код вызывается как реакция на негативное событие. Ну тоесть не дать добавить товар или что-то еще. То есть всегда когда действие нужно остановить и для этих случае это срабатывает — я вижу красное уведомление jGrowl от минишоп и все ок.

Но мне нужно уведомить пользователя что сумма его заказа позволяет получить подарок.
case 'msOnGetOrderCost':
          
             if($cost>=$giftSum){
                 $modx->event->output('Вас ожидает подарок на следующей странице');
             }
        break;
и про срабатывании я вижу уведомление на красном фоне и остановку всей остальной логики — то есть все цены после этого в корзине становятся равны нулю. (имеется ввиду те, которые должны были обновится)
Меня бы устроила возможность взаимодействовать со страницей на JS, например выполнить некий скрипт, но опять же через
$modx->event->output('Вас ожидает подарок на следующей странице');
нельзя передать код, только чистый текст,
Александр Мельник
16 апреля 2020, 13:12
modx.pro
692
0

Удалить товар из корзины по id ?

Может кто-то сталкивался и быстро подскажет, буду признателен.
Хочу чтобы товары, которые выводятся msProducts имели возможность быть как добавленными в корзину так и удаленными оттуда.
И если с добавление товара в корзину проблем нет, добавление происходит по id товара
<form method="post" class="ms2_form">
                    <input type="hidden" name="id" value="{$id}">
                    
                    <input type="hidden" name="count" value="1">
                    <input type="hidden" name="options" value="[]">
                    <button class="btn btn_fluid" name="ms2_action" value="cart/add">I love this one</button>
                </form>
то для удаление уже используется не id а некий ключ — некий хеш.
<form method="post" class="ms2_form">
                    <input type="hidden" name="key" value="{$product.key}">
                    <button class="link" type="submit" name="ms2_action" value="cart/remove">
                        Remove
                    </button>
                </form>
и этот key в сниппете msProducts отсутствует.
Как наименее трудозатратно удалить товар имея только id?
Спасибо.
Александр Мельник
15 апреля 2020, 14:10
modx.pro
817
0

а расскажите про gitify пожалуйста

Сегодня youtube подсунул мне ролик с MODX meetup 2015 года, где Иван Климчук рассказывает о gitify. (пронырливый google знает что я ищу информацию о совместной разработке и возможностях синхронизации сайтов).
Ролик этот я уже смотрел 2 года назад, ничего тогда не понял от слова совсем. Сейчас понял немногим больше. Через часик выделю время и буду на практике пробовать, но буду рад если кто-то поделится своим опытом использования и ответит на мои, пока что теоретические вопросы.
Для начала озвучу мою проблему. Хочу иметь сайт production и сайт(сервер на котором будут вести работы с копией production). Чтобы разработчик имел доступ только к серверу разработки, к гитхабу но ни в коем случае ни к production. Чанки, сниппеты, шаблоны — это все работает на файловых элементах pdoTools (в идеальной ситуации, но пока рассмотрим идеальную) и синхронизировать их через github не так сложно. Но разработчику на дев сайте обязательно придется создавать новые TV, плагины, менять системные настройки, создавать свои таблицы в базе и это конечно на modx беда. При том что он не имеет права пойти на production и там в админке повторить тоже самое, ну не записки же ему писать — «а потом я создал TV назвал так-то, тип такой то, привязал к такому та шаблону»
1. Проект как бы жив? Последний комиты были несколько лет назад. Имеет ли вообще смысл изучать?
2. Что именно синхронизирует gitify? Данные из всех таблиц? Изменится системная настройка он создаст файл, хранящий эту настройку? Добавиться новый контекст — будет синхронизирован и контекст?
Александр Мельник
29 марта 2020, 18:02
modx.pro
1
567
0

а расскажите мне про Github и программирование с git

Если у кого-то найдется время и возможность, поделиться своим опытом и ответить на мои вопросы, буду благодарен.

Я обычно стараюсь максимально подробно изложить вопрос и проблему, но часто вижу, что просто сбиваю людей с толку. И сейчас я тоже вычертил много диаграмм, продумал текст, но решил повременить.
Попробую кратко.
Я был очень много лет единственным программистом в компании, сейчас стоит задача наладить работу для 4-5 разработчиков.
Нюансы. Наша компания только 20 процентов сайтов разрабатывает сама. Остальные 80 — это проекты кем-то когда-то сделанные, на разных CMS и фреймворках, которые уже по 10 лет работают на захудалых виртуальных хостингах.
Цель. продумать схему работы, при которой сам сайт (production) будет максимально защищен от ошибок, при этом несколько разработчиков смогут так или иначе влиять на его код, постоянно внося изменения.

Я специально удалил из этой диаграммы все связи.

чтобы не навязывать своих идей.
Есть сайт, который трудится на хостинге заказчика (не факт что там даже есть git но пока не будем о печальном). Есть наш сервер. У каждого проекта планирую свой сервер, поскольку сайты все разные (есть такие которые требуют php 5.2 а есть такие которые в качестве операционки используют os bitrix). Есть два разработчика, которые могут взаимодействовать с сервером dev (я предполагаю, что взаимодействие будет через возможности ide работу с удаленными серверами)
есть аккаунт на github.

Как максимально правильно связать это в жизнеспособную систему? Где должны быть инициированы репозитории? Потому как из моих скудных знаний о git я знаю, что клонировать репозиторий можно только в пустую директорию, а значит первую инициацию нужно проводить на сервере production…

А теперь часть вопросов о сервисе github.
Александр Мельник
24 марта 2020, 19:33
modx.pro
1 441
+3