Перейти к основному содержимому

Установка

Где взять пакет​

Единственный канал — Modstore: Приложения → Установщик → «Загрузить дополнения». Там же приходят обновления и работает поддержка. Больше Prism нигде не раздаётся, так что скачивать zip со стороны не нужно и не стоит.

Установка​

  1. Менеджер → Приложения → Установщик.
  2. «Загрузить пакет» → выбрать скачанный prism-<версия>-pl.transport.zip.
  3. В списке пакетов у Prism нажать «Установить».

Установщик создаёт таблицы prism_*, пространство имён, плагин, шесть сниппетов, 22 чанка, пять пресетов превью, пункт меню и системные настройки. Ключ подписи для адресов превью генерируется сам.

Перед этим он проверяет версии PHP и MODX и наличие расширений, без которых работать не сможет (см. Требования). Если чего-то не хватает, установка не начнётся, а в журнал MODX попадёт список недостающего.

Проверьте состояние​

Откройте Компоненты → Prism → Состояние. Всё зелёное — можно работать.

Rewrite для превью​

Превью создаются по первому запросу, дальше их отдаёт веб-сервер как статику. На Apache ничего делать не нужно — в папке img/ лежит свой .htaccess.

На nginx добавьте в server {} до location ~ \.php$:

location /assets/components/prism/img/ {
expires 1y;
add_header Cache-Control "public, immutable";
try_files $uri /assets/components/prism/img/index.php?$args;
}

Если конфиг менять нельзя, переключите prism.thumb_mode в pregenerate — все размеры будут создаваться сразу при загрузке файла.

Каталог загрузок​

Оригиналы лежат в Media Source, то есть доступны по прямому адресу. В каждую свою папку Prism кладёт .htaccess, который запрещает отдавать оттуда что-либо исполняемое и выдаёт SVG с ограничительным Content-Security-Policy. nginx файлы .htaccess не читает, поэтому там то же самое нужно задать в конфиге — по пути из prism.path_template внутри вашего источника:

location ~* ^/prism/.*\.(?:php[0-9]?|phtml|phar|pht|cgi|pl|py|sh)$ {
return 404;
}
location ~* ^/prism/.*\.svgz?$ {
add_header Content-Security-Policy "default-src 'none'; style-src 'unsafe-inline'; sandbox";
add_header X-Content-Type-Options "nosniff";
}
примечание

Это последний рубеж, а не единственный. Расширение проверяется по содержимому, имя файла не сохраняет внутренних точек (shell.php.jpg ложится как shell-php.jpg), а каждое изображение пересохраняется через GD — в хранилище попадают наши байты, а не присланные.

Лимиты загрузки​

Prism грузит файлы частями и обходит upload_max_filesize, но размер части (prism.chunk_size_mb, по умолчанию 1 МБ) должен быть меньше upload_max_filesize и post_max_size вашего хостинга.

Что настроить сразу​

НастройкаЗачем
prism.templatesId шаблонов через запятую — на каких ресурсах показывать вкладку. Пусто — на всех.
prism.source_idMedia Source, куда складывать файлы.
prism.path_templateПапка внутри источника, по умолчанию prism/{resource_id}/.
prism.video_enable, prism.files_enable, prism.embed_enableКакие подвкладки нужны.

Полный список — Системные настройки.

Обновление и удаление​

Обновление не трогает изменённые вами настройки, пресеты и чанки: они добавляются только если их ещё нет. Новые чанки появятся, ваши правки останутся вашими.

Удаление оставляет таблицы и файлы. Чтобы таблицы удалились, заранее включите prism.uninstall_drop_tables. Файлы в Media Source не трогаются никогда.

Перед удалением с включённым drop сделайте копию базы

Таблицы prism_* сносятся безвозвратно, а в них лежат все названия, описания, alt, теги, порядок, кадры и точки фокуса. Сами файлы останутся в источнике, но связь с ними будет потеряна, и восстановить её можно будет только руками.

После удаления на страницах останутся вызовы сниппетов — MODX покажет их как есть. Поищите по шаблонам и чанкам шесть имён: prism, prismVideos, prismFiles, prismEmbeds, prismMixed, prismThumbnail.