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

Дмитрий
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
Руслан Алеев
03 сентября 2024, 12:07
+2
Мощь! Спасибо за труд!
Ivan
03 сентября 2024, 11:00
0
Прошло то всего 5 дней. Надеюсь они свои сайты так же неспешно переносят)
Sergey (Sentinel)
02 сентября 2024, 20:24
0
Посты из канала в категорию отправлять и публиковать.
Сергей С
02 сентября 2024, 00:23
0
Норм хост. Лучше некоторых.
Сергей С
02 сентября 2024, 00:21
0
И сейчас так отвечают. Но он есть
Николай Савин
01 сентября 2024, 10:47
+1
Ребята работают. Проект большой, технологии не самые типовые — требуется время для отладки нюансов и деталей.
Максим
30 августа 2024, 10:59
0
Думаю, лучше оформить «human_filesize» и «getFileInfo» в сниппеты и вызывать как модификатор фенома.
Плагины нагружают систему как мне кажется. Тем более такой мелкий и редко используемый.
Вячеслав Варов
30 августа 2024, 09:39
0
Но ссылка тоже не совсем удобно, поскольку она генерит 301 редиректы, и вручную нужно вставлять ссылку на документ — нельзя выбрать через медиаисточник
Вячеслав Варов
30 августа 2024, 08:48
0
Думаю уже не актуально, но может будет кому полезно, добавил модификатор fenom который выводит размер файла и его расширение. Создать плагин и повесить его на событие pdoToolsOnFenomInit

Вызывать в виде {'linkToFile' | getFileInfo}

<?php
/** Функция обрабатывает размер файла в байтах в человекочитаемый 
    формат добавляя к размеру файла размерность, например 128 Mb
*/
if (!function_exists("human_filesize")) {
    function human_filesize($bytes, $decimals = 2)
    {
        $sz = ["B", "Kb", "Mb", "Gb", "Tb", "Pb"];
        $factor = floor((strlen($bytes) - 1) / 3);
        return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) .
            " " .
            @$sz[$factor];
    }
}

/** @var modX $modx */
switch ($modx->event->name) {
    case "pdoToolsOnFenomInit":
        /** @var Fenom $fenom
            Мы получаем переменную $fenom при его первой инициализации и можем вызывать его методы. 
            Например, добавим модификатор вывода имени домена сайта из произвольной ссылки.
        */
        $fenom->addModifier("getFileInfo", function ($input) {
            if (file_exists($input)) {
                return strtoupper(pathinfo($input, PATHINFO_EXTENSION)) .
                    ", " .
                    human_filesize(filesize($input), 0);
            }
        });
        break;
}
Вячеслав Варов
30 августа 2024, 08:33
0
это когда генерируешь страницу — да будет работать, у меня же задача прицепить сам файл pdf
Кушнеров Александр
30 августа 2024, 01:32
0
Я тоже немного доработал, чтобы приходило больше полей, а также способ и вариант доставки текстом:
<?php
if($modx->event->name != 'msOnCreateOrder') return;

$token = $modx->getOption('mstelegram_token', null, false);
$recipients = explode(',', $modx->getOption('mstelegram_recipients', null, ''));

$contacts = $msOrder->getOne('Address');
$_products = $msOrder->getMany('Products');

// Список товаров в заказе
$i = 0;
$products = '';
foreach ($_products as $product) {
    $i++;
    $products .= "{$i}. {$product->name} ({$product->count} шт.)";
}

// Текст сообщения
$message = "
Новый заказ #{$msOrder->num}
на сумму {$msOrder->cost} р.
-----
{$products}
-----
E-mail: {$contacts->email}
Имя: {$contacts->receiver}
Телефон: {$contacts->phone}
Комментарий: {$contacts->comment}";

$deliveryMethod = $modx->getObject('msDelivery', $msOrder->delivery);
if ($deliveryMethod) {
    $deliveryMethodTitle = $deliveryMethod->get('name');
    $message .= "\nСпособ доставки: {$deliveryMethodTitle}";
}

$paymentMethod = $modx->getObject('msPayment', $msOrder->payment);
if ($paymentMethod) {
    $paymentMethodTitle = $paymentMethod->get('name');
    $message .= "\nСпособ оплаты: {$paymentMethodTitle}";
}

$message = urlencode($message);
foreach($recipients as $id){
	$id = trim($id);
	if(!$id) continue;
    $url = "https://api.telegram.org/bot{$token}/sendMessage?chat_id={$id}&text={$message}";
    $ch = curl_init();
    curl_setopt_array($ch, array(CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true));
    $result = curl_exec($ch);
    curl_close($ch);
}
Денис Усманов
29 августа 2024, 22:31
+6
Сергей, привет! Ошеломительная новость! Спасибо!

По донату, есть информация на странице «О нас»: modx.pro/about
hidestm
29 августа 2024, 20:33
0
Друг! Я решил эту задачку =)

Так и не понял что он передает из этого поля, ничего не работало. Перекрыл сверху: Чанк: tplMeta (84), если любое значение пустое, эту мету не выводим:

[[+value:escape:ne=``:then=`/>`]]
Артур Шевченко
29 августа 2024, 16:19
0
Так есть отдельный тип содержимого PDF и тип ресурса Статичный.
Вячеслав Варов
29 августа 2024, 13:43
0
А нашел, для этого можно использовать тип ресурса Ссылка
Артур Шевченко
28 августа 2024, 22:33
0
Возможно всё, вопрос только зачем?
Николай Савин
28 августа 2024, 19:22
+2
Спасибо за обратную связь. На данный момент идет работа с полями админки, я перестраиваю полностью принцип их работы (описывал в свежей заметке). Так что да — вполне возможно. что этот кусок сейчас недоступен