• Изменено

Есть ли возможность изменить путь к медиафайлам в October CMS?
Мне нужно чтобы изображения в разделе Медиафайлы и в редакторе (Вставить медиа-изображения) подтягивались из папки images расположенной в корне сайта.

В файле \config\cms.php нашёл такую настройку:

 'storage' => [

        'uploads' => [
            'disk'   => 'local',
            'folder' => 'uploads',
            'path'   => '/storage/app/uploads',
        ],

        'media' => [
            'disk'   => 'local',
            'folder' => 'media',
            'path'   => '/storage/app/media',
        ],

    ],

Изменил для медиа
'path' => '/images'
но в редакторе и в разделе Медиафайлы подтягивается для выбора директория из старого пути: /storage/app/media/
Можно это как то исправить?

  • reazzon ответили на это сообщение.
  • У меня получилось подключить медиа-менеджер к папке images созданной в корне сайта. Но нужно чтобы опытные люди посмотрели нет ли в этом решении ошибки с безопасностью, т.к. я ларавел не знаю и только что впервые открыл через гугл его документацию.

    Пошагово как я это сделал:

    1. В файле \config\filesystems.php в раздел Filesystem Disks добавляем новый драйвер, я его назвал 'images' и указал в его настройке 'root' => base_path(), то есть корень сайта, вместо дефолтного storage_path(). Вставил вот так:
        'disks' => [
    
            'local' => [
                'driver' => 'local',
                'root'   => storage_path('app'),
            ],
    
            'images' => [
                'driver' => 'local',
                'root'   => base_path(),
            ],

    1. В файле '\config\cms.php' для настройки media указал следующие значения:
    'storage' => [
    
            'uploads' => [
                'disk'   => 'local',
                'folder' => 'uploads',
                'path'   => '/storage/app/uploads',
            ],
            
            'media' => [
                'disk'   => 'images',
                'folder' => 'images',
                'path'   => '/images',
            ],
    
        ],

    Так как три раза подряд применяется images, с этим может быть неразбериха.

    • Для 'disk' указываем название драйвера, который добавили в первом шаге
    • Для 'folder' - папка с медиа-файлами
    • Для 'path' - путь к папке с медиа-файлами.

    Так как у меня для медиа-файлов папка images в корне сайта, то для 'folder' и 'path' получились соответствующие значения. Наверное лучше драйвер называть что то типа mediamanager, чтоб не путаться.


    1. И в конце не забудьте в файл '.htaccess' (находится в корне сайта) в раздел White listed folders добавить исключение для вашей папки:
      RewriteCond %{REQUEST_FILENAME} !/images/*
      При этом, наверное, можно удалить или закомментировать строку:
      RewriteCond %{REQUEST_FILENAME} !/storage/app/media/.*

    Файлы не обязательно загружать через медиа-менеджер, можно через ftp залить - медиа-менеджер их увидит.
    Спасибо за помощь! Я сам к этому решению не пришёл бы.

    Когда-то хотел сделать также, но решение не нашел. Сеошник так говорит сделать?

    • Koresh ответили на это сообщение.

      Koresh Все ваши старые файлы останутся где и были, все новые файлы будут загружаться в новую директорию, которую вы указываете в конфиге.

      Чтобы ваша новая директория была доступна для публичного просмотра, не забудьте в .htaccess в раздел White listed folders добавить исключение для вашей папки. Например:

      RewriteCond %{REQUEST_FILENAME} !/images/*
      • Koresh ответили на это сообщение.

        Boarworm Нет, не сеошник. Я как увидел October - мне понравилось, теперь сайт с джумлы на octobercms переношу. Статьи импортнул в Rain.Blog, папку images с изображениями скопировал в корень, чтоб пути в src не переписывать. Теперь ищу как медиаменеджер к этой папке подключить.

        • Изменено

        reazzon Блин, что то не получается у меня. В htaccess правило добавил, в \config\cms.php исправил так:

        'media' => [
                'disk'   => 'local',
                'folder' => '/images',
                'path'   => '/images',
            ],

        открываю медиаменеджер - там пусто. Кеш чистил. Неправильно параметр folder прописал?

        • reazzon ответили на это сообщение.

          Koresh

          Не надо менять folder

          достаточно изменить path

          'media' => [
              'disk'   => 'local',
              'folder' => 'media',
              'path'   => '/images',
          ],
          • Koresh ответили на это сообщение.
            • Изменено

            Koresh Поправочка, folder нужен:

            'media' => [
                'disk'   => 'local',
                'folder' => 'images',
                'path'   => '/images',
            ],

            И еще дополнение: файлы в папке не появятся в медиаменджере, их нужно будет перезалить через админку. Достаточно выделить все файлы и просто перетащить в медиаменеджер и пойти пить чай)

            reazzon Так не получается, если только путь изменить.
            Я через ftp загрузил в корень сайта папку images в которой изображения и папки с изображениями.
            Когда поставил October, ради теста чтоб посмотреть куда сохраняются изображения загрузил одну картинку. Теперь после изменений который вы показали выше у меня в разделе Медиафайлы видно эту загруженную картинку. Но когда я её выделяю кликом и справа в предпросмотре нажимаю Публичный адрес, то открывается PAGE NOT FOUND по адресу /images/kartinka.jpg

            Вот как бы туда папку images затолкать, чтоб он её увидел...

            • reazzon ответили на это сообщение.

              Koresh попробуй вариант чуть ниже. где 'folder' => 'images'. Потом загрузи картинку, и посмотри.

              • Koresh ответили на это сообщение.

                reazzon Спасибо за помощь, я понял - система должна проиндексировать файлы.
                Ща проверю перезаливом изображений заново.

                • Изменено

                reazzon Нет, так не получается - всё равно загружает по пути /storage/app/media.

                Я вот нашёл откуда параметр 'disk' берётся. В файле '\config\filesystems.php' есть раздел Filesystem Disks где настройки для 'disk'.
                Если не ошибаюсь, сейчас берётся это:

                'disks' => [
                
                        'local' => [
                            'driver' => 'local',
                            'root'   => storage_path('app'),
                        ],

                Как я понял, в этот массив нужно добавить свой драйвер, что то типа:

                'images' => [
                        'driver' => 'local',
                        'root'   => storage_path('app'),
                    ],

                я вот только сомневаюсь что прописывать для root и нужно ли изменять для driver.

                Ну а потом уже настройку с которой начали, исправлять как то так:

                'media' => [
                    'disk'   => 'images',
                    'folder' => 'images',
                    'path'   => '/images',
                ],

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

                Пошагово как я это сделал:

                1. В файле \config\filesystems.php в раздел Filesystem Disks добавляем новый драйвер, я его назвал 'images' и указал в его настройке 'root' => base_path(), то есть корень сайта, вместо дефолтного storage_path(). Вставил вот так:
                    'disks' => [
                
                        'local' => [
                            'driver' => 'local',
                            'root'   => storage_path('app'),
                        ],
                
                        'images' => [
                            'driver' => 'local',
                            'root'   => base_path(),
                        ],

                1. В файле '\config\cms.php' для настройки media указал следующие значения:
                'storage' => [
                
                        'uploads' => [
                            'disk'   => 'local',
                            'folder' => 'uploads',
                            'path'   => '/storage/app/uploads',
                        ],
                        
                        'media' => [
                            'disk'   => 'images',
                            'folder' => 'images',
                            'path'   => '/images',
                        ],
                
                    ],

                Так как три раза подряд применяется images, с этим может быть неразбериха.

                • Для 'disk' указываем название драйвера, который добавили в первом шаге
                • Для 'folder' - папка с медиа-файлами
                • Для 'path' - путь к папке с медиа-файлами.

                Так как у меня для медиа-файлов папка images в корне сайта, то для 'folder' и 'path' получились соответствующие значения. Наверное лучше драйвер называть что то типа mediamanager, чтоб не путаться.


                1. И в конце не забудьте в файл '.htaccess' (находится в корне сайта) в раздел White listed folders добавить исключение для вашей папки:
                  RewriteCond %{REQUEST_FILENAME} !/images/*
                  При этом, наверное, можно удалить или закомментировать строку:
                  RewriteCond %{REQUEST_FILENAME} !/storage/app/media/.*

                Файлы не обязательно загружать через медиа-менеджер, можно через ftp залить - медиа-менеджер их увидит.
                Спасибо за помощь! Я сам к этому решению не пришёл бы.

                • reazzon ответили на это сообщение.
                • reazzon оценил это.
                  • Изменено

                  Koresh Странно что у тебя от моего решения файлы не загружались в /images. Потому-что перед тем как это отписать тут, проверил у себя. В любом случае молодчина что довел до победного конца!

                  Koresh Но нужно чтобы опытные люди посмотрели нет ли в этом решении ошибки с безопасностью, т.к. я ларавел не знаю и только что впервые открыл через гугл его документацию.

                  Ты все сделал правильно.

                  • Koresh ответили на это сообщение.

                    reazzon Странно что у тебя от моего решения файлы не загружались в /images. Потому-что перед тем как это отписать тут, проверил у себя. В любом случае молодчина что довел до победного конца!

                    Они не могли загружаться в корневую images, там ведь прописан путь storage_path('app'). Ссылка на изображении Да, менялась будто изображение находится в этой корневой папке, но при открытии выдавалась ошибка 404. Я сам сначала облажался думая что заработало - на радостях начал файлы заливать.
                    Я гуглянул storage_path и мне сразу дало доки ларавела, где сказано что это функция указывающая на путь в папку storage.
                    Там же в доках рядышком есть функция base_path() - она ведёт в корень сайта.
                    Короче смекнул я что нужно функцию поменять в пути. Правда я ещё комментарии в конфигах перед данными настройками перевёл, чтоб понять что там подсказывают.

                    • reazzon ответили на это сообщение.
                    • reazzon оценил это.

                      Koresh Теперь понятно, спасибо за разбор ситуации.

                      2 года спустя

                      Спасибо сделал то же самое у себя по инструкции
                      Только не понятно почему нужно именно media использовать и нельзя назвать по своему (хотя может это и не надо)