Уверен, что любой 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 } ?>
Спасибо за предложенное решение! Воспользовался первым способом. Всё работает отлично. Прям спасение!
Спасибо!