Установка
Где взять пакет
Единственный канал — Modstore: Приложения → Установщик → «Загрузить дополнения». Там же приходят обновления и работает поддержка. Больше Prism нигде не раздаётся, так что скачивать zip со стороны не нужно и не стоит.
Установка
- Менеджер → Приложения → Установщик.
- «Загрузить пакет» → выбрать скачанный
prism-<версия>-pl.transport.zip. - В списке пакетов у 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.templates | Id шаблонов через запятую — на каких ресурсах показывать вкладку. Пусто — на всех. |
prism.source_id | Media Source, куда складывать файлы. |
prism.path_template | Папка внутри источника, по умолчанию prism/{resource_id}/. |
prism.video_enable, prism.files_enable, prism.embed_enable | Какие подвкладки нужны. |
Полный список — Системные настройки.
Обновление и удаление
Обновление не трогает изменённые вами настройки, пресеты и чанки: они добавляются только если их ещё нет. Новые чанки появятся, ваши правки останутся вашими.
Удаление оставляет таблицы и файлы. Чтобы таблицы удалились, заранее включите
prism.uninstall_drop_tables. Файлы в Media Source не трогаются никогда.
Таблицы prism_* сносятся безвозвратно, а в них лежат все названия, описания, alt, теги, порядок,
кадры и точки фокуса. Сами файлы останутся в источнике, но связь с ними будет потеряна, и
восстановить её можно будет только руками.
После удаления на страницах останутся вызовы сниппетов — MODX покажет их как есть. Поищите по
шаблонам и чанкам шесть имён: prism, prismVideos, prismFiles, prismEmbeds, prismMixed,
prismThumbnail.