SEO оптимизация страницы категории Virtuemart

SEO оптимизация страницы категории Virtuemart

23.03.2013

Изначально компонент 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. мета-теги для страницы товара сделать не сложнее, по той же схеме.


Узнал сам - поделись с друзьями!

Возврат к списку