Практически с этой проблемой можно столкнуться, если бинарные данные (изображения, pdf, doc, xls, etc) хранятся не в файлах, а в базе данных.
Логично при этом использовать MODx для доступа к БД (получаем преимущества использования xpdo, проверку прав доступа). Соответственно, и отправлять данные пользователю придется из под MODx. Более того, имеющаяся в MODx возможность создания произвольных Content Types (Типов содержимого) обеспечивает отправку данных пользователю с нужными HTTP-заголовками и расширениями файлов.
А теперь собственно проблема.
С одной стороны, если нужно выводить бинарные данные (картинка, например), то для данного типа содержимого НЕОБХОДИМО включить опцию Binary. Это ОТКЛЮЧИТ какой-либо парсинг вывода и таким образом обеспечит отправку пользователю двоичных данных, которые никоим образом не изменены парсером.
С другой стороны, включенная опция Binary также отключает парсинг и обработку сниппетов.
Таким образом получается, что данные необходимо формировать сниппетом, который невозможно вызвать, так как у документа в Content Type включена опция Binary.
Классический DeadLock.
Другими словами: документ, у которого в Content Type включена опция Binary, не может быть сформирован динамически (сниппетами, плейсхолдерами).
Но даже для статического содержимого есть проблема: при включенной опции Binary не представляется возможным "наполнить" документ бинарными данными - пользователю выводится содержимое поля content, а его редактирование в админке - это html-поле <textarea> (исключение - использование static resources).
Если же для парсинга сниппетов отключить опцию Binary, то с непредсказуемой вероятностью парсер нарушит целостность данных (например изображение будет частично “битым” или неполным - проверено на практике).
В принципе решение проблемы - это использование отдельного php-скрипта, не подвязанного на MODx.
Но конечно правильнее было бы все таки использовать средства MODx.
Может кто нибудь подскажет решение?