Семён Кудрявцев

Семён Кудрявцев

Был в сети 19 марта 2025, 08:33
Заказы не принимаю
Уже как-то всплывал этот вопрос, но он остался без ответа — Работает ли компонент, с полями добавленными через плагины miniShop2? Попробовал самописное поле добавить через плагин, не видно в модификациях, попробовал через компонент msFieldsManager, он по сути делает то же самое, но всё равно не видно этих полей в модификациях. Может я что-то делаю не так или всё таки плагины ms2 не работают в компоненте?
Мне кажется надо обсудить этот вопрос с автором компонента и при его согласии внедрить уже разработанный им функционал в коробку miniShop2, это может быть с компенсацией за потраченное время или же без, если Автор того пожелает. Также хотелось бы сделать и с компонентом msTools
Просто это вещи, которые по-моему должны быть «из коробки», и если есть возможность их внедрить быстрее за счет того, что кто-то уже этот функционал написал, нужно эту возможность как минимум рассмотреть.
В статье речь ни о image и ни о thumb, шаблонизатор и доступные плейсхолдеры тут ни при чем. Речь про обработку запросов изображений веб-сервером. Генерировать avif пока нельзя. Насколько знаю phpThumb его пока не поддерживает. Но самому сделать легко, куча сервисов и программ есть. Я их генерирую через nodejs и кладу рядом с оригиналом. То есть MODX не занимается у меня генерацией webp и avif от слова совсем. Все делает нода, формирует эти файлы всегда рядом с тем, что назагружали контент-менеджеры.
Автору респект за классные идеи и очень крутые компоненты.
Есть вопрос — поизучал компонент, наткнулся на пару моментов, про которые хотелось бы спросить
1)Светится абсолютный путь на сервере, по мне это не очень «секьюрно» раскрывать файловую структуру выше корня сайта.

2)Иногда последняя вкладка формирования файла — выгрузка и параметры, падает с ошибками

То есть файл она формирует, но отредактировать его уже не получается, там просто пусто и ошибка в консоли на скрипт.
Буду благодарен если автор прокомментирует эти моменты.
Важно только, что при таком раскладе нужен доступ к объекту $modx, с pdoTools и выключенным доступом к объекту (так по умолчанию) такая фишка не прокатит. А упрощенный класс $_modx не даст нужного результата, его нужно допилить, чтобы он возвращал все поля контекста.
По поводу ошибок, разобрался это не Ваш компонент, их кидает hideSource, когда другие плагины статичные, просто в случае с msPromoCode2 эти ошибки кладут систему.
В итоге виновником является hideSource и то как он реагирует на статичные плагины.
Прошу прощения за беспокойство и ещё раз извиняюсь за клевету на компонент.
Вы всё по поводу этой галочки? Это было для воспроизведения проблемы на modhost.
Даже если галочка не стоит, и при этом в системе есть другие статичные плагины — в консоль падают ошибки, о не возможности загрузки классов со странными префиксами «mspc2»
И это только когда в систему поставлен также hideSource
А по поводу событий, я имел ввиду следующее:
hideSource срабатывает на событие OnMediaSourceGetProperties
В списке событий msPromoCode2 этого события нет, значит плагин не должен реагировать на него.
Но ошибки которые падают в консоль говорят об обратном.
Could not load class: mspc2OnMediaSourceGetProperties from mspc2onmediasourcegetproperties.
Павел, я не ставил перед собой цели, как Вы говорите «обосрать Ваш труд», я столкнулся с проблемой и решил её описать в сообществе, где есть возможность, что кто-то поможет с этим разобраться, может кто-то с этим уже сталкивался. За неимением возможности написать в ТП, единственное место, где можно осветить проблему — это здесь. И целью комментария было желание привлечь внимание автора компонента, и возможно его помощи разобраться в проблеме. Но Вы же это приняли как клевету в свой адрес. Я извиняюсь за то, что задел своим комментарием Вас.
Но прошу, раз уж Вы отвечаете на комментарии, помочь разобраться в вопросе.
По поводу галочки — не понятна Ваша позиция, то что из коробки он идет с выключенной. Эта галочка, системная возможность движка и по идее кроме как «откуда брать код плагина» она не должна ни на что влиять, но влияет. И хотелось бы разобраться почему?
Честно, не знаю на что Вы обиделись и какого рода извинения ожидали.
Я же указал, что проблема решалась отключением Вашего компонента. Оставалось только найти причину, её я так пока и не нашел, но мне удалось её воспроизвести на modhost.
Ставим всего 2 компонента: msPromoCode2 и hideSource
Если у плагина промокодов поставить галку «статичный» — система падает с fatal error
Без галки — всё работает норм

Но если при этом в системе будут какие-то другие плагины с этой галкой, что не редкость для тех, кто работает в IDE, то в консоли в некоторых случаях получаем ошибки вида:
Could not load class: mspc2OnMediaSourceGetProperties from mspc2onmediasourcegetproperties.
Could not load class: msYaEcommerceOnMediaSourceGetProperties from msyaecommerceonmediasourcegetproperties.
Я пока не знаю почему атрибут «статичный» так влияет на работу плагинов, но как небольшой вывод для себя:
1)У плагина компонента msPromoCode2 не должна стоять галка «статичный» при установленном hideSource
2)Если в системе стоят и msPromoCode2 и hideSource и при этом есть другие статичные плагины, могут быть проблемы. (наблюдаются ошибки в консоли, но не у всех плагинов)
3)Я не утверждаю, что проблема именно в msPromoCode2, она проявляется в связке двух компонентов.
Знаю, что автор предпочитает, чтобы все вопросы по компоненту писали в ТП, но на днях попался сайт у клиента, где поддержки уже нет, а проблема с компонентом есть.
Заметил, что компонент ломает работу других плагинов на некоторые события и валит админку с фатальной ошибкой, например простейший плагин для скрытия файлов у медиаисточников, с выключенным плагином mspc2System, прекрасно работает, но стоит включить валится вся админка с fatal error ​
Код плагина, для примера.
<?php
/** @var modX $modx */
switch ($modx->event->name) {
   ​case 'OnMediaSourceGetProperties':
       ​$properties = json_decode($properties, true);
       ​if (!empty($properties['hideSource']) AND !empty($properties['hideSource']['value']) AND $_REQUEST['node'] == '/') {
           ​die('{}');
       ​}
   ​break;
}
Та же история с компонентом hideSource из modStore, который по сути делает тоже, что и плагин выше, без промокодов работает норм, с включенным компонентом — падает админка.
Скорее всего это происходит из-за того, что код плагина самого компонента, вообще никак не ограничен событиями, то есть работает через все события системы насквозь и по пути что-то ломает.
О, спасибо, как мне не хватало этой статьи, целый день искал решение, но эта статья не попадалась почему-то.
В ней даже более элегантно сделано переопределение типа поля.