Дмитрий

Дмитрий

С нами с 10 февраля 2023; Место в рейтинге пользователей: #44
Дмитрий
22 марта 2025, 22:21
0
Зачем проверять допустимое количество файлов в цикле оно же не меняется?
Ты прав, эту проверку можно вынести из цикла)
Дмитрий
22 марта 2025, 21:52
0
Артур, я в заголовке и написал — что это простая зона) Они ничего никуда не загружает) по сути это просто визуальная дроп-зона. При перезагрузке страницы всё очищается)
Дмитрий
22 марта 2025, 21:25
0
Это само собой)) Я работал с тем что есть, и мне не хотелось все формы переписывать по новой, поэтому сделал так)
Дмитрий
10 февраля 2025, 21:41
0
создаёте файл, создаете статический чанк и указываете путь до файла в нём. Но сам чанк в админке создать всё равно придётся, это да. Как и сами блоки. C migx тоже всё через админку: собрать конфу, создать TV поле. Никак не обойтись без админки так или иначе.

Ну а в целом на вкус и цвет, наверно чтобы понять, «в чем его преимущество» — нужно поставить и попользоваться, чтобы сделать для себя какие-то выводы.
Дмитрий
10 февраля 2025, 18:25
+1
Отличный компонент, иногда кажется громоздким, но его возможности и гибкость при правильном подходе позволяют получать очень хорошие результаты. Нужно немного разобраться, а дальше любая сложность и структура страницы набирается довольно просто и быстро. Очень широкий функционал и набор типов полей, таблицы. Для сложных сайтов необходимая вещь.
Дмитрий
30 января 2025, 22:32
0
Красный==red||Серый==gray||Белый==white||Черный==black
В конце строки проверьте, нет ли у вас переноса на новую строку. типа \n
Дмитрий
08 ноября 2024, 23:04
0
попробуйте убрать autoplay здесь:
allow="clipboard-write; autoplay"
Дмитрий
07 ноября 2024, 20:33
0
Интересно сколько весит фрейм с видео? Метра 3? Допустим у вас 10 видео,
Само видео не грузится, пока вы не нажмете кнопку Play. Если вы для всех видео включите autoplay, тогда да… А вставлять фрейм при нажатии — ну такое… Зачем? Сам по себе фрейм загружается быстро.

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

а не всем видео одинаковую делать)
так и не делайте одинаковую, меняйте изображение хоть для каждого видео на странице, а хотите — уберите вообще — и вы получите стандартную заглушку с rutube.

И по поводу sticky. В CSS вы код показываете, а в JS нет.
так у нас целиком блок прилипает, отрываясь от основного контента, ничего не меняется, поэтому js будет работать и там и там.

А еще интересно будет ли это работать в IOS в safari.
Тут могут быть проблемы. Лично я тестировал на iPhone 13 — всё работало. Версию ios не помню, но не последняя. При этом на другом iphone (11 или 12) с версией ios ниже — уже не работало.

Здесь уже частные случаи, нужно смотреть индивидуально по задаче, можно для ios вставлять просто блок с mp4 и отображать его, если у нас safari. Что-то в общем, можно придумать, при желании)
Дмитрий
06 сентября 2024, 12:27
0
Спасибо, Александр. В целом, удаление 1-й версии перед установкой 2-й помогает, но теряются все заполненные поля соответственно.
Дмитрий
03 сентября 2024, 15:07
0
начиная со 2й версии на modx 2.8.7 компонент валит админку в 500…

2024/09/03 14:28:11 [error] 1762146#1762146: *32171 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined method ExtraFields::getTableFields() in /var/www/site_user/data/www/site.ru/core/cache/includes/elements/modplugin/53.include.cache.php:44
Stack trace:
#0 /var/www/site_user/data/www/site.ru/core/model/modx/modscript.class.php(76): include()
#1 /var/www/site_user/data/www/site.ru/core/model/modx/modx.class.php(1674): modScript->process(NULL)
#2 /var/www/site_user/data/www/site.ru/core/model/modx/modx.class.php(570): modX->invokeEvent('OnMODXInit', Array)
#3 /var/www/site_user/data/www/site.ru/manager/index.php(53): modX->initialize('mgr')
#4 {main}
  thrown in /var/www/site_user/data/www/site.ru/core/cache/includes/elements/modplugin/53.include.cache.php on line 44" while reading response header from upstream, client: 10.10.10.10, server: site.ru, request: "GET /manager/?a=workspaces HTTP/2.0", upstream: "fastcgi://unix:/var/run/site.ru.sock:", host: "site.ru", referrer: "https://site.ru/manager/?"

53-й плагин — это плагин ExtraFields
Дмитрий
07 августа 2024, 21:24
0
31 июля 2024 разработчики обновили панель, после чего у меня перестал работать сайт. Пришлось поправить конфиг. Актуальный конфиг теперь такой:

server {
    listen 10.10.10.10:80;
    server_name my-site.ru www.my-site.ru;
    return 301 https://my-site.ru$request_uri;
}

server {
    listen 10.10.10.10:443 ssl http2;
    server_name my-site.ru www.my-site.ru;

    # Изменить имя сертификата, если создан другой сертификат (нужно выпустить wildcard, для корректной работы переадресации с www)
    ssl_certificate     /var/www/httpd-cert/my-site.ru_2023-06-27-00-03_12.crt;
    ssl_certificate_key /var/www/httpd-cert/my-site.ru_2023-06-27-00-03_12.key;

    charset utf-8;

    gzip on;
    gzip_min_length 1000;
    gzip_proxied any;
    gzip_types gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    gzip_comp_level 5;

    set $root_path /var/www/my_site_user/data/www/my-site.ru;
    root $root_path;
    index index.php;
    disable_symlinks if_not_owner from=$root_path;
    
    location / {
    	root $root_path;
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?q=$1 last;
        }
    }

    # Редирект с www на адрес без www
    if ($host ~* '^www\.(.*)$') {
        return 301 $scheme://$1$request_uri;
    }

    # Редирект с index.php на корень сайта:
    if ($request_uri ~* '^/index.php$') {
        return 301 /;
    }

    # Убираем повторяющиеся слеши из адреса
    # Вариант, работающий только при merge_slashes = on
    if ($request_uri ~ ^[^?]*//) {
        rewrite ^ $uri permanent;
    }
    # Универсальный вариант
    #if ($request_uri ~ ^(?P<left>[^?]*?)//+(?P<right>[^?]*)) {
    #    rewrite ^ $left/$right permanent;
    #}

    # Удаление слеша в конце URL
    # Если изменили адрес админки MODX, то нужно указать его в условии этого правила, иначе будет бесконечный редирект.
    #if ($request_uri ~ ".*/$") {
    #    rewrite ^/((?!core|connectors|manager|setup).*)/$ /$1 permanent;
    #}

    # Добавление слеша в конце URL
    #if ($request_uri !~* "(?:\?)|(?:\.\w+$)|(?:\/$)") {
    #    return 301 $request_uri/;
    #}

    # Запрет для всех для при обращении к ядру MODx из браузера
	location ~ ^/core/.* {
	  deny all;
	  return 403;
	}
    
    location ~ ^/config.core.php {
	  return 404;
	}

	location @rewrite {
	  rewrite ^/(.*)$ /index.php?q=$1;
	}

    location ~ \.php$ {
        # Базовая авторизация в служебные каталоги
        location ~* ^/(manager|connectors)/ {
            auth_basic "Restricted Access";
            auth_basic_user_file /var/www/my_site_user/data/.htpasswd;
            try_files $uri $uri/ @rewrite;
            location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/my-site.ru.sock;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                fastcgi_param DOCUMENT_ROOT $realpath_root;
            }
        }
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/my-site.ru.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf|ico|7z|doc|docx|map|ogg|otf|pdf|ttf|tif|txt|wav|webp|woff|woff2|xls|xlsx|xml)$ {
        try_files $uri @rewrite;
        access_log off;
	    expires 30d;
	    break;
    }

    location @fallback {
        fastcgi_pass unix:/var/run/my-site.ru.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

	location ~ /\.ht {
	  deny all;
	}
    
    include "/etc/nginx/fastpanel2-sites/my_site_user/my-site.ru.includes";
    include /etc/nginx/fastpanel2-includes/*.conf;

    error_log /var/www/my_site_user/data/logs/my-site.ru-frontend.error.log;
    access_log /var/www/my_site_user/data/logs/my-site.ru-frontend.access.log;
}
Дмитрий
30 июля 2024, 13:22
0
Можно немного усложнить задачу для спамеров на стандартном синтаксисе. Т.к. случайная строка генерируется и не меняется при обновлении страницы. Решить этот вопрос можно через плейсхолдер. Я делал форму на FetchIt, поэтому приведу код на нём:

[[!randString:toPlaceholder=`randString`]]
[[!FetchIt?
    &snippet=`FormIt`
    &submitVar=`popup`
    &form=`popup.form.tpl`
    &emailTpl=`emailForm.tpl`
    &hooks=`FormItSaveForm,email,sendTelegram`
    &emailSubject=`Заявка на обратный звонок`
    &emailTo=`[[++email_to]]`
    &emailFrom=`test@test.ru`
    &randString=`[[!+randString]]`
    &validate=`antispam:contains=^[[!+randString]]^,name:required,phone:required,popup_request_conditions:required`
    &validationErrorMessage=`Необходимо заполнить все поля формы!`
    &successMessage=`Спасибо! Ваша заявка отправлена!`
    &errTpl=`Необходимо согласиться с обработкой персональных данных`
]]

В чанке popup.form.tpl необходимо добавить в форму скрытое поле:

<input type="hidden" name="antispam" style="display:none" data-antispam="[[!+randString]]">

ну и также прикрутил js отсюда modx.pro/howto/23926#comment-139070
Дмитрий
08 мая 2024, 19:59
0
Все настройки взяты с рабочего проекта, может быть, что-то было неправильно сделано…
Дмитрий
17 марта 2024, 14:39
0
У меня такого параметра в /assets/components/msearch2/js/web/default.js нет, где вы его нашли?
Дмитрий
15 марта 2024, 01:32
+1
Это, конечно, очевидно. Статья рассчитана на тех, кто не пользуется указанными фреймворками.
Дмитрий
22 февраля 2024, 15:07
0
Спасибо, интересная заметка.

В общем я сделал так:
$_GET = array_diff_assoc($_REQUEST, $_COOKIE);
Единственное, в url в пагинации остается параметр limit=

*?page=3&limit=36

Но при переходе он очищается из url.
Дмитрий
16 декабря 2023, 15:54
1
0
Я использую простенький, но рабочий способ на JS:

const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent) ? true : false;

ну и далее используем переменную isMobile как угодно. Способ простой и не закрывает все потребности, но учитывая, что 98% посетителей сейчас — это Android или iPhone/iPad устройства — то для определения устройства посетителя этого вполне хватает.

Вот думаю, есть ли смысл подключать MobileDetect или Detect.js, т.к. до сих пор не сталкивался с проблемами из-за такой реализации.
Дмитрий
04 декабря 2023, 14:12
0
Зачем? это из ЧатГПТ скопировано? Во время установки панели всё должно установиться и так, а все настройки можно сделать прямо в панели. У некоторых хостеров можно выбрать готовые образы сразу с предустановленной панелью.
Дмитрий
29 ноября 2023, 15:46
+1
php-erorrs.log ругается на плагин с id 8. Вот тут обсуждали похожую тему: modx.pro/help/19871