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

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

Александр Туниеков
Александр Туниеков
Человек бы попытася что-то определенное сказать. Либо можно либо нельзя. А chatGPT выразился в общем. Четкого ответа что компоненты для MODX можно шифровать нет. Человек понимает, что компоненты MODX не включают в себя код MODX. Код MODX компонентом никак не модифицируется. А chatGPT этого не понимает.
Хотя плагин на события модифицирует поведение MODX, но в себе кода MODX так то не содержит. Только API вызывает.
Алексей
Алексей
Подключи к сайту PHP FFmpeg, думаю в хостинге тебе установят или уже установлен и плюсом сможешь сжимать файлы, простой пример:

{'!getWithFFmpeg' | snippet: [
'file' => ''" // Укажи путь к видеофайлу
]}
как пример сделать через shell
<?php
function getWithFFmpeg($videoPath) {
    $command = "ffmpeg -i " . escapeshellarg($videoPath) . " 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//";
    $duration = shell_exec($command);
    if ($duration) {
         list($hours, $minutes, $seconds) = explode(':', $duration);
           return ($hours * 3600) + ($minutes * 60) + $seconds;
      }
    return false;
}

$duration = getWithFFmpeg($file);

if ($duration !== false) {
    echo "Длительность видео: " . $duration . " секунд";
} else {
    echo "Не удалось получить длительность видео";
}
?>
на выходе будет например: Длительность видео: 5 секунд.
или можно скачать библиотеку, закинуть в папку сайта сам getID3 и написать функцию
Дмитрий
Дмитрий
Здравствуйте, а есть ли возможность менять и старую цену? Попробовал так
<?php
switch ($modx->event->name) {
    case "msOnGetProductPrice":
        $returned = (array)$modx->getPlaceholder('_returned_price');
        if (!isset($returned['price'])) {
            return;
        }

        $id = $returned['id'];
        $price = $returned['price'];
        $oldPrice = !empty($returned['old_price']) ? $returned['old_price'] : $price; // Предположим, старую цену берём из текущей цены
        $options = !empty($returned['msoptionsprice_options'])
            ? $returned['msoptionsprice_options']
            : (!empty($_REQUEST['options'])
                ? $_REQUEST['options']
                : array());
        $options = array_diff_key($options, array_flip(array('modifications', 'modification')));

        foreach (array_keys($options) as $k) {
            if (!empty($options[$k]) && is_array($options[$k])) {
                foreach ($options[$k] as $v) {
                    // Изменение для текущей цены
                    $q = $modx->newQuery('msopModification')
                        ->innerJoin('msopModificationOption', 'Option',
                            "Option.mid = msopModification.id AND Option.key = '{$k}' AND Option.value = '{$v}'")
                        ->select(array('price', 'old_price')) // Добавляем выборку old_price
                        ->where(array(
                            'msopModification.rid' => $id,
                            'msopModification.type' => 2,
                            'msopModification.active' => true,
                        ));
                    if ($q->prepare() && $q->stmt->execute()) {
                        while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
                            if (!empty($row['price'])) {
                                $price += $row['price'];
                            }
                            if (!empty($row['old_price'])) {
                                $oldPrice += $row['old_price']; // Добавляем старую цену
                            }
                        }
                    }
                }
            }
        }

        // Возвращаем и сохраняем значения
        $modx->event->returnedValues['price'] = $returned['price'] = $price;
        $modx->event->returnedValues['old_price'] = $returned['old_price'] = $oldPrice;
        $modx->setPlaceholder('_returned_price', $returned);
        break;
}
не сработало(
Maks
Maks
docker-compose up -d
error during connect: Get "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/v1.46/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.project%3Ddevilbox%22%3Atrue%7D%7D": open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.
Вот такую ошибку получил при выполнении команды
docker-compose up -d