Каждому пользователю отдельная папка для изображений в Joomla

Для одного из проектов понадобилось сделать форму добавления материалов. Так же нужно было добавить поле с intro картинкой. При выборе изображения у нас отображается общая папка для всех пользователей, что не есть хорошо, т.к. каждый сможет посмотреть фото других пользователей. Попытаемся это исправить.

К сожалению, придется затронуть исходники компонента. При обновлении код может затереться, придется его заново прописывать.

1. Для начала надо настроить медиа-менеджер. Заходим в его настройки

Окно настроек медиа-менеджера

 

2. В «Путь к каталогу с изображениями» прописываем нужную папку, где будут лежать файлы для каждого отдельного пользователя и в конце добавляем /$id.

Идея такая — мы будем искать строку /$id и менять ее на id пользователя.

3. Отправляемся к файлу /components/com_media/media.php. В joomla 3 используется один файл для админки и сайта, править надо /components/administrator/com_media/media.php.

Ищем строку

После нее добавляем

Здесь мы считываем параметр, который указали в настройках. Заменяем $id на id текущего пользователя и переписываем значение параметра.

4. После тестирования обнаружилось, что после того, как изображение загружено и мы хотим его сменить — у нас некорректно отображается список файлов в папке. (для joomla 3 этот пункт пропускаем)

Поправить это можно в файле /libraries/joomla/form/fields/media.php

После

Добавляем

Все!

Недостаток в данном случае, что ограничение получают абсолютно все пользователи.


  • Lex

    Неплохо, может и с третьей прокатить. Но как быть с к2, туда ведь тоже прикрутить рут нужно, подправить медиа.пхп в папке контроллерс компонента. Есть соображения?

    • Delfi

      Увы, но с K2 очень давно не работал, не смогу подсказать, как мне кажется, там куда более сложнее реализовать, т.к. все таки конструктор.

  • Topis Started

    Получается что удалять нельзя? Пробовал менять права, ничего не происходит.

    • Delfi

      Удалять должно быть можно. Сейчас не могу сориентировать, но возможно, где-то нужно подправить скрипт, который скорей всего при удалении учитывает старые пути.
      Надо смотреть логи ошибок при удалении, что в них пишется.

  • topicstarted

    Как в 3.22 сделать как же?

    • Delfi

      Поставил сейчас для теста. Как я понял, нужно делать правки только в одном файле.

      Вместо /components/com_media/media.php идем в /administrator/components/com_media/media.php, т.е. они объединили код в один. Однако, тогда и в админке будет привязка к пользователю.

      А файл /libraries/joomla/form/fields/media.php вообще убран. Но без него работает и так. Попробовал вставить картинку — все сработало и так.

  • virtschool inua

    спасибо, то решение которое и искал, все получилось )