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

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

И так, изменения требуется внести в следующие файлы:

/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 (!empty($this->category->category_h1)) { ?>
        <div>
        
    <?php echo $this->category->category_h1; ?>
        </div>
    <?php
    }  // Произвольный заголовок ?>

Ну и получается нужно из шаблона удалить стандартный вывод названия категории, найти и удалить:

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

 


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

Все сделал. как написано, но информация не сохраняется, хотя в БД все нормально записывается, вчем проблемма? Помоготе, спасибо

Я щас с телефона, но на память я так понял что я забыл написать, что нужно объявить переменную в файле /administrator/components/com_virtuemart/tables/categories.php
в начале файла найди где объявлены переменные и напиши твой переменная = »;

Результат: в админке сохраняется, при просмотре программного кода страницы инфа присутствует, но отсутствует тег
*******************************
пример:
Вечерние платья и другие <!— это должен быть тег —>

Платья

Я ничего не понял, какие теги? Если в админку сохранилось значит сохранилось в базе, собственно у тебя проблема с выводом, смотри внимательнее.

Комментировать