среда, 24 февраля 2016 г.

Тег h1 в заголовках Joomla 3



Как сделать заголовки материалов Joomla в теге H1 (Кейс #6).
Многие web-мастера, работающие с Joomla и знакомые с SEO, замечали одну неприятную особенность. По умолчанию Joomla обрамляет заголовки материалов тегом H2, что, с точки зрения продвижения, является грубой ошибкой. В этом кейсе я опишу, почему так происходит и как сделать выделение заголовков тегом H1.

Почему Joomla выделяет заголовки материалов тегом H2.

Это не ошибка разработчиков, как может показаться сначала. Но это их странная логика. Разработчики Joomla отдали тег H1 для выделения заголовка пункта меню, к которому привязан материал или категория, содержащая материал. При этом если материал не привязан ни к одной категории, то его собственный заголовок все равно остается в теге H2.
Давайте разберем эту ситуацию на примере.
Например, вы создали категорию «Joomla». В этой категории у вас находятся статьи с заголовками «Статья 1» и «Статья 2». Затем вы создали пункт меню типа «блог категории» для отображения материалов категории в виде блога на сайте. В настройках пункта меню вы указали заголовок с целью показать его на странице блога категории:
Заголовок пункта меню
Что в результате происходит? На странице блога категории показан заголовок пункта меню в теге H1 и заголовки материалов, которые идут списком, в теге H2. Это правильно.
Но если вы перейдете на страницу материала «Статья 1», то увидите заголовок пункта меню «Joomla» в теге H1 и заголовок материала «Статья 1» ниже, в теге H2.
Таким образом, получается, что все материалы категории «Joomla» будут иметь заголовок H1 в виде текста «Joomla». На мой взгляд, это грубейшая ошибка во внутренней оптимизации сайта.
Дополнительным неприятным сюрпризом может стать то, что заголовок пункта меню «Joomla» нельзя оставить отображаться только на странице блога категории. Его отображение регулируется единственной настройкой, которая включает или отключает этот заголовок и на странице блога категории и на страницах материалов категории.
Без изменений в коде эти проблемы можно решить только одним способом – создать для каждого материала категории отдельный пункт меню. В случае сайтов-визиток это может быть оправданно, но если у вас десятки или сотни материалов, этот способ не подойдет.

Делаем заголовки материалов Joomla в теге H1.

К счастью, эта ошибка исправляется легко, быстро и без использования хаков. Порядок действий:

1. Переопределение макета материала Joomla в используемом шаблоне.

Нам нужно внести изменение в макет материала Joomla. Чтобы это изменение не было затерто при обновлениях Joomla, необходимо переопределить макет материала в используемый вами шаблон.
Находим файл:
components/com_content/views/article/tmpl/default.php
и копируем его в:
templates/ВАШ_ШАБЛОН/html/com_content/article/
Если каких-то из указанных каталогов в вашем шаблоне нет, то создаем их вручную.

2. Внесение изменений в код макета материала.

После того, как макет материала скопирован в шаблон, вносим в него изменения.
Открываем файл:
templates/ВАШ_ШАБЛОН/html/com_content/article/default.php
через notepad++ или другой редактор, подсвечивающий код.
В начале файла находим строчку:

1
$user = JFactory::getUser();

и вставляем после нее:

1
2
$input = JFactory::getApplication()->input;
$view = $input->get('view');

Далее, чуть ниже, находим условие:

1
<?php if ($this->params->get('show_page_heading')) : ?>

и изменяем его на:

1
<?php if ($this->params->get('show_page_heading') && ($view !== 'article')) : ?>

И, наконец, находим теги H2:

1
2
3
4
5
<h2 itemprop="name">
                <?php if ($params->get('show_title')) : ?>
                                <?php echo $this->escape($this->item->title); ?>
                <?php endif; ?>
</h2>

и изменяем их на H1:

1
2
3
4
5
<h1 itemprop="name">
                <?php if ($params->get('show_title')) : ?>
                                <?php echo $this->escape($this->item->title); ?>
                <?php endif; ?>
</h1>

Что мы сделали? Мы добавили проверку в коде, которая отключает заголовок пункта меню на страницах материалов Joomla, и изменили обрамление заголовка материала сH2 на H1.
Если у вас на сайте заголовки материалов на страницах материалов все еще обрамлены тегом H2, советую применить этот кейс. Поисковые системы оценят.


Сделать H1 заголовки статей в Joomla

Первое что нужно понять. В Joomla тег <H1> стоит на имени сайта. И выводится со всеми статьями, а это плохо для сео оптимизации. Поэтому нужно
  1. убрать тег <h1> из шапки сайта
  2. сделать так, чтобы тег <h1> выводился с названием статьи (не любишь сложностей? сделай это с помощью плагина)

денежный трактор

Сделать H1 заголовки статей в Joomlа 2, Joomla 3

1. В файле index.php  (сайт/templates/шаблон) меняем h1 и h2 на p.

Было
<h1 class="stal-logo-name"><a href="/<?php echo $document->baseurl; ?>/">недвижимость Москвы</a></h1>
<h2 class="stal-logo-text">«Сталлоне» - квартиры и дома Москвы и Подмосковья</h2>

Стало
<p class="stal-logo-name"><a href="/<?php echo $document->baseurl; ?>/">недвижимость Москвы</a></p>
<p class="stal-logo-text">«Сталлоне» - квартиры и дома Москвы и Подмосковья</p>

Название сайта в шапке стало выводиться маленькими буквами. Это позже исправляем в стилях CSS.
Сайт/templates/css/template.css
Было h1.stal-logo-name
Стало p.stal-logo-name
Так же поменять h2 на p и в stal-logo-text. 
В общем поменять h1 и h2 на з в стилях отображения лого и текста под лого.


2. Joomla 2.5 (вариант 1)
Сайт/components/com_content/views/article/tmpl/default.php копируем в Сайт/templates/шаблон/html/com_content/article/default.php и меняем h2 на h1.

Было
<h2>
<?php if ($params->get('link_titles') && !empty($this->item->readmore_link)) : ?>
<a href="/<?php echo $this->item->readmore_link; ?>">
<?php echo $this->escape($this->item->title); ?></a>
<?php else : ?>
<?php echo $this->escape($this->item->title); ?>
<?php endif; ?>
</h2>

 Стало
<h1>
<?php if ($params->get('link_titles') && !empty($this->item->readmore_link)) : ?>
<a href="/<?php echo $this->item->readmore_link; ?>">
<?php echo $this->escape($this->item->title); ?></a>
<?php else : ?>
<?php echo $this->escape($this->item->title); ?>
<?php endif; ?>
</h1>

Все стили меняются на стандартные стили Joomla.

Способ 2. Подходит к любой Joomla 2, Joomla 3 и даже к Joomla 1,7 (оптимальный)

Открываем любую статью своего сайта на Joomla и смотрим код страницы.
Сделать H1 заголовки статей в Joomla
Находим код отвечающий за вывод заголовка статьи (выделенный синим, у вас будет другой).
Скачиваем всю папку шаблона своего сайта на компьютер.
В Total Commander ищем в этой папке все файлы с текстом h2 class="erv-postheader" (у вас будет другой код!).
Заменяем h2 в этой строке на h1.

H1 название категории

Существует много способов изменения h1 на h2 в статьях и блогах выведения категорий. Все они зависят от шаблона вашего сайта. И универсального способа, увы нет.
Как сделать h1 название категории в блоге категории и убрать его в статье?
Решение 1.
1. Идем в Материалы - Менеджер категорий, в нужную категорию. Например категория "Заголовки Joomla".
2. Пишем в "Описание" - H1 и H2 Заголовки Joomla и выделяем этот текст в h1.
3. Менеджер материалов - Настройки. Вкладка "Категория". 
  • Заголовок категории - Скрыть
  • Описание категории - Показать
Теперь описание категории в h1 будет на странице блога категории исчезнет на странице материала (и там в h1 будет заголовок материала).
 
Решение 2.
Проблема первого решения в том, что без сторонних расширений пагинации (например ARTIO или sh404sef) , у вас на всех страницах блога категории (start=10, start=20 и т.д.), будет выводиться один и тот же h1 описания категории.
На самом деле это ерунда, главное чтобы отличались title и description страниц блога в Joomla и тогда все будет seo замечательно.
Но если вы сео нацист и хотите сделать по другому, то вы можете в данной категории создать материал с датой 2100 года. В теле материала напишите нужный текст и выведите его в h1. А в настройках материала уберите все видимое (дата, автор, заголовок, категория).
Тогда у вас всегда вверху категории будет прилеплена статья состоящая только из H1 и смотреться она будет, как обычный заголовок. И на других страницах блога категории, она выводиться не будет.
 
Решение 3. Для совершенно расово безумных сеошников.
Делаем все как в варианте сверху. Но добавляем каждой 11 статьей (если на странице бога категории вы выводите 10 материалов), статью с разным содержимым в виде h1. А название материала и все остальное - не выводим.
Тогда на каждой странице блога, вверху будет всегда стоять разный заголовок в h1.
Тем, кто не хочет тратить время на исправление кода шаблона, есть отличный плагин "Header tags". Он бесплатен и годится для любой Joomla (и для 2 и для 3 даже).
Настройки у него примитивны (читай "Как настроить Header tags").

Так же, нужно сделать так, чтобы заголовок статьи не показывал ссылку на эту самую статью.
На самом деле, это спорное утверждение. Например Livejournal дает всем статьям ссылку на саму себя в заголовке. Но Livejournal заточен в первую очередь под Google. А вот все новостные порталы, работающие с Яндексом, в названии материала, ссылку на этот же материал, не имеют.
Для того, чтобы название статьи было без ссылки на статью, идем Панель управления - Менеджер материалов - Настройки - Материалы. И убираем галочку "Заголовок как ссылка".

Для того, чтобы автоматически менялись лишние H1 на странице, на H2 (а ведь тег H1 должен встретиться роботу только один раз на странице), проще всего использовать плагин Header tags.

Как настроить Header tags

Русский тракторист настраивает например только Н1 и H2. Тогда настройки плагина Header tagsвыглядят следующим образом.
Как настроить плагин Header tags

В плагине есть еще настройки, но я меняю только те, что помечены красным цветом. И все работает отлично.
Конечно, плагин грузит систему (хотя я проверял скорость загрузки сайта с плагином и без него, и разницы практически нет). И вы можете исправить код в шаблоне, чтобы H1 и H2 правильно располагались на странице материала и в блоге категории (здесь разные варианты работы).
Но с плагином вы ничего не теряете. Когда исправите код шаблона, просто отключите плагин и все. Или же не станете тратить время на код и так и оставите Header Tags выполнять за вас всю работу по поиску лишних H1 и исправлению их на H2.

Хитрость1 (хуже).
Нужно вывести название категории в H1, когда вы смотрите блог категории. Тогда все названия статей будут в H2 (иначе первая статья будет переводиться в H1).
Для этого идем в "Менеджер меню" - "Пункт меню" - "Параметры отображения страницы" и в "Заголовок страницы" пишем то, что будет видно сверху блога категории. Так же заполняем и "Заголовок страницы в браузере" (Title).

Хитрость 2 (лучше).
Если вы делаете способом "Хитрость 1", то у вас всегда вверху будет надпись "Заголовка страницы" в H1. В сети есть такое пожелание, оттого и написал, как этого добиться.
Однако сам я делаю по другому. "Менеджер меню" - "Пункт меню" - "Параметры отображения страницы" - "Заголовок страницы в браузере" - пишу Title, а "" ставлю "Нет".
И в каждой категории (Менеджер категорий: Изменить категорию материалов) я помимо имени категории пишу ее описание (внизу в редакторе) и ставлю это описание в H1.
Для того, чтобы это описание стало видимым на странице блога категории нужно пройти в "Материалы" - "Настройки менеджера материалов" - "Категории" - "Описание категории высшего уровня" и выбрать "Показать".

Тогда мы получаем.
  • Когда открыт блог категории, то в H1 выводится это самое описание категории. А заголовки статей показаны в H2.
  • Когда открыта статья, то описание категории исчезает и заголовок материала автоматически переводится в H1.
Все это идеально для сео оптимизации. Так же заполняем поля "описание" и "ключевые слова" (хотя везде пишут, что они мало учитываются, я другого мнения).
И не забываем убрать теги H1 и H2 с шапки сайта! здесь.


Настройка оптимизации Joomla 3

Тег h1 в заголовках Joomla 3

Здравствуйте. Сегодня, я расскажу о первых шагах оптимизации сайта Joomla, а именно, оптимизируем заголовки статей в различных формах (макетах) вывода материалов Joomla 3.
Суть проблемы с заголовками Joomla 3 в следующем. Поисковые алгоритмы, отдают предпочтение сайтам, содержание которых  построено по иерархической структуре. Иерархия содержимого определяется подчиненностью тегов <h1>, <h2>, <h3>, <h4>, <h5>, <h6> которыми нужно обрамлять заголовки статей, разделов, глав, и т.д.
 Это правило относится не только к статье, а ко всей странице в целом. То есть поисковик ищет первый тег <h1> и его считает основным, определяющим тему страницы. Наличие на странице нескольких тегов <h1> каждый поисковик воспринимает по-разному, но все они этого «не понимают», и как следствие отодвигают страницы в поисковой выдаче, отдавая предпочтение правильно сформированным страницам других сайтов.

Теги h1-h2 на сайте Joomla

Давайте посмотрим, где по умолчанию, Joomla предполагает расстановку тегов , <h1>, <h2>.

Тег h1 на сайте Joomla

Чтобы посмотреть, как по вашему сайту расставляются теги h1, h2 воспользуйтесь инструментами разработчика в вашем браузере.
Вариант 1. На практике, кликните по проверяемому названию правой кнопкой мыши и нажмите на команду, типа «Код элемента». В дополнительном окне откроется HTML код этой части сайта с выделенным кодом вашего клика.
 h1 na sayte joomla3 10
Вариант 2. Можно, правой кнопкой мыши открыть весь код страницы. Код страницы, также, открывается нажатием горячих клавиш Ctrl+U (в Chrome и Mozilla). Открыв код всей страницы, воспользуйтесь поиском по странице в браузере (Ctrl+F) и в поле поиска (в правом верхнем углу) впишите искомое слово, у нас это h1 или h2. Повторюсь, тег h1 должен найтись на странице не более и не менее одного раза.
Рассмотрим редактирование тегов <h1> на следующих страницах сайта Joomla 3.
  • Тег h1 на главной странице сайта (Избранные материалы);
  • Тег h1 на открытой статье;
  • Тег h1 на странице списков (категорий и статей категории).

Тег h1 на странице избранные материалы

Для начала замечу, что блог «Избранные материалы» не всегда может быть главной страницей сайта. Главной страницей сайта может быть назначена любая страница сайта от статьи, до списка категорий. При создании любой страницы, любого пункта меню есть поле «Главная страница» (Да, Нет). На сайте Joomla 3 не может быть двух главных страниц, если вы работаете на одном, а не на двух шаблонах.
Вернемся, к избранным материалам.
Я не буду в статье анализировать различные схемы расстановки тега h1 по сайту Joomla 3, и тем более не буду анализировать другие сайты для ответа на этот вопрос. Вы сами это можете сделать, пощелкав по заголовкам чужих сайтов Joomla правой мышью.
В этой статье я расскажу, как реализовать следующую схему:
  • Блог избранные материалы это главная страница сайта, на ней тег h1 употребляется один раз в заголовке к блогу. Все заголовки анонсов к избранным материалам заключены в теги <h2>.
  • При открытии статьи, тег <h1> обрамляет только заголовок этой статьи.
  • В header сайта стоит название сайта в тегах <title>. Если название сайта заменяем логотипом, то логотип не обрамляем тегами <h1>.
На сайте Joomla 3 материалы можно выводить различными макетами: избранные материалы, блог,список статей категории, список категорий и т.д. Об этом подробно я писал в статье: Макеты материалов Joomla 3. Чтобы отражаться на сайте, любая форма вывода материалов (макет), должна быть добавлена в любое меню сайта, отдельным пунктом.
Заголовок над избранными материалами, будет выводиться в тегах <h1> и совпадать с названием пункта меню, если не менять настройки вывода материалов. Но его можно и поменять. Сделать это можно при создании пункта меню на вкладке: Параметры страницы.
h1 na sayte joomla3 8
h1 na sayte joomla3 7
В пункте «Заголовок страницы в браузере» пишем свое название. В следующем пункте «Показать заголовок страницы» ставим «Да». На следующих двух фото вы видите, как меняется название блога «Избранные материалы».
h1 na sayte joomla3 1
h1 na sayte joomla3 3

Тег h1 на странице списков (категорий и статей категории)

Заголовок над блогами категорий и над списками статей будет выводиться в тегах <h2>. Заполнив на вкладке Параметры страницы, пункт: «Показать заголовок страницы» - «Да», получаем еще один заголовок, но в тегах <h1>. Аналогично настраивается название любой макет вывода материалов Joomla 3 (исключая Избранные материалы).
Тегов <h1> на главной странице Joomla 3 больше не предусмотрено.
Примечание: Настройка, обрамлять или не обрамлять логотип тегом <h1>, должна быть в настройках шаблона (Расширения→Менеджер шаблонов→Шаблон по умолчанию).
h1 na sayte joomla3 9

Тег h1 на открытой статье

К сожалению или к счастью, для кого как, в большинстве шаблонов Joomla, открытая статья имеет заголовок в тегах <h2>, а не <h1>.
По-умолчанию, тег <h1> на открытой статье не используется. Заголовок статьи обрамлен тегом <h2>.
h1 na sayte joomla3 4

Меняем <h2> на <h1> в коде шаблона

Входим в каталог сайта по FTP. Открываем папку: /components/com_content/views/article/tmpl/ в ней ищем файл default.php.
Общий путь:  /components/com_content/views/article/tmpl/default.php.
И в классе  ="page-header" меняем h2 на h1.
Пример1 (Joomla 3):
<div class="page-header">
              <h1 itemprop="name">
                          <?php if ($params->get('show_title')) : ?>
                                      <?php echo $this->escape($this->item->title); ?>
                          <?php endif; ?>
              </h1>
Пример 2 (Joomla 2.5)
<div class="page-header">
              <h1 itemprop="name">
                          <?php if ($params->get('show_title')) : ?>
                                      <?php if ($params->get('link_titles') && !empty($this->item->readmore_link)) : ?>
                                                  <a href="/<?php echo $this->item->readmore_link; ?>" itemprop="url"> <?php echo $this->escape($this->item->title); ?></a>
                                      <?php else : ?>
                                                  <?php echo $this->escape($this->item->title); ?>
                                      <?php endif; ?>
                          <?php endif; ?>
              </h1>
h1 na sayte joomla3 5
У вас в шаблоне может быть другой код, но суть не меняется.
Напомню, что для редактирования файл качаем его по FTP на компьютер, далее редактируем его в  текстовом редакторе (например, Notepad++) и переносим обратно на сервер хостинга в режиме перезаписи по FTP.
Возвращаемся в административную панель сайта  и чистим кэш (Система→Очистить кэш системы). Если в настройках плагина «Кэш» используете кэширование в браузере, чистим кэш браузера (горячие клавиши Ctrl+F5 в Chrome и Fox или чистим историю браузера за последний час).
Примечание: Если не любите менять код сайта попробуйте плагин: Header Tags Plugin.
h1 na sayte joomla3 6
На этом все! такие нехитрые приемы для «причесывания» h1 в заголовках Joomla 3 позволят Вам улучшить отношения с поисковиками Интернет. Однако, это «капля в море» работ по оптимизации Joomla 3. 
Игорь Серов, специально для Joomla3-x.ru

2 коммент.: