1 1 1 1 1 1 1 1 1 1 Рейтинг: 4.83 - 3 отзывов

Автоматическое добавление мета тегов в Joomla

Хочешь автоматизировать добавление метатегов? Тем, кто считает, что  ручное добавление всех  meta тегов намного лучше для сайта, чем автоматическое решение, а "ручная стирка белья лучше, чем стиральной машиной", внезапно тоже станет полезным прочитать это пособие для совершения рывка в позициях сайта. Удивитесь.

Мета Title в Joomla 3.8

Мета Тайтл и Тайтл это не одно и то же? Нет. Про meta title чуть ниже. А вот <Title> это самые главные слова для роботов на вашем сайте.

 Из этого мы и исходим, располагая <Title> как можно выше, чтобы роботы быстрее его заметили.

Для начала откройте любую статью своего сайта. И нажмите Ctrl+U. Станет виден код страницы. Например у меня блок мета тегов выглядит так:

 

<meta content="width=device-width, initial-scale=1" name="viewport">
<base href="http://rtr24/joomshopping/410-dubli-stranits-v-joomshopping" /> - опустить вниз
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="дубли в joomshopping" />
<meta name="rights" content="http://rtr24.ru" />
<meta name="author" content="Русский тракторист Игорь" />
<meta name="browser_title" content="Страницы дублей в JoomShopping убрать" />
<meta name="description" content="Как убрать дубли страниц в JoomShopping. Убрать дубли с index.php. Дубли со слешем убрать. Ссылка с www на без www." />
<meta name="generator" content="Joomla! - Open Source Content Management" />
<title>Как убрать дубли страниц в JoomShopping - RTR24.ru</title> - поднять наверх

 

Видно, что <title> располагается внизу. Итак начнем исправлять ситуацию.

Самое первое, что нужно сделать это поместить тег <title> вверх.

Идем в:

\libraries\src\Document\Renderer\Html\HeadRenderer.php и


$buffer .= $tab . '<title>' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . ' - СВОЕ СЛОВО</title>' . $lnEnd;

переносим сразу под

// Generate base tag (need to happen early)

Лучше, чтобы <title>, название статьи, <H1> и <description> - не были идентичными. Для этого достаточно разбавить их одним (несколькими словами).

По умолчанию <title> = Названию статьи. В основных настройках можно к нему прибавить название сайта. Но иногда полезно добавлять не название сайта, а какое-то другое слово. Даже то же самое название сайта, но в другой транслитерации.

Например у вас site.ru, а вы добавляете к title - сайт.ру.

Так вот, чтобы во все материалы автоматически добавлялся title с вашим словом мы и исправляем строку:

$buffer .= $tab . '<title>' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . ' - СВОЕ СЛОВО</title>' . $lnEnd;

Прописать description автоматом

Здесь мы автоматом создаем тег <description>, взяв за основу <title> и прибавив к нему слова в начале и в конце.
Если же вы руками напишите "Мета-тег Description" в статье, то вот он и станет показываться роботам.

В итоге у меня получается код:

// Generate charset when using HTML5 (should happen first)
if ($document->isHtml5())
{
$buffer .= $tab . '<meta charset="' . $document->getCharset() . '" />' . $lnEnd;
}

// Generate base tag (need to happen early)
$base = $document->getBase();

$buffer .= $tab . '<title>' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . ' - СВОЕ СЛОВО</title>' . $lnEnd;

// Don't add empty descriptions
$documentDescription = $document->getDescription();
// Если description не заполнен, то заполнится автоматически из title и слов внизу
if ($documentDescription<getTitle)
{
$buffer .= $tab . '<meta name="description" content="СВОЕ СЛОВО ' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . ' СВОЕ СЛОВО" />' . $lnEnd;
}
// Если description заполнен, то он и будет виден
if ($documentDescription>getTitle)
{
$buffer .= $tab . '<meta name="description" content="' . htmlspecialchars($documentDescription, ENT_COMPAT, 'UTF-8') . '" />' . $lnEnd;
}

И еще переношу:

if (!empty($base))
{
$buffer .= $tab . '<base href="' . $base . '" />' . $lnEnd;
}

Чуть выше:
// Generate link declarations

Чтобы получилось:

if (!empty($base))
{
$buffer .= $tab . '<base href="' . $base . '" />' . $lnEnd;
}
// Generate link declarations


Чтобы нужные метатеги были как можно выше.

Скачать готовый файл для Joomla 3.86 (для других нужно самому вписывать вышеприведенные коды).

Автоматический Мета-тег Keywords

Идем в сайт.ру\components\com_content\views\article\view.html.php

Ищем 297 строку и код:

if ($this->item->metakey)
{
$this->document->setMetadata('keywords', $this->item->metakey);
}

меняем на:

if ($this->item->metakey<1)
{
$this->document->setMetadata('keywords',$title);
}
if ($this->item->metakey>0)
{
$this->document->setMetadata('keywords', $this->item->metakey);
}


Теперь, если вы не впишите ключевые слова в "Мета-тег Keywords" - автоматически в ключах будет показано название статьи. А так как название статьи мы пишем, используя ключевые слова, то и в Мета-тег Keywords попадут именно ключевые слова.
Если же вы сами напишите ключевые слова в Мета-тег Keywords, то именно они и будут видны. А если впишите Мета-тег Keywords в пункте меню, то их и увидит робот поисковика.

 

О пользе ключевых слов в мета теге, можно спорить. Однако все сходятся в том, что вред приносит переспам ключевых слов, как в мета теге, так и в самом тексте.
Немного же ключевых слов в мета теге не помешают.

Какая длина у мета тегов

Тут нет точности. Например программа Screaming Frog SEO Spider (которой я пользуюсь и всем советую) указывает такую длину:

  • description 320
  • title 67
  • H1 70

Однако, в зависимости от того, какие слова (по количеству знаков) стоят в конце тега, их режет по разному.
И в сниппетах в основном показываются эти знаки так:

  • description 312
  • title 62

Я ориентируюсь на цифры 60 и 300, стараясь в конце разместить длинное слово.

  1. "Как же прописать метатеги: ключи и description" - скорее всего отрежется до "Как же прописать метатеги: ключи и ..."
  2. "Как прописать метатеги: ключи, description" - так и будет показан в выдаче-"Как же прописать метатеги: ключи и description".

И тут пути есть два:

  • Делать теги короче этих цифр, чтобы в выдаче, сниппет был красивым и завершенным.
  • Делать по длине на свое усмотрение. Тогда сниппеты будут резанные, но поисковики индексируют всю длину тегов и могут составить сниппет на свое усмотрение, используя слова, находящиеся далеко за обозначенными выше пределами длины.

Если делать сниппеты красивыми, то используем простую математику.

  • Например к title мы хотим добавить " - сайт.ру", то есть 10 знаков.
  • Тогда название статьи у вас должно быть не более 62-10=52 знака.
  • А к description, можете дописать (в его начале и в конце, в сумме) 312-52=260 знаков.

Вот длина названия статьи.

"Пример названия статьи 52 зн."

Тогда тайтл будет:
"Пример названия статьи 52 зн. - сайт.ру"

И пример description:

"РЕШЕНИЕ. Пример названия статьи 52 зн. - сайт.ру. Уроки JoomShopping. Создаем свой интернет-магазин легко. Сайт: сайт.ру. Тел. 555-555-555"

Автоматически подставить автора статьи

По умолчанию, автором статьи является супер администратор (или тот, кто зашел на сайт для создания материала). Но если вы впишите автора во вкладке "Публикация", то этого автора будет видеть поисковый робот.

Меняем в сайт.ру\components\com_content\views\article\view.html.php код:

if ($app->get('MetaAuthor') == '1')
{
$author = $this->item->created_by_alias ?: $this->item->author;
$this->document->setMetaData('author', $author);
}

На:

if ($app->get('MetaAuthor') == '1')
{
$author = $this->item->created_by_alias ?: $this->item->author;
$this->document->setMetaData('author', Автор);
}

Где вместо Автор - пишете того автора, который будет виден роботам, в случае если вы не пропишите явно в статье ее автора.

Все эти дополнения, для автоматического прописания мета тегов, я вношу в свою сборку "Идеальной Joomla".
Идеальная болванка Joomla

 

Посмотреть хорошее видео

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