Vladimir

Vladimir

С нами с 25 июня 2021; Место в рейтинге пользователей: #283
Vladimir
19 марта 2023, 18:15
0
Посмотрите что у вас в htaccess, если там вам ничего не даст, замените папку manager полностью на официальную
Vladimir
16 марта 2023, 05:25
0
Ваш плагин «ms2GalleryResources» какой-то кастомный, если ваша цель с этим плагином вывести все картинки текущего ресурса, то замените на стандартный. В любом случае без полного шаблона помочь не выйдет
Vladimir
15 марта 2023, 19:39
0
1) Везде где есть двойные фигурные скобки замените на одинарные фигурные скобки.
2) Везде где есть знак "+" заменить на знак "$" допустим
{{+pagetitle}}
на
{$pagetitle}

3) плейсхолдеры лучше берите через "$_pls['']" допустим не
{{+360x270}}
а
{$_pls['360x270']}
. и соответственно у вашего превью
{{+360x270.alt}}
не может быть ещё внутреннего значения, ваш
{{+360x270}}
это уже конечная переменная, которая в вашем примере возвращает ссылку на превью в вашем разрешении
4)в феноме нет таких конструкций как ":" и действие, у фенома идёт пайпами через знак "|". соответственно в вашем пример не вот так
{{+menutitle:default=`{{+pagetitle}}`}}
а так
{if $menutitle}{$menutitle}{else}{$pagetitle}{/if}
Скиньте шаблон сюда полностью, посмотрю помогу. Можете поставить плагин modstore.pro/packages/utilities/moddevtools и легко быстро везде заменить разные вещи, допустим {{ на {
Vladimir
12 февраля 2023, 17:52
0
Спасибо, будет ещё гораздо проще, но не зря всё таки пошёл по сложному пути, узнал много нового
Vladimir
11 февраля 2023, 18:33
+1
Спасибо огромное, и за статью, получилось, и потом получилось ещё и в крон поставить, вообще спасибо большое, прям открыл для себя 2а новых инструмента, сразу столько идей)
Vladimir
10 февраля 2023, 20:05
0
Убрал фигурные скобки возле переменной
$instance
и всё равно. Так же убрал проверку на server__addr в хуке регистрации, всё так же не работает.
<?php

/* читать экземпляры и записывать сообщения для очистки кэша в каждый каталог команд */
if ($modx->getService('registry', 'registry.modRegistry')) {
    $modx->registry->addRegister('wpnotifier', 'registry.modDbRegister', array('directory' => 'wpnotifier'));
    $modx->registry->wpnotifier->connect();
    $modx->registry->wpnotifier->subscribe('/distrib/instances/');
    $instances = $modx->registry->wpnotifier->read(array('poll_limit' => 1, 'msg_limit' => 25, 'remove_read' => false));
    if (!empty($instances)) {
        foreach ($instances as $instance) {
            $modx->log(1, 'после нет');
            $modx->registry->wpnotifier->subscribe("/distrib/commands/$instance/");
            $modx->registry->wpnotifier->send("/distrib/commands/$instance/", 'notify_simple_2_field_form', array('expires' => time() + 1440));
        }
    }
}
Vladimir
10 февраля 2023, 19:54
0
Пытался так
Плагин на событие «OnWebPageComplete »
<?php

/* найти любые удаленные команды для выполнения из главного экземпляра */
$instance = $_SERVER['SERVER_ADDR'];
if (!empty($instance) && $modx->getService('registry', 'registry.modRegistry')) {
    $modx->registry->addRegister('wpnotifier', 'registry.modDbRegister', array('directory' => 'wpnotifier'));
    $modx->registry->wpnotifier->connect();

    /* зарегистрировать этот экземпляр */
    $modx->registry->wpnotifier->subscribe("/distrib/instances/");
    $modx->registry->wpnotifier->send("/distrib/instances/", array($instance => true), array('expires' => time() + 1440));

    /* найдите любые действительные командные сообщения для этого экземпляра и действуйте на них */
    $modx->registry->wpnotifier->subscribe("/distrib/commands/{$instance}/");
    $commands = $modx->registry->wpnotifier->read(array('poll_limit' => 1, 'msg_limit' => 1));
    if (!empty($commands)) {
        $command = reset($commands);
        if (!empty($command)) {
             switch ($command) {
                 case 'notify_simple_2_field_form':
                    
                    $modx->log(1, 'Сообщение');
                    $results = $modx->runSnippet('whatsappNotifier', array(
                            'fullName' => 'TEST', 
                            'phoneNumber' => '+987987987987987',
                            'pageName' => 'Главная',
                            'pageUrl' => 'example.com/'
                            
                        )
                    );
                    break;
                 default:
                    break;
             }
        }
    }
}
А так же регистрирую через хук в формите этот сниппет
<?php

/* читать экземпляры и записывать сообщения для очистки кэша в каждый каталог команд */
if ($modx->getService('registry', 'registry.modRegistry')) {
    $modx->registry->addRegister('wpnotifier', 'registry.modDbRegister', array('directory' => 'wpnotifier'));
    $modx->registry->wpnotifier->connect();
    $modx->registry->wpnotifier->subscribe('/distrib/instances/');
    $instances = $modx->registry->wpnotifier->read(array('poll_limit' => 1, 'msg_limit' => 25, 'remove_read' => false));
    if (!empty($instances)) {
        foreach ($instances as $instance) {
            if ($instance == $_SERVER['SERVER_ADDR']) continue;
            $modx->registry->wpnotifier->subscribe("/distrib/commands/{$instance}/");
            $modx->registry->wpnotifier->send("/distrib/commands/{$instance}/", 'notify_simple_2_field_form', array('expires' => time() + 1440));
        }
    }
}
В баззе данных в 2х таблицах появляются записи
modx_register_queues и modx_register_topics

1)modx_register_queues
поле «name» такое «wpnotifier»
поле «options» такое «a:1:{s:9:»directory";s:10:«wpnotifier»;}"

2)modx_register_topics
поле «name» такое "/distrib/instances/"

Как я понялчто где-то должно создаться запись где "/distrib/instances/" будет равнятся айпи сервера "/distrib/instances/127.0.0.1" допустим, но не появляется
Vladimir
31 января 2023, 15:24
0
Можно ли откатить текущею версию modx и сохранить весь функционал что был сделан? обновлялся через этот пакет UpgradeMODX
Vladimir
17 января 2023, 14:08
0
Получилось лишь с помощью автоматизации браузера сделать, что тоже был геморой, но проще, кому надо могу скинуть, делал через Automa. Но так и не решил нормальным способом.
Vladimir
17 января 2023, 07:11
0
Не получается. Всё так же сохраняется лишь крайне созданное поле
<?php
switch ($modx->event->name) {
    case 'msOnBeforeCreateOrder':
        
        $userId = $order->get('user_id');
        $user = $modx->getObject('modUser', array('id' => $userId));
        
        $isRegularCustomerField = 0;
        
        // $modx->log(1, 'ORRRRRRRRRRRRRRRRRRRR');
        if (is_object($msOrder) && is_object($user)) {
            $profile = $user->getOne('Profile');
            
            try {
                $qtOfFinishedOrders = $profile->get('finishedorders');
                if($qtOfFinishedOrders){
                    $qtOfFinishedOrders = (int) $qtOfFinishedOrders;
                    
                    // $modx->log(1, $qtOfFinishedOrders);
                    
                    if($qtOfFinishedOrders >= 5){
                        
                        $isRegularCustomer = $msOrder->get('regular_customer');
                        
                        if(!$isRegularCustomer){
                            $isRegularCustomerField = 1;
                        }
                    }                    
                }
                    
            }
            catch(Exception $e) {
                $modx->log(1, $e->getMessage());
            }
            
            $defval = 'test1';
            $defval2 = 'test2';
            
            
            
            $updateOrderFromArray = array(
               'defval' => $defval,
               'defval2' => $defval2
            );
            
            if($isRegularCustomerField){
                array_push($updateOrderFromArray, 'regular_customer', 1);
            }

            $msOrder->fromArray($updateOrderFromArray);
            $msOrder->save();            
            
        }
        break;
}
Vladimir
15 января 2023, 17:55
0
Ни у кого нет идей, как такое может быть?
Vladimir
14 января 2023, 18:21
0
когда я ставлю $order, то я не могу получить те данные которые нужны, а когда $msOrder то получаю что нужно, и плюс я веlь мои поля повесил на msOrder
Vladimir
14 января 2023, 16:17
0
А какой такой тип опечатки может такое сделать? в консоли всё работает да же если добавлять текст, ошибки не возникают. Всё что я хотел добавить в свои поля они есть и работает в плагине, я всё проверял.

<?php
switch ($modx->event->name) {

    case 'msOnCreateOrder':
        
        $userId = $order->get('user_id');
        $user = $modx->getObject('modUser', array('id' => $userId));
        if (is_object($msOrder) && is_object($user)) {
            $profile = $user->getOne('Profile');
            
            try {
                $qtOfFinishedOrders = $profile->get('finishedorders');
                if($qtOfFinishedOrders){
                    $qtOfFinishedOrders = (int) $qtOfFinishedOrders;
                    
                    
                    if($qtOfFinishedOrders >= 5){
                        
                        $isRegularCustomer = $msOrder->get('regular_customer');
                        
                        if(!$isRegularCustomer){
                            $msOrder->set('regular_customer', 1);
                        }
                    }                    
                }
                    
            }
            catch(Exception $e) {
                $modx->log(1, $e->getMessage());
            }
            
            $dfaultData = 'random';
            $dfaultData1 = 'random1';
            
            $msOrder->set('def_data', $dfaultData);
            $msOrder->set('def_data1', $dfaultData1);
            $msOrder->save();            
            
        }
        break;
}
Vladimir
13 января 2023, 11:31
0
Я даже уже расширил класс, и добавил просто даже текстом
$msOrder->set('test', 'test1');
        $msOrder->set('test3', 'test2');
у меня всё равно данные записываются только в последнее поле установленное в коде
Vladimir
13 января 2023, 10:10
0
Как мне сохранить данные в оба поля? они все сделаны для msOrder, плагин на событие «msOnCreateOrder», я делаю что-то не так? потому что в консоли всё работает, сохраняет отлично, и эти же данные есть в плагине, я проверял
Vladimir
13 января 2023, 08:59
0
А до этого вообще в самое последнее поле не добавлялись данные, было 2 поля, но сохранялось всё в предпоследний. Лишь после того как я его сделал видимым для админки, то есть в самом заказе он теперь тоже виден, потом стал заполнятся лишь он последний
Vladimir
12 января 2023, 14:31
0
1) Чтобы обновить статус заказа на оплачен, либо поставить статус что ошибка оплаты и так далее. Почему именно так, потому что в ответе от банка, в пост запросе я получу только номер счёта на оплату, а так же эти данные приходят не сразу, а если будет хэш заказа, то уже будет сложнее подобрать, плюс у меня нет никакой проверки что этот запрос был от банка, у меня от банка просто приходит номер счёта на оплату из важных.

2) Всё что было решил, просто по моему решение мне нужно была помощь чтобы он выполнялся в фоне.

3) Переделаю как вы посоветовали, будет так же как в робокасе и пейпале, только из проверки будет только на ориджин. И само собой будут проверки на стороне сайта, то есть сначала спрошу заново о статусе, лишь потом буду что-то менять в заказе.
Vladimir
12 января 2023, 14:14
0
Тоже самое почти что и пейпал. Со мной расходства есть, я в методе сенд получаю ответ авторизации, и потом отправляю его на фронт (ПОТОМУ ЧТО без этого никак, без их js библиотеки это попросту не работает, писал в тех поддержку спрашивал(да такое бывает, мне самому плохо и меня откачивали).
Затем идёт редирект с фронта на оплату, и потом я сделал редирект после успешной оплаты, идёт редирект, в редиректе есть обычные гет запросы, с номером заказа, хэш заказа, а так же номер счёта на оплату, и потом точно так же как в робокасе и пейпале, я всё отправляю в метод оплаты, и внутри на сайте, потом сверяю все предоставленные данные, и только потом я отправляю отдельный запрос в банк чтобы он дал мне статус оплаты по данному счёту на оплату, и там же внутри самого сайта я меняю статус в зависимости от ответа от банка.

У меня от банка приходит лишь номер счёта на оплату, и всё, нет ни подписи, не номера заказа, не хэш этого заказа, по этому я сделал через редирект, сейчас сделаю как вы посоветовали.