Парадокс, конечно, но это возможно. Казалось бы, причем тут класс ядра для работы со строками url. Но именно он может помочь нам в Joomla 4. Для улучшения скорости рендера страницы в браузере рекомендуют указывать атрибуты width и height для изображений. Естественно, удобно их заполнять автоматически. Подойти к решению задачи можно с разных сторон. Нужно помнить о том, что не стоит грузить при её решении сервер дополнительными обращениями, так как это будет влиять на скорость рендера страницы на стороне сервера. Информация из данной заметки относится только к компонентам, использующим конструктор форм Joomla - Form (ex JForm), а так же использующим для вывода API Joomla. В коде для рендера может использоваться сразу класс HTMLHelper с его методом image, либо с помощью стандартных или переопределённых layouts. Layout - это макет вывода, который может использоваться в самых разных частях сайта. По своей логике использования он схож с trait в php - "оторванный от контекста" фрагмент логики. В случае с layout - вывод с преобработкой. Часто внутри layout конечный рендер изображения происходит не простым echo '<img src='.$img_src.'/>', а тем же методом HTMLHelper::image(); Метод производит рендер изображения со всеми переданными ему атрибутами. Очень удобно с ним работать следующим образом: Метод HTMLHelper::image принимает на вход: путь до изображения; атрибут alt для него; дополнительные атрибуты, какие Ваша душа пожелает. 3-й параметр для всех остальных атрибутов может быть как просто строкой, так и массивом. Таким образом можно добавить массово любые атрибуты для изображений, например, data-атрибуты или уникальные id, которые будут использоваться на js-фронте. В Joomla 3 поле типа media для выбора картинок в панели администратора заполняется относительным путём до файла вида images/my_file.jpg. Для определения ширины и высоты файла картинки в Joomla 3 можно было использовать следующую конструкцию: Функция getimagesize возвращает размеры изображения в разных форматах, которые уже можно передать в HTMLHelper. Но и сама Joomla 3 в целом не поддерживала формат webp, да и функция getimagesize начала поддерживать этот формат только с php 7.1, но не всегда верно обрабатывать файл, поэтому в сети немало решений с использованием imagecreatefromwebp. В то время, как этот формат является одной из рекомендаций по оптимизации скорости загрузки сайта Google Page Speed. В Joomla 4 же стандартный медиа-менеджер вставляет в поля не просто путь изображения, а путь, дополненный параметрами вида images/headers/blue-flower.jpg#joomlaImage://local-images/headers/blue-flower.jpg?width=700&height=180 Когда вышла Joomla 4 многие (в том числе и я) не поняли, баг это или фича 🤣. GET-параметры к изображению не отображают другую картинку, но для поисковых систем это другой url, а следовательно другой файл. У СЕО-специалистов начинают шевелиться волосы... Время показало, что это скорее фича, просто нужно уметь её готовить. Вариант получения размеров изображения при каждой генерации страницы утяжеляет рендер страницы в целом. Поэтому логично определить размеры изображения заранее и хранить их в базе, вместе с информацией о самом изображении (пути к нему).  Именно таким образом сейчас и работает Joomla 4. Когда Вы в админке выбираете изображение - медиа-менеджер определяет размер картинки и сохраняет в виде GET-параметров к URL картинки.  В своих макетах или layout Вы можете работать с картинками следующим образом. Для этого в Joomla 4 в  HTMLHelper появился метод cleanImageURL: Поскольку images/headers/blue-flower.jpg#joomlaImage://local-images/headers/blue-flower.jpg?width=700&height=180 по сути является url - мы можем работать с ним с помощью класса ядра Joomla Uri. Таким образом нам будет удобно получить любой параметр из этой строки. Для этого нам нужно: получить часть строки после символа #; создать новый класс Joomla\CMS\Uri\Uri; получить нужный параметр url с помощью метода getVar('attr_name'). Вот таким образом можно оптимизировать сайт на Joomla 4, указав размеры картинок в Ваших расширениях и при этом не грузить лишними обращениями сервер. Минуса два: Если Вы - не разработчик, или не умеете немного в PHP, полностью зависите от готовых расширений, то Вам данная инструкция вряд ли поможет. Не все разработчики Joomla учитывают подобные нюансы и используют API Joomla в работе. Но, если Вы умеете переопределять макеты в Joomla, то с помощью этой инструкции Вы можете сделать многое. Замена файлов изображений по FTP. Если Вы любите менять картинки не через админку, а накатывать сверху по FTP новые файлы, оставив при этом старые названия, то новые размеры файла в базе данных не появятся сами. Хорошо, если Вы следите за размерами файлов и они не изменились или изменились не критично. Но если это совершенно другое изображение, других размеров и пропорций, то лучше делать замену через админку. Спустя некоторое время после публикации статьи на Хабре я продолжил изучение кода Joomla и статью теперь написал бы и назвал бы по-другому. Но уж как есть.  Метод HTMLHelper::image() под капотом вызывает layout joomla.html.image. Это означает, что рендер изображения происходит с помощью файла layouts/joomla/html/image.php (который Вы можете, кстати, переопределить в своём шаблоне и вся Joomla будет будет использовать Ваш файл, а не стандартный). В этом файле вызывается тот же самый метод HTMLHelper - cleanImageURL. То есть то, что я предложил в тексте выше сделать ради  получения атрибутов width и height - по сути двойная работа, так как Joomla сама делает то же самое.  НО, единственное отличие от подхода, описанного в статье от того, что делает Joomla с изображениями в ядре - это то, какой путь для <img src="..."> приходит. Сама Joomla отдаёт путь так, как получила его из базы данных. То есть с #joomlaImage:://и-так-далее. В то время как подход, описанный мною в статье выводит только путь к изображению. С точки зрения СЕО лишние хвосты для изображений на картинки никак не повлияют. Поэтому какой именно подход использовать - решать Вам 😎 Предложения по улучшению статьи и замечания приветствуются. форум русской поддержки Joomla. интернет-портал Joomla-сообщества. Сообщество Joomla на VC. чат сообщества «Joomla! по-русски». Joomla для профессионалов, разработчики Joomla. Новости о Joomla! и веб-разработке по-русски. Новости о Joomla! и веб-разработке по-английски. вакансии и предложения работы по Joomla: фуллтайм, частичная занятость и разовые подработки. Размещение вакансий здесь. Англоязычный чат сообщества. Mattermost: Сервер - международный (англоязычный) чат Joomla Community, в котором собрались представители из Европы и Азии. Среди них многие имена мы видим среди разработчиков ядра Joomla, членов департаментов Joomla, в качестве авторов статей в Joomla Community Magazine.  Для того, чтобы присоединиться, нужно иметь аккаунт на https://identity.joomla.org/ - центр идентификации Joomla. Вход в мессенджер происходит с помощью этого портала. В сообществе.  Joomla-разработчик (WebTolk). Муж. Отец 3 детей.