Wassi Wassinen

Wassi Wassinen

Был в сети 27 июня 2026, 01:27
Заказы не принимаю
И ещё такие ошибки:

[2026-06-20 23:58:37] (ERROR @ /var/www/.../data/www/.../core/cache/includes/elements/modplugin/12.include.cache.php : 12) PHP warning: Undefined array key "siSession"
[2026-06-20 23:58:37] (ERROR @ /var/www/.../data/www/.../core/cache/includes/elements/modplugin/12.include.cache.php : 12) PHP warning: Undefined array key "siSession"
По обоим случаям нейросеть пишет, что есть фиксы с правкой исходников. Но не хочется править, чтобы потом не поломать что-то и не затиралось при обновлении.
Если у вас есть возможность — дополните код.

Заранее благодарен.
@Артур Шевченко добрый вечер, Артур.

При использовании SendIT через сниппет получаю вот такую ошибку:

[2026-06-20 23:44:06] (ERROR @ /var/www/.../data/www/.../core/components/sendit/services/sendit.class.php : 333) PHP warning: Undefined array key "onestepform"
[2026-06-20 23:44:06] (ERROR @ /var/www/.../data/www/.../core/components/sendit/services/sendit.class.php : 333) PHP warning: Undefined array key "onestepform"
[2026-06-20 23:44:06] (ERROR @ /var/www/.../data/www/.../core/components/sendit/services/sendit.class.php : 333) PHP warning: Undefined array key "onestepform"
Вызов сниппета:

{'!RenderForm' | snippet: [
                        'tpl' => 'Footer_Form.tpl',
                        'formName' => 'footerForm',
                        'presetName' => 'footer_form',
                        'hooks' => 'email,FormItSaveForm',
                        'emailTo' => '...',
                        'emailFrom' => '..',
                        'emailTpl' => 'lead_formit_email.tpl',
                        'emailSubject' => 'Заявка с сайта ',
                        'clearFieldsOnSuccess' => 1,
                        'fieldNames' => 'callback_phone==Телефон',
                        'successMessage' => 'Форма отправлена!',
                        'validationErrorMessage' => 'Исправьте ошибки!'
                    ]}

Для сайта пробовал включать php 8.0 и 8.1
Николай, прежде всего — вы молодец.

А про кеширование — можно пойти по правилу Парето.
То есть дать возможность закешировать самое частое — это «фильтры первого уровня». То есть самые базовые варианты (без выбора нескольких фильтров). Именно их используют чаще всего и именно они (после выборки всего каталога) имеют самые тяжелые запросы. Если в фильтрах есть, например: производитель, стиль и цена. Цену мы закешировать вряд ли можем (она, как правило, выбирается диапазоном). А вот производителей и стили — можем. Это снимет большую часть более тяжелых запросов с сервера (потому что выборка всё ещё довольно существенная на больших каталогах даже при выборе только производителя или только стиля). А выборка в формате «производитель + стиль» уже не такая тяжелая.
Смысл в том, чтобы топовые донаты всегда были на виду у сообщества. Это основной принцип при сборе. :)
Собраны маленькие суммы, в том числе, потому, что информацию о краудфаундинге не найти. Точнее, найти можно, но это нужно специально стараться искать. :)

Как написал Иван ниже — хотя бы блок с ссылками добавьте в шапку сайта. Или строку с баннером\кнопкой. Дизайн могу наверстать.
Николай, прежде всего — вы молодцы.
Что хотелось бы предложить ( не уверен, что предложение по адресу).

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

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

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

Благодарю за внимание.
Каждый расходует свое время как хочет. :)

Вижу, что это что-то революционное. И стараюсь смотреть на такие вещи с точки зрения популяризации MODx в широком смысле.
MODx, как я это понимаю, занял нишу в которой можно быстро поднять сайт без навыков программирования (немного прочитав документацию и поняв базовые принципы: шаблон, чанки, сниппеты и синтаксис; далее — просто установить, просто использовать). Но не так просто, как Wordpress. Поэтому, ниша получилась довольно узкая. :) В своё время популярность MODx, в моем представлении, выросла, в том числе, благодаря дополнениям MiniShop2 и pdoTools. Эти дополнения развивали основные принципы MODx (просто установить, просто использовать) и потому стали так популярны. И помогли MODx усилить свои позиции.

Несколько я смог понять — новые дополнения уводят MODx ещё куда-то. Станут ли они новыми MS2 и pdoTools — время покажет. :)

Я не критикую. Это на правах размышлений.

Возможно, стоило бы исправить корень проблемы с дублированием Guzzle, с доступом к Composer и прочим, но сделать это так, чтобы не менялись принципы MODx (просто установить, просто использовать) для большинства пользователей, за счёт которых растёт популярность MODx. Сделать удобно для разработчиков, но сохранить привычную и простую модель для простых пользователей — это было бы гениально. :)

Напоминаю, что рассуждаю в контексте популярности и популяризации MODx.
Возможно, популярность начнет расти за счёт состоявшихся разработчиков, которые уйдут с других фреймворков, чтобы найти что-то недостающее для себя в MODx. Это открытый вопрос :))
В таком формате для одной формы будет работать (если вставить в чанк формы)?

<script>
document.addEventListener('fetchit:success', (e) => {
  const { form } = e.detail;

  if (form.getAttribute('id') === 'main_form') {
      
    yaCounter96827878.reachGoal('course_main_form');

    
  }
});  
</script>
<script>
document.addEventListener('fetchit:success', (e) => { // Добавляем listener на событие успешной обработки формы
    const { form } = e.detail; // Получаем форму

    switch (form.getAttribute('id')) {
        case 'form-1':
            // Обрабатываем только форму с id="form-1"
            // Тут код с отправкой целей
            break;
        case 'form-2':
            // Обрабатываем только форму с id="form-2"
            // Тут код с отправкой целей
            break;
    }
})
</script>

Я могу это так вставить на страницу с формами?