4.875 1 1 1 1 1 1 1 1 1 1 Rating 4.88 (4 Votes)

Попытка разработчиков в Джумле 3 решить проблему с атрибутом rel="canonical" окончилась фиаско.

Поэтому, сделаем возможность прописать rel="canonical" для каждого материала.

 

В джумле существует куча полей которые я никогда не прописываю, но которые могут выводить информацию в мета тегах, это:

<meta name="rights" content="авторские права" />
<meta name="author" content="автор" />
<meta name="xreference" content="внешняя ссылка" />
<meta name="keywords" content="ключи">

Я решил использовать одно из ненужных полей для вывода ссылки на каноническую страницу:

<link rel="canonical" href="/" />

Мой выбор пал на мета-тег keywords, потому что он есть во всех внешних компонентах (особено меня интересова JoomGallery).

Итак, для того что бы сделать настраиваемый и управляемый рел каноникал нужно открыть файл head.php, находящийся по адресу:

/libraries/joomla/document/html/renderer

Найти вот такой код:

// Generate META tags (needs to happen as early as possible in the head)
		foreach ($document->_metaTags as $type => $tag)
		{
			foreach ($tag as $name => $content)
			{
				if ($type == 'http-equiv' && !($document->isHtml5() && $name == 'content-type'))
				{
					$buffer .= $tab . '<meta http-equiv="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
				}
				elseif ($type == 'standard' && !empty($content))
				{
					$buffer .= $tab . '<meta name="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
				}
			}
		}




И заменить на этот:

// Generate META tags (needs to happen as early as possible in the head)
		foreach ($document->_metaTags as $type => $tag)
		{
			foreach ($tag as $name => $content)
			{
				if ($type == 'http-equiv' && !($document->isHtml5() && $name == 'content-type'))
				{
					$buffer .= $tab . '<meta http-equiv="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
				}
				elseif ($type == 'standard' && !empty($content))
				{
//canonical
                if ($content) {
                if ($name=='keywords') {
                $buffer .= $tab . '<link rel="canonical" href="' . htmlspecialchars($content) . '" />' . $lnEnd; 
                continue;
                }
					$buffer .= $tab . '<meta name="' . $name . '" content="' . htmlspecialchars($content) . '" />' . $lnEnd;
					}
				}
			}
		}




Теперь, если нужен любой рел-каноникал, мне достаточно прописать его в поле «Мета-тег Keywords».

P.S. Метод так же работает в Joomla 2.5

P. P.S. При обновлении Джумлы файл head.php, обновиться. Поэтому сделайте дубль и после замените его.

Сказать спасибо лучше кнопками:

Комментарии   

0 #9 Charis 14.08.2018 20:58
I'm curious to find out what blog platform you're using?

I'm experiencing some small security problems with my latest website and I would like to find something more secure.
Do you have any suggestions?

my homepage: Www.pediascape.org/pamandram/index.php/User:LillieMcEncroe9: http://www.bearingwarehouse.com/__media__/js/netsoltrademark.php?d=www.pediascape.org%2Fpamandram%2Findex.php%2FUser%3ALillieMcEncroe9
Цитировать
0 #8 Angeline 11.08.2018 09:10
These are genuinely enormous ideas in concerning blogging.
You have touched some pleasant things here. Any way keep up wrinting.


My homepage: http://printstickers.pp.ua/tag/naklejki-raspechatki/: http://115.159.160.72/discuz/upload/home.php?mod=space&uid=29717&do=profile&from=space
Цитировать
0 #7 Владимир 04.08.2018 05:44
Если кому-то нужно, в Joomla 3.8.10 этот файл был обнаружен в другом расположении: /libraries/src/Document/Renderer/Html
Цитировать
+1 #6 Сергей 05.08.2017 18:52
А что же будет со страницами, где в поле "keywords" введены именно ключевые слова?
Цитировать
0 #5 Оксана 04.07.2017 06:49
Заменила код как указано в данной статье, ввожу ссылку в поле «Мета-тег Keywords»в пункте меню Joomla: после сохранения «Мета-тег Keywords» остается чистым, ничего не меняется! что делаю ни так? :sad:
Цитировать
+1 #4 Платон 15.03.2017 06:58
Вопрос не решен! :lol: ..Как категорично.
Бля, чел поделился отличной идеей. А самому поискать где этот файл находиться в новой джумле, что религия не позволяет?
Цитировать
-1 #3 Игорь 14.03.2017 18:37
В папке head.php ничего подобного больше нет, Joomla 3.6.5.!!! вопрос не решен!
Цитировать
0 #2 Сергей 07.03.2017 11:40
В папке head.php ничего подобного больше нет, Joomla 3.6.5.
Цитировать
0 #1 Аркадий Андреевич AAndreevich 23.07.2016 12:40
Спасибо! Избавил думать :D
Цитировать

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


Защитный код
Обновить

Feedburner
Поиск
Новые материалы
Последнии Комментарии