Вопросы

[РЕШЕНО] Вопрос для академиков

Сразу оговорюсь, никакого сарказма, на мой взгляд задача действительно должна быть известна тем кто получил академическое образование по специальности программирование. Собственно задача.
Дан массив
[246 => 1, 267 =>2, 296 => 3, 308 => 4, 309 => 5]
Его ключи это id ресурсов, а значения отвечают за их сортировку, пусть будет menuidex. Нужно, чтобы при изменении значения например с ключом 308 с 4 на 2 получился массив
[246 => 1, 267 => 3, 296 => 4, 308 => 2, 309 => 5].
Я написал такое рашение
<?php
switch ($modx->event->name) {
    case 'OnDocFormSave':
        $resource->set('publishedon', time());
        $resource->save();
        if($resource->get('class_key') == 'Ticket'){
            $curPosition = $resource->getTVValue('position');
            $positions = [];
            if($resource->get('parent') == 73){
                $resources = $modx->getIterator('modResource', array('class_key' => 'Ticket', 'id:!=' => $id, 'parent' => 73));
            }
            else{
                $resources = $modx->getIterator('modResource', array('class_key' => 'Ticket', 'id:!=' => $id, 'parent:!=' => 73));
            }
            foreach($resources as $res){
                $pos = $res->getTVValue('position');
                if($pos){
                    $positions[$res->get('id')] = $pos;
                }
            }
            
            if(in_array($curPosition,$positions)){
                asort($positions);
                foreach($positions as $id => $pos){
                    if($pos >= $curPosition){
                        $modx->log(1, print_r($curPosition,1));
                        $modx->log(1, print_r($pos,1));
                        $res = $modx->getObject('modResource', $id);
                        $res->setTVValue('position', $pos + 1);
                        $res->save();
                        $curPosition = $pos + 1;
                    }
                }
            }
            //$modx->log(1, print_r($positions,1));
        }
    break;
}
Но кажется мне, что в нём что-то не так, но вот что именно не могу понять.
Артур Шевченко
28 января 2021, 09:42
modx.pro
972
+1

Как правильно использовать runSnippet в modx api?

Сильно не пинайте.

На сайте есть форма, при отправке Ajax отправляет на php данные на проверку. Пытаюсь вызвать сниппет phpthumbof

php

<?php
// Подключаем modx api
define('MODX_API_MODE', true);
require $_SERVER['DOCUMENT_ROOT'].'/index.php';

....

$options = "w=100&h=100&zc=1&far=C&q=95";
$image = $_SERVER["REQUEST_SCHEME"] . '://' . $_SERVER["SERVER_NAME"].'/user_upload/'.$fileName; // тут все правильно
$userImage = $modx->runSnippet('phpthumbof', array('input' => $image, 'options' => $options)); // комментируя эту строку никаких ошибок не появляется

echo json_encode(['error' => '<img src="'.$userImage.'" alt="">'], JSON_UNESCAPED_UNICODE);
exit;
....
При сабмите появляется ошибка

{"readyState":4,"responseText":"","status":500,"statusText":"error"}
blackseabreathe
27 января 2021, 16:17
modx.pro
2 369
0

Валидация поля в форме

Пытаюсь прописать валидацию поля на то, чтобы значение поля содержит только буквы. Прописываю в виде:
pagetitle:required:maxLength=^15^:alpha
maxLength отрабатывает, а alpha нет. Поле с цифрами проходит и никакой ошибки в span error не показывает.
alpha это же стандартный валидатор из коробки. Почему он не работает?
Антон
27 января 2021, 12:44
modx.pro
1 229
0

MixedImage и FastUploadTV пути к изображениям

В дополнениях mixedImage и FastUploadTV есть возможность указать сниппет, который возвращает строку пути для продвинутой маршрутизации с помощью префикса @SNIPPET.

Пример:
Путь сохранения: @SNIPPET test

Я написал сниппет, но не могу понять как предать сниппету ID ресурса и ID доп. поля (tv).
Подскажите знающие люди.
Алексей
27 января 2021, 08:02
modx.pro
905
0

Как сделать редирект после чистки корзины в minishop2?

Приветствую господа. Подскажите, как можно сделать редирект на главную страницу после нажатия на кнопку «чистка корзины»?
Гуглил способы, единственное что нашел:
//данный способ мне не подходит (это условие "если корзина пуста")
{if !count($products)}
        <script>
        	document.location.href="/index.html";
        </script>
{else}
Но этот способ мне не подходит! Пробовал скриптом через button onlick — безрезультатно. Есть варианты?))
Дмитрий
27 января 2021, 01:26
modx.pro
1
1 398
0

minishop2 - Оплатить повторно или сменить вид оплаты после неуспешной попытки

Был уверен, что тут уже такие запросы были, но просмотрел до 18 года — нашел схожие, но не такие же.
Если даем клиенту возможность оплатить заказ каким-нибудь методом онлайн-оплаты (у меня подключен родной модуль для Сбербанка, разработанный ими же), то клиент после страницы оформления заказа и выбранного соответствующего метода направляется на страницу эквайринга Сбербанка. Регулярно вижу кейс, то там люди:
  1. не могут оплатить, т.к. под рукой нет карты, Сбербанка онлайн и так далее
  2. не могут оплатить, т.к. что-то пошло не так (номер не тот ввел, денег нет на карте, еще что-то)
  3. передумывают платить онлайн, решают, что выберут другой вариант оплаты
Собственно, человек возвращается, корзина пустая, есть только страница с информацией о заказе.
Viacheslav
26 января 2021, 17:02
modx.pro
733
0

msearch подвисает поиск что можно сделать?

msearch2 подвисает поиск на запросах с большим количеством вариантов что можно сделать?
подвисает и на автокомплите и с результатами поиска (белая страница)

большое количество это например слово деталь — 50к+ вариантов
както может можно ограничить это дело чтобы он не маялся так? даже сотни вариантов по любой выборке было бы достаточно
Евгений
26 января 2021, 14:31
modx.pro
744
0

pdoResources вывод из множественного списка

Ребят, все привет. Есть TV поле с множественным выбором. В нем идёт в таком стиле Красный==1||Белый==2 и т.д., к одному посту может присваиваться 1-3 таких пункта. Как сделать вывод в pdoResources? Допустим перебрать все посты и где будет Белый вывести, но также он может ещё иметь 3 таких и значение поля будет 1,2,3, а не просто 2. Как такое реализовать? Подскажите пожалуйста
Владислав
25 января 2021, 21:28
modx.pro
1
882
0

Minishop2 не отправляет письма о заказах (smtp QuickEmail при этом работает)

При оформлении заказа не приходят письма на указанный ящик. Ящик вида name@domain.ru. Т.е почта домена корпоративная от Яндекса.
Потом настроил отправку через SMTP и все равно та же проблема. Причем при использовании QuickEmail — почта отправляется и все ок. Что не так с Minioshop2 в этом плане?

Подскажите пожалуйста если кто сталкивался с этой проблемой, каждый раз какой-то ужас с получением уведомлений на почту от Minishop2?
Роман
25 января 2021, 17:01
modx.pro
1 927
0

msOptionsPrice нет вывода

Не могу вывести все модификации. Пробовал вывод как в документации
[[!msOptionsPrice.initialize?]]
[[!msOptionsPrice.modification?]]
массивы пустые.
Подскажите как можно вывести все модификации товара
Dima
25 января 2021, 14:42
modx.pro
976
0