Источник файлов, TV поле image, Обрезанный путь
Свой источник файлов — TV поле image — Обрезанный путь к изображению
Тестовая картинка: mysite.com/images/other/test.jpg
Как ясно из пути, основная директория для изображений — images
Чтоб было удобней обращаться к изображениям и не давать другим пользователям возможность видеть другие директории, создаю Источник файлов..
1) Создаю источник файлов
Имя: Images
basePath: images/
basePathRelative: Да
baseUrl: images/
baseUrlRelative: Да
2) Создаю TV
Имя: img_1
Тип ввода: Изображение
Источники файлов: Images
Так же указываю для каких шаблонов доступен этот TV
3) Создаю ресурс, в TV поле «img_1», выбираю изображение test.jpg
И, по идее, в TV поле «img_1» должен прийти следующий текст:
images/other/test.jpg
но, к моему сожалению, туда приходит только:
other/test.jpg
Причем TV поле отлично отрабатывает привью для этой картинки.
Вопрос многоуважаемому сообществу!
Как сделать так, чтоб в TV поле «img_1», приходил полный путь (images/other/test.jpg)?
Хочется, чтоб в Базе данных TV для изображений и файлов содержали в себе полный путь.
P.S.
Я понимаю, что в чанках, вызовах сниппетов и т.д., я сам могу дописывать путь к [[*img_1]] или [[+img_1]], но это, мягко говоря, совсем не устраивает.
Тема так же актуальна и в случае использования HTML-редактора.
Например, в Tinymce, если нажать соответствующую иконку для вставки изображения, то после выбора картинки получим обрезанный путь, а значит битую ссылку на картинку.
P.P.S.
Облазил весь гугл, ничего толкового не нашел, хотя подобные вопросы люди уже задавали.
Очень хотелось бы получить ответ здесь, ибо modx.pro — это очень даже сообщество…
Тестовая картинка: mysite.com/images/other/test.jpg
Как ясно из пути, основная директория для изображений — images
Чтоб было удобней обращаться к изображениям и не давать другим пользователям возможность видеть другие директории, создаю Источник файлов..
1) Создаю источник файлов
Имя: Images
basePath: images/
basePathRelative: Да
baseUrl: images/
baseUrlRelative: Да
2) Создаю TV
Имя: img_1
Тип ввода: Изображение
Источники файлов: Images
Так же указываю для каких шаблонов доступен этот TV
3) Создаю ресурс, в TV поле «img_1», выбираю изображение test.jpg
И, по идее, в TV поле «img_1» должен прийти следующий текст:
images/other/test.jpg
но, к моему сожалению, туда приходит только:
other/test.jpg
Причем TV поле отлично отрабатывает привью для этой картинки.
Вопрос многоуважаемому сообществу!
Как сделать так, чтоб в TV поле «img_1», приходил полный путь (images/other/test.jpg)?
Хочется, чтоб в Базе данных TV для изображений и файлов содержали в себе полный путь.
P.S.
Я понимаю, что в чанках, вызовах сниппетов и т.д., я сам могу дописывать путь к [[*img_1]] или [[+img_1]], но это, мягко говоря, совсем не устраивает.
Тема так же актуальна и в случае использования HTML-редактора.
Например, в Tinymce, если нажать соответствующую иконку для вставки изображения, то после выбора картинки получим обрезанный путь, а значит битую ссылку на картинку.
P.P.S.
Облазил весь гугл, ничего толкового не нашел, хотя подобные вопросы люди уже задавали.
Очень хотелось бы получить ответ здесь, ибо modx.pro — это очень даже сообщество…
Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Логика MODX построена так, что при работе с TV система смотрит на у источника файлов.
После этого берет этот baseUrl и дописывает туда значение из img_1.
Текстовые редакторы в modx делают по-иному. При добавлении картинки в контент — также смотрят на baseUrl, но уже при выборе картинки дописывают baseUrl автоматом. В итоге при вставке того же TinyMCE у Вас вставится автоматически.
Примерно через 1,5 часа после опубликования своего вопроса, я и сам обратил внимание, на то, что при работе с tv image, modx старается вставлять перед tv недостающий путь, добавляя baseUrl.
Учитывая, что pdoTools — сила, пришлось поискать как там решается вопрос с недостающим baseUrl при работе с TV
Так что, примерно через пол часа, в официальном мануале обнаружил еще и предусмотренный для этих случаев параметр "&prepareTVs".
Вопрос можно отметить как решенный, хоть и косвенно!
Но, все же, учитывая, что вопрос стоял: я решил поискать решения еще.
Мне хочется, чтоб в Базе данных TV для изображений и файлов содержали в себе полный путь.
Так что стал экспериментировать…
И как вариант решения, пока остановился на этом, в силу его простоты:
1) Создаю источник файлов
Имя: Images
basePath:
basePathRelative: Да
baseUrl:
baseUrlRelative: Да
allowedFileTypes: jpg,jpeg,png,gif
imageExtensions: jpg,jpeg,png,gif
skipFiles: .svn,.git,_notes,nbproject,.idea,.DS_Store,core,manager,assets,connectors,css,js
То есть, медиа источник «Images» будет отбращаться к корню сайта.
Но благодаря параметру «skipFiles», запретил показ папок: core,manager,assets,connectors,css,js
Ну а чтоб не было видно системных файлов и файлов-скриптов (.htaccess,config.core.php,index.php,robots.txt), то в параметре «allowedFileTypes» указываем, выводить только картинки.
Осталось решить вопрос, чтоб пользователь, использующий источник «Images», не мог загружать картинки в корень сайта. Для этого создаем плагин, который любезно предоставил Николай Ланец.
Теперь пользователь (тот же контент-менеджер), сможет видеть конкретную папку (в моем случае «images») с ее содержимым, ну а при выборе изображения в TV будет сохраняться полный путь.
При сохранении документа плагин проверяет встречается ли имя нужной директории в папке, если нет, то дописывает в ТВ нужную директорию. Кстати, даже после дописанной директории в админке превью также выводится.
Он не проверят на то, заполнен ли конкретный TV и сразу добавляет «images/»
В результате, если пользователь не заполнил это TV, в журнал ошибок придет что-то похожее на:
К тому же этот код не универсален. Например, здесь приходится жестко прописывать $directory.
Так же плагину можно указать только один TV ($tvName), а ведь похожих TV можете быть много.
Возможно стоит указать, чтоб переменная $directory получала автоматом baseUrl
А переменная $tvName имела тип массив…
У меня сейчас 3k ресурсов с полным путем. Но я хочу изменить источник файлов и теперь там будет просто название файла. Просто капец как раздражает это. Почему из коробки не сделать опцию показывать полный путь, не понимаю.
И вот не могу понять как baseUrl достать…