Почему-то разработчики 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. По этому же принципу можем добавлять свои поля и категории и товару.