В этом кейсе я опишу как сделать выделение заголовков материалов Joomla тегом H1.
Как сделать заголовки материалов 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++ или другой редактор, подсвечивающий код.

В начале файла находим строчку:

 

$user = JFactory::getUser();

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

Понравилась статья? Сохраните себе на стену:

Ваша оценка материала очень важна для нас. Просим вас оценить статью или оставить отзыв в комментариях ниже.

5 1 1 1 1 1 5.00

Комментарии  

0 # Перекрестные заголовкиДмитрий 30.12.2016 22:14
Здравствуйте. Хотел спросить совета и помощи. Возможно ли создать 2 заголовка для одного алиаса? Например: солнечные очки купить /продажа солнечных очков. Необходимо для разных вариантов поиска. Буду очень благодарен за помощь. С наступающим Новым годом!
Ответить | Ответить с цитатой | Цитировать
0 # RE: Перекрестные заголовкиWedal 09.01.2017 05:26
Дмитрий, уточните вопрос. Пока не очень понимаю, что вы хотите получить.
Ответить | Ответить с цитатой | Цитировать
0 # Перекрестные заголовкиДмитрий 10.01.2017 12:05
Как вы можете видеть на фото (прилагаю) сайт компании glishitel.kz в различных вариантах поиска имеет 2 заголовка на один алиас. Возможно ли произвести такую настройку в Джумла? Спасибо.

Ответить | Ответить с цитатой | Цитировать
0 # RE: Перекрестные заголовкиWedal 11.01.2017 06:40
Дмитрий, фото не открывается, сайт не работает.
Ответить | Ответить с цитатой | Цитировать
0 # RE: Перекрестные заголовкиДмитрий 15.01.2017 06:19
Решили вопрос. Многое из вышеуказанного помогло найти решение. В случае необходимости, обязательно обращусь снова. Спасибо.
Ответить | Ответить с цитатой | Цитировать
0 # Сработало!Анастасия 22.12.2016 10:19
Каталогов /com_content/article/ - не было - создала и дальше все по инструкции!

Спасибо большое! Теперь все работает : )
Ответить | Ответить с цитатой | Цитировать
0 # ЗдравствуйтеАлан 15.12.2016 08:04
Вот начальный код http://pastebin.com/igDi9y2t можете посмотреть, все правильно там или нет ? Ну я просто заменил h2 на h1, а заголовки пункта меню у меня и так отключены в joomla.
Ответить | Ответить с цитатой | Цитировать
0 # RE: ЗдравствуйтеWedal 16.12.2016 05:18
Алан, где у вас в коде закрывается самый верхний div, который с классом item-page ?
Ответить | Ответить с цитатой | Цитировать
0 # ЗдравствуйтеАлан 16.12.2016 06:33
Цитирую Wedal:
Алан, где у вас в коде закрывается самый верхний div, который с классом item-page ?

Верхний div закрывается в самом низу страницы, его не видно в коде который я вам отослал т.к это не весь код страницы.
Ответить | Ответить с цитатой | Цитировать
0 # Ещё раз здравствуйтеАлан 17.12.2016 07:29
Цитирую Алан:
Цитирую Wedal:
Алан, где у вас в коде закрывается самый верхний div, который с классом item-page ?

Верхний div закрывается в самом низу страницы, его не видно в коде который я вам отослал т.к это не весь код страницы.

Ну так что же делать с данной проблемой?
Ответить | Ответить с цитатой | Цитировать
0 # RE: Ещё раз здравствуйтеWedal 19.12.2016 04:59
Алан, искать, где некорректно установлен закрывающий тег.
Ответить | Ответить с цитатой | Цитировать
0 # RE: Ещё раз здравствуйтеАлан 19.12.2016 20:35
Цитирую Wedal:
Алан, искать, где некорректно установлен закрывающий тег.

Закрывающие теги везде корректно установлены т.к кроме смены атрибута h1 на h2 в коде ничего не менялось.
Ответить | Ответить с цитатой | Цитировать
0 # RE: Ещё раз здравствуйтеWedal 20.12.2016 08:11
Алан, а если убрать измененный макет из папки с шаблоном Joomla, проблема остается?
Ответить | Ответить с цитатой | Цитировать
0 # ЗдравствуйтеАлан 14.12.2016 21:10
Все сделал как описано в инструкции, все получилось, но страница материала стала отображаться очень криво, с чем это связанно?
Ответить | Ответить с цитатой | Цитировать
0 # RE: ЗдравствуйтеWedal 15.12.2016 05:27
Алан, скорее всего вы забыли где-то поставить закрывающий тег или разбили открывающий и закрывающий тег условием PHP (например, открывающий внутри условия, а закрывающий снаружи).
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как сделать заголовки материалов Joomla в теге H1 (Кейс #6).Антон 10.10.2016 18:50
Только что то я совсем запутался... При поставке условия

Оно срабатывает там где нужно - внутри категории исчезают заголовки категории и появляются заголовки материала в H1.
НО. Заголовки так же пропадают на всех других страницах т.к. попадают под условие && ($view !== 'article')
Как это решить? Спасибо.
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как сделать заголовки материалов Joomla в теге H1 (Кейс #6).Wedal 11.10.2016 05:16
Антон, а на всех других страницах вы хотите использовать в качестве H1 заголовки пунктов меню или материалов?
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как сделать заголовки материалов Joomla в теге H1 (Кейс #6).Антон 11.10.2016 10:30
Хотел бы использовать заголовки пунктов меню. Обычно для каждой страницы руками прописываю заголовки и мета-теги. Подскажите пожалуйста. Буду очень благодарен.
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как сделать заголовки материалов Joomla в теге H1 (Кейс #6).Wedal 12.10.2016 04:55
Антон, как я понимаю, ситуация следующая:
Есть две статьи: на одну ссылается непосредственно пункт меню Joomla, а другая находится в категории, для которой создан пункт меню типа "Блог категории".

В первом случае у статьи будет URL вроде:
index.php?option=com_content&view=article&id=1&Itemid=107

Во втором случае:
index.php?option=com_content&view=article&id=15:master-klass-po-fotografii&catid=8&Itemid=108

Эти URL, фактически, различаются только тем, что в случае блога у нас появляется дополнительный параметр catid.

Таким образом:
1) Заменяете:
Код:$view = $input->get('view');
на:
Код:$catid= $input->get('catid');

2) Заменяете:
Код:<?php if ($this->params->get('show_page_heading') && ($view !== 'article')) : ?>
на:
Код:<?php if ($this->params->get('show_page_heading') && (!$catid)) : ?>

В результате, если мы находимся в материале блога категории, то заголовок пункта меню показан не будет. Если мы находимся на странице материала, напрямую связанного с пунктом меню, то будет показан заголовок пункта меню, и заголовок материала в H1. Чтобы в H1 не было 2 заголовков, один из них можно отключить в настройках соответствующего пункта меню.
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как сделать заголовки материалов Joomla в теге H1 (Кейс #6).Антон 18.10.2016 11:33
Шикарно! То, что нужно! Благодарю!

Спасибо еще раз!
Ответить | Ответить с цитатой | Цитировать
0 # RE: Как сделать заголовки материалов Joomla в теге H1 (Кейс #6).Антон 10.10.2016 18:31
Самое правильное и точное решение проблемы из всех что нашел в сети! Спасибо! Сохраняю в закладки.
Ответить | Ответить с цитатой | Цитировать
0 # Отлично!Дмитрий 11.08.2016 17:20
Спасибо большое за дельные указания! всё починилось и работает на ура! Правда после всех изменений ничего не поменялось, а поменялось сразу же после того, как очистил кэш в панели управления! Теперь заголовки выводятся по фэншую!!!)))
Ответить | Ответить с цитатой | Цитировать
0 # Все получилосьДенис 24.06.2016 14:42
Спасибо за отличную статью! Написано подробно и понятно. Все получилось!
Ответить | Ответить с цитатой | Цитировать
0 # Не работаетRaina97 06.03.2016 12:29
Сделала все как вы сказали,заголовок все равно остается H2....
Что делать?
Ответить | Ответить с цитатой | Цитировать
0 # RE: Не работаетWedal 09.03.2016 08:29
Raina97, искать ошибку. Перепроверьте еще раз правильно ли вы переопределили макет. Добавьте в переопределенный макет несколько единиц и посмотрите, появятся ли они на сайте. Если нет, что-то перепутали с путями копирования макета.
Ответить | Ответить с цитатой | Цитировать
0 # ВопросALEHAN 06.08.2015 17:57
Использую html5 шаблоны, и если не ошибаюсь, то в соответствии со спецификацией допустимо использование сколько угодно тегов h1 если они обрамлены в тег article или section. По крайней мере я так понял спецификацию и просто все статьи в блоге у меня обрамлены в article и заголовки в теге h1. Правильно ли делаю?
Ответить | Ответить с цитатой | Цитировать
+2 # RE: ВопросWedal 07.08.2015 03:55
ALEHAN, да, в html5 допустимо, но это по спецификации. Мы же говорим про seo-оптимизацию. Здесь можно поспорить и кто-то скажет, что заголовков h1 можно делать несколько, разбавляя ключевыми словами, но я считаю, что для белых сайтов гораздо правильнее использовать только один заголовок.
Ответить | Ответить с цитатой | Цитировать

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

Для отправки комментария введите код с картинки:
Защитный код
Обновить

Вверх