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

Артур Шевченко
02 августа 2024, 10:13
+1
Данные о скидках лежат в сессии. Распечатай, посмотри, а то я не помню какие там ключи.
Майкл
02 августа 2024, 02:54
0
Добрый день! Перед покупкой хочу уточнить два момента
Совместим ли компонент с php 8+,
Совместим ли компонент с seofilter?
Sergey (Sentinel)
01 августа 2024, 21:16
0
А как можно проверку в товаре сделать?
К примеру мне нужно вывести какой-то блок, если есть скидка на товар
Stepan
01 августа 2024, 13:48
0
я думаю это самое главное что мы потеряем
Stepan
01 августа 2024, 06:15
+1
Готово! Спасибо!
оформление это не мое....
Stepan
01 августа 2024, 06:14
0
в dateAgo кажется через год выводит просто дату
а мне нужно было чтобы всегда было количество прошедшее со старта
Ivan
31 июля 2024, 20:58
0
Я подумал это шутка такая) Типа отсылка к тому что работало не корректно, а теперь правильно)
Mike
31 июля 2024, 18:04
0
Подскажите, получилось ли победить проблему генерации превьюшек в папках small, medium, big?
Дима Касаткин
31 июля 2024, 14:30
+1
Степан, спасибо что поделился!
Проверь плиз заголовок, что-то с ним не так)
Предлагаю допилить вот так: «[ruAgo] Дорабатываем output filter ":ago" на склонения по-русски»
Альберт
30 июля 2024, 18:42
0
Тоже благодарю за решение!
Sergey (Sentinel)
30 июля 2024, 18:01
+1
Будет ли тест компонентов на 24 часа?
Дмитрий
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
adminixi
30 июля 2024, 09:35
0
Спасибо! Поменяла на pdoResources.
Наумов Алексей
30 июля 2024, 09:09
0
Сниппет pdoMenu создан для построения дерева, как сказал Артур. В вашем случае, если дерево не нужно, используйте pdoResources.
Дмитрий Иванов
30 июля 2024, 03:31
0
Я не использую) Я изучаю возможность использования. А вообще «западные хостеры» зачастую просто убирают поддержку старых версий ПХП, так что скоро видимо придётся отказываться от него (Articles)
Артур Шевченко
29 июля 2024, 22:36
0
pdoMenu строит дерево и сортирует ресурсы по уровням, так что вряд ли у тебя получится сделать задуманное стандартным сниппетом.
Артур Шевченко
29 июля 2024, 20:41
0
Очевидно код компонента не адаптирован для работы с PHP 8. Вообще не очень понятно с какой целью ты используешь с Modx 2 PHP 8, чтобы жить стало лучше и веселее?
Вячеслав Варов
29 июля 2024, 17:24
0
Докрутил, ранее не подтягивались настройки если запрашивать из одного контекста настройки другого
<?php
switch ($modx->event->name) {
    case 'OnHandleRequest':
        // Функция для загрузки настроек из файлов
        function loadSettings($directory) {
            $settings = [];
            if (file_exists($directory) && is_dir($directory)) {
                foreach (glob($directory . '*.inc.php') as $file) {
                    $response = require($file);
                    if (is_array($response)) {
                        $settings = array_merge($settings, $response);
                    }
                }
            }
            return $settings;
        }

        // Загрузка общих настроек
        $site_all = MODX_CORE_PATH . 'config/settings/';
        $globalSettings = loadSettings($site_all);

        // Конфигурация для сайта с конфигом MODX_CONFIG_KEY
        $site_dir = MODX_CORE_PATH . 'config/settings/' . MODX_CONFIG_KEY . '/';
        $configKeySettings = loadSettings($site_dir);

        // Конфигурация для текущего контекста
        $context_key = $modx->context->get('key');
        $context_dir = MODX_CORE_PATH . 'config/settings/' . $context_key . '/';
        $contextSettings = loadSettings($context_dir);

        // Объединение всех настроек
        $allSettings = array_merge($globalSettings, $configKeySettings, $contextSettings);

        // Применение настроек к текущему контексту
        foreach ($allSettings as $key => $value) {
            $modx->context->setOption($key, $value);

            // Сохранение настроек в базе данных
            $setting = $modx->getObject('modContextSetting', [
                'context_key' => $context_key,
                'key' => $key
            ]);
            if (!$setting) {
                $setting = $modx->newObject('modContextSetting');
                $setting->set('context_key', $context_key);
                $setting->set('key', $key);
            }
            $setting->set('value', $value);
            $setting->save();
        }
        break;
}
?>