Изначально компонент Virtuemart в качестве заголовка Title страницы категории товаров использует название категории. Что само по себе не удобно. Пришлось сделать немного правок кода.
Изначально мы имеем форму вот такого вида:
Картинка
В итоге нашего seo-мода мы получим форму с дополнительными полями Title, описание (Meta Description) и ключевые слова (Meta Keywords):
Картинка
Для начала находим файл product.product_category_form.php, находится в папке /administrator/components/com_virtuemart/html/
В нем находим строки:
<tr> <td width="21%" nowrap><div align="right"><?php echo $VM_LANG->_('PHPSHOP_CATEGORY_FORM_NAME') ?>:</div></td> <td width="79%"> <input type="text" name="category_name" size="60" value="<?php echo shopMakeHtmlSafe( $db->sf('category_name')) ?>" /> </td> </tr>
Добавляем ниже следующие строки:
<tr> <td width="21%" nowrap><div align="right">Title страницы категории:</div></td> <td width="79%"> <input type="text" name="title_pg" size="100" value="<?php echo shopMakeHtmlSafe( <strong>$db->sf('title_pg'))</strong> ?>" /> </td> </tr> <tr> <td width="21%" valign="top" nowrap><div align="right">Meta-тег Description категории:</div></td> <td width="79%" valign="top"> <input type="text" name="meta_desc" size="180" value="<?php echo shopMakeHtmlSafe( <strong>$db->sf('meta_desc'))</strong> ?>" /> </td> </tr> <tr> <td width="21%" valign="top" nowrap><div align="right">Meta-тег Keywords категории:</div></td> <td width="79%" valign="top"> <input type="text" name="meta_key" size="180" value="<?php echo shopMakeHtmlSafe( <strong>$db->sf('meta_key'))</strong> ?>" /> </td> </tr>
В этой же директории находим файл shop.browse.php. В нем необходимо заменить код:
if( $category_id ) { /** * CATEGORY DESCRIPTION */ $db->query( "SELECT category_id, category_name FROM #__{vm}_category WHERE category_id='$category_id'"); $db->next_record(); $category_name = shopMakeHtmlSafe( $db->f('category_name') ); // Set Dynamic Page Title $vm_mainframe->setPageTitle( $db->f("category_name") ); $desc = $ps_product_category->get_description($category_id); $desc = vmCommonHTML::ParseContentByPlugins( $desc ); // Prepend Product Short Description Meta Tag "description" when applicable $mainframe->prependMetaTag( "description", substr(strip_tags($desc ), 0, 255) ); }
Заменяем на следующее:
if( $category_id ) { /** * CATEGORY DESCRIPTION */ $db->query( "SELECT category_id, category_name, title_pg, meta_desc, meta_key FROM #__{vm}_category WHERE category_id='$category_id'"); $db->next_record(); $category_name = shopMakeHtmlSafe( $db->f('category_name') ); $title_pg = shopMakeHtmlSafe( $db->f('title_pg') ); $meta_desc = shopMakeHtmlSafe( $db->f('meta_desc') ); $meta_key = shopMakeHtmlSafe( $db->f('meta_key') ); $desc = $ps_product_category->get_description($category_id); //Задание мета тега Description $desc = vmCommonHTML::ParseContentByPlugins( $desc ); if ($title_pg != '') { // Set Dynamic Page Title //Задание титла страницы $vm_mainframe->setPageTitle( $db->f("title_pg") ); } else { $vm_mainframe->setPageTitle( $db->f("category_name") ); } if($meta_desc != '') { $mainframe->prependMetaTag( "description", substr(strip_tags($meta_desc ), 0, 255) ); } else { // Prepend Product Short Description Meta Tag "description" when applicable $mainframe->prependMetaTag( "description", substr(strip_tags($desc ), 0, 255) ); } if($meta_key != '') { $mainframe->prependMetaTag( "keywords", $meta_key ); } }
Теперь необходимо добавить обработчики для новых полей. Находим в директории administrator/components/com_virtuemart/classes/ файл ps_product_category.php, в нем находим следующие строки:
'category_name' => vmGet( $d, 'category_name' ), 'category_publish' => vmGet( $d, 'category_publish' ),
Ниже вставляем строки:
'title_pg' => vmGet( $d, 'title_pg' ), 'meta_desc' => vmGet( $d, 'meta_desc' ), 'meta_key' => vmGet( $d, 'meta_key' ),
Добавим новые поля в таблицу vm_category, для этого выполним запрос:
ALTER TABLE `jos_vm_category` ADD COLUMN ` title_pg ` VARCHAR(255) NULL DEFAULT NULL AFTER `list_order`, ADD COLUMN `meta_desc` TEXT NULL DEFAULT NULL AFTER `title_pg`, ADD COLUMN `meta_key` VARCHAR(255) NULL DEFAULT NULL AFTER `meta_desc`;
P.S. мета-теги для страницы товара сделать не сложнее, по той же схеме.