Как убрать meta name generator

Как давно Вы знакомы с 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 в Joomla 3.8

Тут можно поступить двумя способами, либо полностью удалить вышеуказанный код:

$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 3.8.х

Как видите, метатег 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');

Результат в зависимости от шаблона должен получиться примерно таким:

Убираем meta name="generator" _cke_saved_name="generator" используя класс JDocument

Вот и все, как Вы сами можете заметить использовать класс JDocument гораздо удобнее, с его помощью можно не только скрывать метатег generator, но и добавлять любую другую информацию в head страницы сайта на Joomla 3. Но об этом мы поговорим в следующий раз.

 

Добавить комментарий


Комментарии   

Елена
+1 #1 Елена 28.01.2018 13:59
Спасибо! Пригодилось
Цитировать
Joom4all
+3 #2 Joom4all 28.01.2018 15:31
Рад был помочь
Цитировать
Михаил Петров
0 #3 Михаил Петров 18.07.2018 17:35
спасибо! актуально на 2018!
Цитировать
Жора Дорфман
0 #4 Жора Дорфман 04.11.2018 16:21
- и весь х до копейки
Цитировать
Константин
0 #5 Константин 11.12.2018 04:16
Спасибо. Было полезно.
Цитировать
Алексей
0 #6 Алексей 25.12.2018 15:28
Благодарю помог с этим meta name="generator"! =)
Цитировать