БЛОГОДЖУМЛА - БЛОГ О ДЖУМЛА

Добавление поля title для производителя. Virtuemart2

  • Категория: Virtuemart 2-3
  • Автор:
  • Просмотров: 7869

joomla title virtuemart2 интернет-магазин производитель

Почему-то разработчики Virtuemart2 обидели страницу производителя - не сделали возможность установить пользовательский тэг <title> страницы. В категориях и товарах сделали, а в производителях нет. 

Исправим это недоразумение.

Так как в Virtuemart2 нет развитой системы событий - придется хакать компонент. Есть, конечно, вариант использовать override, но как-то я не очень доверяю этому методу. Учитывая как легко разрабы меняют названия методов классов от версии к версии. Хак совсем небольшой, и если Вы решите обновить компонент - проще будет накатить его по новой.

Добавляем поле в таблицу производителей

Прежде всего, добавим новое поле в таблицу "ваш_префикс_virtuemart_manufacturers_ru_ru"

В phpmyadmin Вашей базы выполняем запрос:

ALTER TABLE `ваш_префикс_virtuemart_manufacturers_ru_ru` ADD `customtitle` CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT

Добавляем поле в класс таблицы производителей

 Далее, открываем \administrator\components\com_virtuemart\tables\manufacturers.php 

и после

var $mf_url = '';

добавляем 

/** @var string custom title */
var $customtitle= '';

далее вместо

$this->setTranslatable(array('mf_name','mf_email','mf_desc','mf_url'));

пишем:

$this->setTranslatable(array('mf_name','mf_email','mf_desc','mf_url','customtitle'));

Закрываем файл, сохраняем.

Добавляем функцию вывода title в редактирование производителя

Открываем \administrator\components\com_virtuemart\helpers\shopfunctions.php

и в самом конце, ПЕРЕД последней закрывающей "}" пишем:

static public function renderMetaEdit_mf($obj){
return '<table>'.VmHTML::row('input','COM_VIRTUEMART_CUSTOM_PAGE_TITLE','customtitle',$obj->customtitle).'</table>';
}

Закрываем, сохраняем.

Добавляем вывод в шаблон редактирования производителя

Открываем \administrator\components\com_virtuemart\views\manufacturer\tmpl\edit_description.php

и перед </table> пишем:

<tr>
<td valign="top" colspan="2">
<fieldset>
<legend><?php echo JText::_('COM_VIRTUEMART_METAINFO'); ?></legend>
<?php echo shopFunctions::renderMetaEdit_mf($this->manufacturer); ?>
</fieldset>
</td>
</tr>

Сохраняем, закрываем.

Мы уже можем заполнять title производителя и сохранять его. Осталось вывести title на фронт сайта.

Вывод title на фронт сайта

Открываем файл шаблона вывода производителя \components\com_virtuemart\views\manufacturer\view.html.php

и вместо

$document->setTitle(JText::_('COM_VIRTUEMART_MANUFACTURER_DETAILS').' '.strip_tags($manufacturer->mf_name));

пишем:

if (!empty($manufacturer->customtitle)) {
$title = strip_tags($manufacturer->customtitle);
} elseif (!empty($manufacturer->mf_name)) {
$title = JText::_('COM_VIRTUEMART_MANUFACTURER_DETAILS').' '.strip_tags($manufacturer->mf_name);
} else {
$title = $this->setTitleByJMenu($app);
}
$document->setTitle($title);

Готово. Теперь мы можем задавать странице производителя нужный title. По этому же принципу можем добавлять свои поля и категории и товару.

Back to top