Давно я таким не занимался, а тут пришлось. Нередко сеошники измудряются и добавляют иконки как только могут, стараясь добиться результата. В то время как в Joomla есть прекрасный и понятный механизм добавления фавиконок - метод addHeadLink() в шаблоне.
// Это файл index.php вашего шаблона Joomla
$this->addHeadLink(
href: '/favicon.svg',
relation: 'icon',
relType: 'rel',
attribs: [
'type' => 'image/svg+xml',
'sizes' => 'any',
]
);
$this->addHeadLink(
href: '/favicons/favicon-32x32.png',
relation: 'icon',
relType: 'rel',
attribs: [
'type' => 'image/png',
'sizes' => '32x32',
]
);
$this->addHeadLink(
href: '/favicons/favicon-16x16.png',
relation: 'icon',
relType: 'rel',
attribs: [
'type' => 'image/png',
'sizes' => '16x16',
]
);
$this->addHeadLink(
href: '/favicons/apple-touch-icon.png',
relation: 'apple-touch-icon',
relType: 'rel',
attribs: [
'sizes' => '180x180',
]
);
$this->addHeadLink(
href: '/favicon.ico',
relation: 'icon',
relType: 'rel',
attribs: [
'type' => 'image/vnd.microsoft.icon',
]
);
$this->addHeadLink(
href: '/site.webmanifest',
relation: 'manifest',
relType: 'rel'
);
В PHP 8+ удобно использовать именованные аргументы и тогда сразу всё встаёт на свои места и становится понятно что за аргумент и зачем он нужен.
Традиционно Joomla собирает массивы в атрибуты, где ключ массива - это имя атрибута, а значение массива становится массивом атрибута. Удобно.