Произвольный заголовок H1 в категории Virtuemart

Комментариев: 2

Уверен, что любой SEO-оптимизатор скажет Вам о важности тега <h1> для продвижения сайта. Почти по всех системах управления этот заголовок берется из название страницы/категории/товара и Virtuemart здесь не исключение. К сожалению, это доставляет определенные неудобства, так например название категории не редко отображается в меню, хлебных крошках и многих других местах, поэтому называть категорию логично лаконично, что зачастую идет в разрез с SEO, когда заголовок необходимо сделать более ёмким, включив в него необходимые ключевые запросы.

Предлагаю Вам несколько способов решения данной задачи. Первый более практичный, так как не требует изменений в ядре компонента, второй более более гибкий, но требует вмешательство в ядро, а значит после обновлений компонента придётся заново править перезаписанные файлы.

1-й способ: используем поле мета-ключевые слова

Всё, что нам необходимо - это отредактировать шаблон категории, при желание по аналогии можно сделать с шаблоном карточки товара, но мы разберем только категорию.

Находим файл вывода шаблона категории: /templates/ваш-шаблон/html/com_virtuemart/category/default.php

Если там нет, то скопируйте по этому адресу файл из папки: /components/com_virtuemart/views/category/tmpl/default.php, что бы при обновлении ничего не слетало.

Сразу после <?php объявляем переменную h1 и записываем в неё значение поля keywords.

$doc =JFactory::getDocument(); 
$h1 = $doc->getMetaData('keywords'); 

Затем находим строчку:

<h1><?php echo vmText::_($this->category->category_name); ?></h1>

И заменяем её на это:

<h1><?php if ($h1) { echo $h1; } else { echo $this->category->category_name; }?></h1>

На этом всё. Теперь вы можете использовать поле мета-ключевые слова для того, что прописать необходимый заголовок h1 для категории. Учитывая то, что поле keywords бесполезно для продвижения, это получается достаточно удобным решением.

к содержанию ↑

2-й способ: делаем дополнительное поле в форме редактирования категории

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

Переходим к редактированию файла:
/administrator/components/com_virtuemart/tables/categories.php

Находим строчку:

class TableCategories extends VmTable {

Ниже дописываем:

var $category_h1 =  '';

Находим:

$this->setTranslatable(array('category_name','category_description','metadesc','metakey','customtitle'));

Заменяем

$this->setTranslatable(array('category_name','category_description','metadesc','metakey','customtitle', 'category_h1'));

Где category_h1 — это название нашего поля, в которое будет записываться наш произвольный заголовок. В этом файле мы внесли изменения именно для того, что бы вписанное значение сохранилось в базу данных.

Теперь выведем поле для ввода произвольного заголовка на странице редактирования категории:
/administrator/components/com_virtuemart/views/category/tmpl/edit_categoryform.php

В нужное место формы, вставляем:

<?php echo VmHTML::row('input','H1','category_h1',$this->category->category_h1); ?>

Например после:

<?php echo VmHTML::row('input','COM_VIRTUEMART_CATEGORY_NAME','category_name',$this->category->category_name,'class="required"'); ?>

Предпоследним этапом нам необходимо создать поле в таблице которая хранит информацию о созданных категориях ваш_префикс_virtuemart_categories_ваш_язык. Сделать это можно таким запросом:

ALTER TABLE `ваш_префикс_virtuemart_categories_dваш_язык` ADD `category_h1` TEXT NOT NULL

И осталось только вывести значение этого поля в шаблоне категории:

/templates/ваш_шаблон/html/com_virtuemart/category/default.php

Найти:

<?php if ($this->category->category_name) { ?>
<h1 class="page_title"><?php echo $this->category->category_name; ?></h1>
<?php } ?>

Заменить на:

<?php if (!empty($this->category->category_h1)) { ?>
<h1 class="page_title"><?php echo $this->category->category_h1; ?></h1>
<?php } ?>

Уведомлять о новых комментариях
Уведомлять
guest
2 комментариев
Inline Feedbacks
View all comments
Евгений
3 лет назад

Спасибо за предложенное решение! Воспользовался первым способом. Всё работает отлично. Прям спасение!
Спасибо!

Алексей Гневышев
3 лет назад

Есть ещё один хороший способ )
Пишем заголовок в теге <h1> в Описании категории. Просто до банальности ))
Ну и, конечно, в шаблоне вывода категории вносим правочки, чтобы вместо обычного заголовка выводился тот, который спарсили из Описания. А описание выводило всё, кроме тега h1 с его содержимым 😉