X

Magento 2: Не отображаются картинки, проблемы с static контентом

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

Начнем с того, что откроем консоль разработчика в браузере (F12), перейдем на вкладку Network, перезагрузим страницу и посмотрим на url ресурсов которые не открываются.

Версионирование

Если url указывает на что-то вроде: /static/version123123123/frontend/.../image.jpg , то нужно сравнить это с тем, что у вас находится в папке /pub/static/.. очень часто бывает, что файлы лежат внутри нее, но не в /static/version123123123/frontend/, а в /static/frontend/ - это указывает на то, что в базе данных у вас установлен флаг для версионирования статического контента. Версионирование используется для того, чтобы при обновлении статического контента, использовалась новая версия, а не закешированная.

Для того, чтобы избавиться от version123123123, есть два пути, первый, подходит для случаев, когда админка не работает должным образом. В таком случае, идем в базу данных и в таблице core_config_data находим запись с значением dev/static/sign в столбце path, для этого можно использовать запрос

SELECT * FROM `core_config_data` WHERE `path` LIKE '%dev/static/sign%'

Если в столбце value установлено значение 1, то его нужно поменять на 0. Сделать это можно вот таким запросом:

UPDATE `core_config_data` SET `value`="0" WHERE `path` LIKE '%dev/static/sign%'

Если же записи нет, то ее можно добавить такой командой

INSERT INTO `core_config_data` (`scope`, `scope_id`, `path`, `value`) 
VALUES ('default', 0, 'dev/static/sign', '0');

Второй вариант, подойдет если с админкой все ок, нужно сходить вот сюда

Magento Admin -> Stores -> Configuration -> Advanced -> Developer

и изменить значение "Sign Static Files" с Yes на No

Отсутствие статического контента

Другой частой проблемой, бывает отсутствие каких-либо файлов в папке /pub/static/ или их устаревшая версия. Для того, чтобы перегенерировать файлы в этой папке, нужно выполнить следующую команду:

php bin/magento setup:static-content:deploy

В случае, если вам покажется ошибка, о том, что вы используете режим разработчика, то необходимо добавить параметр -f вот так

php bin/magento setup:static-content:deploy -f

Теперь поговорим про очистку этой папки, удалить все файлы из нее можно командой

rm -R pub/static/*
rm -R var/view_preprocessed/*

выполненяются команды из корневой директории magent-ы.

Важной особенностью является то, что эта команда не затрагивает скрытые файлы, такие как например .htaccess

Тоже самое можно сделать используя админку, если она работоспособна

System -> Tools -> Cache Management -> [Flush Static Files Cache]

Вывод

В данной статье я рассмотрел одну из самых распространенных проблем связанных с отсутствием статического контента: это отсутствие его как такового, в таком случае, его необходимо сгенерировать, а так же случае когда в настройках базы указанно использовать версионирование, а в кодовой базе оно не используется.

Категории: Magento
Тэги: magento 2staticversion