Alexey T

Alexey T

С нами с 06 апреля 2014; Место в рейтинге пользователей: #130
Alexey T
21 июля 2021, 14:00
+2
Эта таблица заполняется минишопом, если у заказа статус Оплачено. Когда этот статус присваивается заказу, пользователь добавляется в эту таблицу, ему создается реферальный код, записывается значение потраченных денег. Компонент msProfile позволяет развернуть реферальную программу и накопление бонусных баллов, бонусные балы также могут использоваться как лицевой счет и тд. Не уверен, но вроде еще и компонент msDiscount использует эту таблицу.
Alexey T
21 июля 2021, 12:51
0
modstore.pro/packages/users/msprofile

Этот компонент работает с этой таблицей
Alexey T
09 апреля 2021, 12:55
0
Товарищи, поделитесь мнением, а насколько актуально сегодня использование xpdo (в плане быстродействия, удобства, количества специалистов), есть ли смысл переделывать админку и оставлять его.
Alexey T
06 ноября 2019, 09:57
1
0
Вариант 1 — через базу данных поменять class_key.
Вариант 2 — установить компонент Console и в нем выполнить код:
<?php

$tickets_section = 23; // Подставить id нужного раздела с тикетами
$tickets_ids = $modx->getChildIds($tickets_section, 5, array('context' => 'web'));

foreach ($tickets_ids as $id) {
    if ($ticket = $modx->getObject('modResource', array('id' => $id, 'class_key' => 'Ticket'))) {
        $ticket->set('class_key', 'modDocument'); // Если у дочерних ресурсов Collections другой class_key, то заменить на нужный
        $ticket->save();
    }
}

if ($tickets_section = $modx->getObject('modResource', array('id' => $id, 'class_key' => 'TicketsSection'))) {
    $tickets_section->set('class_key', 'CollectionContainer'); 
    $tickets_section->save();
}
В любом случае к этому превращению нужно подойти обдумано, так как у этих ресурсов могут быть свои комментарии и другие связи
Alexey T
26 сентября 2019, 10:19
+2
Windows придумывался не для серверов, в отличие от Unix (Gnu/Linux). Там нет огромного количества нужных вещей, начиная хотя-бы с bash и пакетных менеджеров, и заканчивая правами доступа
Windows, конечно, это — боль, но в десятке есть возможность ее смягчить при помощи WSL, ставишь wsl ubuntu или другую систему, накатываешь в нее все, что нужно от php до node.js, причем можно сделать в конфигурации аналогичной продакшену и работаешь. В директории проекта, в строке проводника пишешь wsl и открывается bash.
А в настройках терминала PhpStorm вместо командной строки виндоус можно прописать: C:\Windows\System32\wsl.exe и будет совсем неплохо.
Alexey T
17 сентября 2019, 21:27
0
В-последних, я в вашу групповушку не претендую, я ваш вариант решения понять хочу. Хотя бы может ссылку на гитхаб разместили
Во-первых и вторых — это не готовое API, и не и инструкция по его созданию, а базовые классы, которые можно расширять, кому как нужно, и да — это далеко не самое удобное решение.
В-третьих, сам Джейсон, я более чем уверен, имел в виду, что когда ему нужно создать API-based решение использует Slim (а Джейсон, правда сапожник?)
В-четвертых — В-пятых, третья версия планировалась на Slim 3, да, планировалась (в 2015), но не как надстройка над MODX 2, правильно? Я так понимаю в далеком 2015 сапожник Джейсон мечтал о PSR-7 и думал о Slim 3 и XPDO 3. Но тяга к обратной совместимости и прочие факторы дают о себе знать
Alexey T
17 сентября 2019, 18:56
0
Я прочитал заметку, но не понял в чем суть… Получается мы берем MODX и к нему прикручиваем Slim 4 + доп. решения. Зачем? А чтобы получить API MODX (которое, в принципе уже и так есть) и прикрутить к нему собственную админку на чем хочешь… это выглядит как-будто из Оки сделать Лэнд Крузер
Alexey T
06 августа 2019, 17:16
0
То есть речь идет о связке rest api на Slim3 (либо MODX, Laravel и т.п.) и NuxtJS в ssr-режиме (для динамических сайтов) через axios или еще как?
Alexey T
18 апреля 2019, 14:22
3
+2
Или так:
'friendly_alias_restrict_chars' => 'pattern',
'friendly_alias_restrict_chars_pattern' => '/[\0\x0B\t\n\r\f\a&=+°%#«»…<>—№!",.()\/\~:`@\?\[\]\{\}\|\^\'\\\\]/',
Alexey T
01 октября 2018, 13:19
0
Если делать сайт как компонент, можно в резолвере setup.php вызывать создание набора параметров, в данном случае набор называется Bootstrap4
if ($snippet = $modx->getObject('modSnippet', array('name' => 'pdoPage'))) {
        if (!$prop_bootsrap4 = $modx->getObject('modPropertySet', array('name' => 'Bootstrap4'))) {
            // Подставляем массив свойств для набора Bootstrap4
            $prop_bootsrap4 = $modx->newObject('modPropertySet', array(
                'name' => 'Bootstrap4',
                'description' => 'Pagination Property Set for Bootstrap 4',
                'properties' => array(
                    'tplPage' => array(
                        'name' => 'tplPage',
                        'desc' => 'pdotools_prop_tplPage',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item"><a class="page-link" href="[[+href]]">[[+pageNo]]</a></li>',
                    ),
                    'tplPageWrapper' => array(
                        'name' => 'tplPageWrapper',
                        'desc' => 'pdotools_tplPageWrapper',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <ul class="pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul>',
                    ),
                    'tplPageActive' => array(
                        'name' => 'tplPageActive',
                        'desc' => 'pdotools_tplPageActive',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item active"><a class="page-link" href="[[+href]]">[[+pageNo]]</a></li>',
                    ),
                    'tplPageFirst' => array(
                        'name' => 'tplPageFirst',
                        'desc' => 'pdotools_tplPageFirst',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item"><a class="page-link" href="[[+href]]">[[%pdopage_first]]</a></li>',
                    ),
                    'tplPageLast' => array(
                        'name' => 'tplPageLast',
                        'desc' => 'pdotools_tplPageLast',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item"><a class="page-link" href="[[+href]]">[[%pdopage_last]]</a></li>',
                    ),
                    'tplPagePrev' => array(
                        'name' => 'tplPagePrev',
                        'desc' => 'pdotools_tplPagePrev',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item"><a class="page-link" href="[[+href]]">&laquo;</a></li>',
                    ),
                    'tplPageNext' => array(
                        'name' => 'tplPageNext',
                        'desc' => 'pdotools_tplPageNext',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item"><a class="page-link" href="[[+href]]">&raquo;</a></li>',
                    ),
                    'tplPageSkip' => array(
                        'name' => 'tplPageSkip',
                        'desc' => 'pdotools_tplPageSkip',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item disabled"><span class="page-link">...</span></li>',
                    ),
                    'tplPageFirstEmpty' => array(
                        'name' => 'tplPageFirstEmpty',
                        'desc' => 'pdotools_tplPageFirstEmpty',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item disabled"><span class="page-link">[[%pdopage_first]]</span></li>',
                    ),
                    'tplPageLastEmpty' => array(
                        'name' => 'tplPageLastEmpty',
                        'desc' => 'pdotools_tplPageLastEmpty',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item disabled"><span class="page-link">[[%pdopage_last]]</span></li>',
                    ),
                    'tplPagePrevEmpty' => array(
                        'name' => 'tplPagePrevEmpty',
                        'desc' => 'pdotools_tplPagePrevEmpty',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item disabled"><span class="page-link" aria-hidden="true">&laquo;</span></li>',
                    ),
                    'tplPageNextEmpty' => array(
                        'name' => 'tplPageNextEmpty',
                        'desc' => 'pdotools_tplPageNextEmpty',
                        'options' => array(),
                        'lexicon' => 'pdotools:properties',
                        'area' => '',
                        'type' => 'textfield',
                        'value' => '@INLINE <li class="page-item disabled"><span class="page-link" aria-hidden="true">&raquo;</span></li>',
                    ),
                ),
            ));
            // Запись набора свойств и пишем в лог установки
            if ($prop_bootsrap4->save() && $snippet->addPropertySet($prop_bootsrap4)) {
                $modx->log(xPDO::LOG_LEVEL_INFO,
                    'Property set "pdoPage" for snippet <b>pdoPage</b> was created');
            } else {
                $modx->log(xPDO::LOG_LEVEL_ERROR,
                    'Could not create property set "Bootstrap4" for <b>pdoPage</b>');
            }
        }
    }
Alexey T
26 июля 2018, 10:21
0
Спасибо за помощь.
Но проблема оказалась в ошибке конфига сайта, в переменной dbase стояло значение site, а в database_dsn было site_ru. С этой ошибкой работал сайт, но не работало обновление. А в ручном режиме я упорно вводил имя базы — site.
Alexey T
03 апреля 2018, 08:38
0
Надо добавить where
{'!msProducts'|snippet:[
    'limit' => 3,
    'parents' => 3,
    'sortby' => 'publishedon',
    'sortdir' => 'ASC',
    'leftJoin' => '{"small":{"class":"msProductFile","alias":"small", "on": "small.product_id = msProduct.id AND small.path LIKE \'%/small/\'"}}',
    'select' => '{"small":"GROUP_CONCAT(small.url ORDER BY small.rank SEPARATOR \';\') as images"}',
    'showLog' => 1,
    'where' => '{ "small.description": "my_color" }',
]}
Alexey T
29 марта 2018, 16:43
+1
То в какой группе пользователь расскажет таблица p_member_groups (member — id пользователя, user_group — id группы
Alexey T
18 декабря 2017, 12:07
0
Не заметил никаких проблем с обновлением pdoTools. У вас, видимо, установлено дополнение modHelpers, может дело в нем? Попробуйте
{if $_modx->user.id > 0}блок кода 1
{else}блок кода 2
{/if}
Alexey T
16 декабря 2017, 12:37
0
Здравствуйте. Если задача еще актуальна — пишите в личку