Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

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

Konstantin
Konstantin
Профиксите пожалуйста баг — при загрузке файлов валидатор ругается на файлы у которых в названии присутствуют точки считая что после них должно быть сразу расширение, не найдя нужного расширения после них выдает ошибку — что может смутить человека который отправляет файлы с фронта
Дмитрий
Дмитрий
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;
}
Prihod
Prihod
При добавлении или удалении в избранное сообщений никаких нет так как по индикатору и так все понятно и нет смысла лишний раз перегружать интерфейс лишней инфой, если они тебе нужны то ты сам должен их показывать

window.addEventListener('DOMContentLoaded', e => {
myFavorites.on('add', (self) => {
     self.notifier.success("add success");
  });
myFavorites.on('remove', (self) => {
     self.notifier.success("remove success");
  });
});
Konstantin
Konstantin
А вот это уже дело говорите. Добавил в корневой htaccess эти правила и закрыл core с глаз долой:

# Закрыть доступ к core и другим чувствительным файлам/директориям
RewriteCond %{REQUEST_URI} ^/(core|config\.core\.php|_build|_gitify|_backup) [NC]
RewriteRule ^.*$ - [F,L]
# Установить пользовательскую страницу ошибки для 403
ErrorDocument 403 /error401
Wassi Wassinen
Wassi Wassinen
По Яндекс Метрике — у главной страницы Modx.pro восемь тысяч посетителей за месяц. Если они будут чаще видеть кнопку\блок доната, то вероятность набрать больше денег, скорее всего, повысится. :)
Wassi Wassinen
Wassi Wassinen
Смысл в том, чтобы топовые донаты всегда были на виду у сообщества. Это основной принцип при сборе. :)
Собраны маленькие суммы, в том числе, потому, что информацию о краудфаундинге не найти. Точнее, найти можно, но это нужно специально стараться искать. :)

Как написал Иван ниже — хотя бы блок с ссылками добавьте в шапку сайта. Или строку с баннером\кнопкой. Дизайн могу наверстать.
Артур Шевченко
Артур Шевченко
создатели движка настоятельно рекомендуют это сделать
Что мешает сделать
так же (см. под заголовком Protect the Core and Other Locations) со второй версией?

Я не отрицаю наличие проблемы, просто не знаю как её решить со стороны компонента.
Ivan K.
Ivan K.
Спасибо вам за работу. Очень жду финальной версии.
Поместите хотя бы кнопку доната в верхнее меню, и сделайте ее жирной и красной))
Я например, донатил бы чаще, а не только, когда вижу хорошие новости)
а то 46 000 руб. это уж совсем скромный результат.
Wassi Wassinen
Wassi Wassinen
Николай, прежде всего — вы молодцы.
Что хотелось бы предложить ( не уверен, что предложение по адресу).

Добавьте на Modx.pro раздел «Краудфандинг». Или что-то схожее по названию и смыслу. Логика следующая — в этот раздел можно будет добавить тикеты о краудфандинге (сборе) на тот или иной компонент и доработки. За сбор можно будет проголосовать (поставив + к рейтингу) и это будет поднимать крауды в топе. По сути, это ещё один раздел с стандартными тикетами в которых будут ссылки на донаты. Эти тикеты всегда будут на виду и отранжированы по рейтингу.

В шапке главной странице добавьте блок с выводом трёх плашек-ссылок на краудфандинги. Краудфандинг на MS3 — чтобы его постоянно было видно на главной странице + ещё пару топовых по рейтингу сборов. Или он сам в топ вылезет (уверен).

Таким образом:
1. Будет больше внимания привлечено к донатам на развитие дополнений MODx
2. Донаты всегда будут на виду (сейчас информацию про них найти довольно сложно)
3. Это хорошая инициатива для развития других компонентов

Благодарю за внимание.
Алексей
Алексей
Все решил, не проследил что исполняющий файл создан от другого пользователя, у кого проблемы с cron, проверяйте права и пользователя.
Файл cron:
<?php
    define('MODX_API_MODE', true);
    require 'Полный пусть до файла index.php в корне';
    $modx->getService('error', 'error.modError');
    $modx->setLogLevel(modX::LOG_LEVEL_ERROR);
    
    $corePath = $modx->getOption('sync_core_path', null,
	$modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/sync/');
	$Sync = $modx->getService('sync');

	$params = array(
	'service'   => 'moysklad',
	'action'    => 'mgr/mscategory/sync',
	'sync_step' => 'sync_init',
	);

	$response = $Sync->curlExec($params);