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, обновиться. Поэтому сделайте дубль и после замените его.

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

Комментарии   

+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
Поиск
Новые материалы
Последнии Комментарии