Всего 125 976 комментариев

Harmattan
31 января 2022, 17:48
0
А ещё надоесть: как выполнить проверку на вложенность? То есть, данная функция должна быть доступна только для определённого ресурса (родителя). Чувствую, что надо использовать
$parentObj = $object->get('parent');
Но как осуществить проверку? К примеру, pagetitle должен подставляться только для потомков родителя с id=8.
Антон Тарасов
31 января 2022, 16:45
0
Прошу прощения, если инструкция была не совсем точна. Будет дополнена.
Harmattan
31 января 2022, 15:37
0
UPD. Прошу прощения — работает. Только почему-то только через Render — OnDocFormPrerender не хочет!
<?php
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnDocFormRender':
        if($mode == 'new'){
            if($count = $modx->getCount('modResource',['parent'=>$resource->parent])){
                $count = $count +1;
            }
            $resource->set('pagetitle',"Page $count");
        }
        break;
}
Спасибо большое.
Harmattan
31 января 2022, 15:25
0
Спасибо. В коллекциях не работает, а в папках считает.
Пробовал не через скрипт (подстановка в #modx-resource-pagetitle"), а через
$resource->set('pagetitle',$count);
Смысл тот же (подстановка в pagetitle), но не работает.
Александр Туниеков
31 января 2022, 14:27
+1
Можно попробовать плагин на ondocformprerender. https://docs.modx.com/current/en/extending-modx/plugins/system-events/ondocformprerender
<?php
$eventName = $modx->event->name;
switch($eventName) {
    case 'OnDocFormPrerender':
        if($mode == 'new'){
            if($count = $modx->getCount("modResource',['parent'=>$resource->parent])){
                $count = $count +1;
            }
            $modx->regClientStartupHTMLBlock('
            <script type="text/javascript">
        		Ext.onReady(function() {
                    var pagetitle = Ext.select("#modx-resource-pagetitle");
                    pagetitle.setValue("Page '.$count.');
        		});
        	</script>');
        }
        break;
}
Не тестировал. Но вруг сработает. Главное чтоб $resource->parent был определен.
Aleksandr Huz
31 января 2022, 13:55
0
Попробуйте переустановить компонент. И лучше писать в тех. поддержку мне.
Кефирка
31 января 2022, 13:46
0
Не смогла установить.

Консоль запущена...
Пробуем установить пакет с подписью: flashshop-1.0.3-pl
Пакет найден... сейчас идёт подготовка к его установке.
Загрузка рабочего пространства пакета...
Рабочее пространство загружено, сейчас устанавливаем пакет...
Installing files from /home/m/megasan72/megasantehnika.rf/core/packages/flashshop-1.0.3-pl/xPDOFileVehicle/1c06218a52d52af001ba2646b96c0528/ to /home/m/megasan72/megasantehnika.rf/core/components/flashshop/model/encryptedvehicle.class.php
modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
Package decrypted!
Attempting to preserve files at /home/m/megasan72/megasantehnika.rf/core/components/flashshop into archive /home/m/megasan72/megasantehnika.rf/core/packages/flashshop-1.0.3-pl/modCategory/88670c5565e0bdca66693afca1772a62.0.preserved.zip
Attempting to preserve files at /home/m/megasan72/megasantehnika.rf/public_html/assets/images into archive /home/m/megasan72/megasantehnika.rf/core/packages/flashshop-1.0.3-pl/modCategory/88670c5565e0bdca66693afca1772a62.3.preserved.zip
Trying to install FormIt. Please wait...
Could not download package FormIt.
Trying to install TinyMCE Rich Text Editor. Please wait...
Could not download package TinyMCE Rich Text Editor.
Trying to install translit. Please wait...
Could not download package translit.
Trying to install SweetAlert2. Please wait...
Загрузка рабочего пространства пакета...
Рабочее пространство загружено, сейчас устанавливаем пакет...
SweetAlert2 was successfully installed
Trying to install Ace. Please wait...
Загрузка рабочего пространства пакета...
Рабочее пространство загружено, сейчас устанавливаем пакет...
Attempting to set which_element_editor setting to Ace.
Ace was successfully installed
Trying to install AjaxForm. Please wait...
Загрузка рабочего пространства пакета...
Рабочее пространство загружено, сейчас устанавливаем пакет...
AjaxForm was successfully installed
Trying to install MinifyX. Please wait...
Загрузка рабочего пространства пакета...
Рабочее пространство загружено, сейчас устанавливаем пакет...
MinifyX was successfully installed
Trying to install ClientConfig. Please wait...
Could not download package ClientConfig.
Resolve migx
Resolve tvs
Resolve tvsContent
Removing changelog.txt
Path specified for package clientconfig is not a valid or accessible directory: /home/m/megasan72/megasantehnika.rf/core/components/clientconfig/model/
Could not load class: cgGroup from mysql.cggroup.
cgGroup::load() is not a valid static method.
Could not load class: cgGroup from mysql.cggroup.
И на этом все зависло
Дмитрий
31 января 2022, 11:53
0
спасибо за помощь, буду пробовать
Андрей
31 января 2022, 11:39
0
Да, модификатор default ставит пустой action, если не заполнен параметр, потому лучше указывать название формы.
Дмитрий
31 января 2022, 11:31
0
а в самой форме [[!rcv3_html? &action=`[[+rcv3Action:default=``]]` &error=`[[+fi.error.g-recaptcha-response]]`]] так и оставить?
Андрей
31 января 2022, 10:53
0
Если форм на странице несколько, нужно указать параметр:
&rcv3Action=`contactform` //разный для каждой из форм

Вот это в валидации не нужно
g-recaptcha-response:required

Проверить работает ли рекапча вообще, нет ли ошибок в консоли. Так же можно использовать метод из комментария — RecaptchaV3 пропускает спам, весьма успешно работает.
Vladimir
30 января 2022, 10:52
0
Да тот метод выше подойдёт, но это потом, в текущем варианте без удаления будет лучше, так как человек может по ошибке выбрал город, уведомление выводится, он увидит, изменит город и всё в порядке не нужно заново добавлять товар и тд
Николай Савин
30 января 2022, 10:49
+1
Я на всякий случай уточню. Вообще, то есть метод
$ms->cart->remove($key);
Но в вашем конкретном случае мне показалось, что больше подойдет приведенный выше код.
Потому что все равно корзину перебирать и проверять наличие товара.
Николай Савин
30 января 2022, 10:45
+1
Пожалуйста. Пользоваться поиском довольно полезно.
Николай Савин
30 января 2022, 10:45
+1
Товары находятся не в заказе, а в корзине.
Корзина это массив данных. Получить его можно через метод
$ms2->cart->get();
Далее просто удалите ненужный элемент массива и обновите корзину через
$ms->cart->set();
Николай Савин
30 января 2022, 10:43
+1
Ну в целом выполнение задачи не меняется. Подберите событие, которое срабатывает перед созданием заказа, напишите плагин, реагирующий на такое событие.
Vladimir
30 января 2022, 10:40
0
Спасибо за ссылку, там нашёл код вывода, $modx->event->output('Вы пытаетесь положитель больше товаров чем есть в наличии'); а так же это отменяет создание заказа, и выводит то что нужно, спасибо большое