Как давно Вы знакомы с CMS Joomla? Это был риторический вопрос, а знаете ли вы, что данная CMS буквально кричит всем и каждому что Ваш сайт использует для своего функционирования именно Joomla? Наверняка об этом знает не каждый, но в этом легко можно убедиться. Если посмотреть код страницы, то между тегами <head></head> вы обнаружите вот такую надпись:
<meta name="generator" content="Joomla! - Open Source Content Management" />
что такое meta name generator
meta name="generator" это необязательный метатег информационного характера, который сообщает при помощи какой CMS (или программы) был сгенерирован HTML код страницы. Пользы и смысловой нагрузки от него практически нет.
Зачем удалять надпись meta name="generator" в Joomla 3
Вроде бы ничего особенного надпись как надпись, зачем вообще её удалять? Вариантов множество, во-первых это лишний мусор на странице, во-вторых благодаря данной строке любой желающий может узнать движок Вашего сайта, и мало ли чего ему взбредет в голову.
Существует и другое мнение, которое я называю из области фантастики, якобы поисковые системы не любят сайты, написанные с использованием бесплатных CMS (коей является Joomla) и специально занижают их позиции в поисковой выдаче. Это конечно тот еще бред, но я не мог им не поделиться.
А теперь перейдем к основной части статьи – как убрать meta name="generator" в Joomla 3. Методов как всегда несколько, от банального редактирования файлов ядра до использования специальных классов. Кроме того существуют специальные плагины позволяющие убрать мета тег generator, но использование плагинов не наш метод.
Как убрать или изменить meta name="generator" путем редактирования файлов движка
Данный метод рабочий, но не особо популярный, ибо после очередного обновления Joomla всю проделанную работу придется повторять, ведь файлы то будут перезаписаны. Если для Вас это не критично, то можете взять данный способ избавления от метатега generator на заметку.
Для начала нам необходимо найти файл, отвечающий за формирование блока head сайта на Joomla. Данный файл для Joomla версии 3.8.х находится по пути /libraries/src/Document/Renderer/Html и называется HeadRenderer.php. Открываем данный файл и пролистываем до 124 строки, там видим следующий код:
Тут можно поступить двумя способами, либо полностью удалить вышеуказанный код:
$generator = $document->getGenerator(); if ($generator) { $buffer .= $tab . '<meta name="generator" content="' . htmlspecialchars($generator, ENT_COMPAT, 'UTF-8') . '" />' . $lnEnd; }
Либо написать свой текст в поле generator, чтобы получилось, например вот так:
$generator = $document->getGenerator(); if ($generator) { $buffer .= $tab . '<meta name="generator" content="Joom4all CMS" />' . $lnEnd; }
В таком случае сгенерированный код страницы будет выглядеть следующим образом:
Как видите, метатег generator никуда не исчез, мы просто присвоили ему новое значение и уже мало кто сможет догадаться, что сайт написан на Joomla.
Кстати если у Вас более старая версия Joomla то по вышеуказанному пути Вы не найдете файл отвечающий за формирование head документа. Ранее он находился в папке /libraries/joomla/document/renderer/html и назывался head.php.
Убираем meta name="generator" используя класс JDocument
В отличие от предыдущего способа данный метод является более предпочтительным, хотя бы в плане того, что после обновления движка Joomla изменения никуда не исчезнут. В этот раз нам предстоит редактировать уже индексный файл нашего шаблона.
Переходим в папку текущего шаблона и открываем файл index.php. Теперь необходимо определиться будем ли мы удалять meta name="generator" либо подставлять ему свое значение. Какой бы из вариантов Вы не выбрали, для начала нам потребуется получить объект класса JDocument (если этого не было сделано в вашем шаблоне). Для этого в самом начале индексного файла после строки defined('_JEXEC') or die; вставляем следующий код:
$doc = &JFactory::getDocument();
Конечно, очень вероятно, что в вашем шаблоне эта строка уже есть, за некоторым исключением. А далее для того чтобы скрыть мета тег generator сразу за этой строкой необходимо прописать следующую конструкцию:
$doc->setGenerator(null);
Либо можно присвоить генератору свои данные следующим образом:
$doc->setGenerator('Joom4all CMS');
Результат в зависимости от шаблона должен получиться примерно таким:
Вот и все, как Вы сами можете заметить использовать класс JDocument гораздо удобнее, с его помощью можно не только скрывать метатег generator, но и добавлять любую другую информацию в head страницы сайта на Joomla 3. Но об этом мы поговорим в следующий раз.