Ruslan Brest, rb.labtodo.com

Разработка ПО, сайтов и веб-сервисов. CodeIgniter, PHP, MySQL, W3C CSS/XHTML, MaxSite CMS, OpenCart, PrestaShop

Opencart 1.5.x (catalog): SEO - автоматическое заполнение meta keywords

Опубликовано: 14 ноября 2011.
Автор: Ruslan Brest.

Рубрика: Howto | SEO | OpenCart.

Просмотров: 1530.
Подписаться на комментарии по RSS.

Если поле "meta keywords" не заполнено в админке, Опенкарт его не выводит. Для улучшения ситуации заполним его автоматически, продублировав слова из названия товара.

В результате у нас будет что-то вроде:

<head>
<title>Аппарат для приготовления блинов Bomann CM 2221 CB</title>
<base href="http://a4u.com.ua/" />
<meta name="keywords" content="Аппарат,для,приготовления,блинов,Bomann,CM,2221,CB,Аппарат для приготовления блинов Bomann CM 2221 CB" />

Не идеал, но вроде бы лучше, чем ничего. Или ручное прописывание у всех товаров, хи-хи. В то же время вручную описать эти поля никто не мешает, и в случае их заполненности автоматика не вмешивается. Делать автозаполнение для "meta description" не решился, потому что одинаковое название и описание не приветствуется. Но кому хочется - могут дописать if( empty($this->data['description']) ) $this->data['description'] = $this->data['title'];

Для версий Opencart 1.5.x, включая 1.5.1.3; ocStore 1.0.1.

diff --git a/public_html/catalog/controller/common/header.php b/public_html/catalog/controller/common/header.php
index 79bf735..1904774 100644
--- a/public_html/catalog/controller/common/header.php
+++ b/public_html/catalog/controller/common/header.php
@@ -18,6 +18,15 @@ class ControllerCommonHeader extends Controller {
                $this->data['direction'] = $this->language->get('direction');
                $this->data['google_analytics'] = html_entity_decode($this->config->get('config_google_analytics'), ENT_QUOTES, 'UTF-8');
 
+               // SEO improvements:
+               // If keywords and description not set - use title here too
+               if( empty($this->data['keywords']) )
+               {
+                       $words = explode(' ', $this->data['title']);
+                       if(count($words) > 1) $this->data['keywords'] = implode(',', $words) . ',';
+                       $this->data['keywords'] .= $this->data['title'];
+               }
+
                $this->language->load('common/header');
 
                if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS']
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru digg.com friendfeed.com liveinternet.ru livejournal.ru yandex.ru del.icio.us

Комментариев: 4

  1. Smin
    12.03.2012 в 19:58:38 | #1

    Приветствую! По вашим статьям сделал поиск товаров по SKU - все работает, спасибо.

    Потом добавил поле для поиска по sku в админку.

    А после этого хотел сделать автоматическое заполнение полей "meta keywords" вставил нужный код в файлик /сайт/catalog/controller/common/header.php

    В результате теперь название полей поменялось на:

    Notice: Undefined variable: entry_seo_h1 in /var/www/smin135/data/www/turcmdhost.tk/admin/view/template/catalog/product_form.tpl on line 36

    и

    Notice: Undefined variable: entry_seo_title in /var/www/smin135/data/www/turcmdhost.tk/admin/view/template/catalog/product_form.tpl on line 40

    а в полях написано:

    Notice: Undefined index: seo_h1 in /var/www/smin135/data/www/turcmdhost.tk/admin/view/template/catalog/product_form.tpl on line 37

    и

    Notice: Undefined index: seo_title in /var/www/smin135/data/www/turcmdhost.tk/admin/view/template/catalog/product_form.tpl on line 41

    Соответственно.

    Что бы это значило, и как исправить?

  2. Ruslan Brest
    12.03.2012 в 20:19:48 | #2

    Эта модификация для витрины магазина. А у вас все ошибки в админке. Не тот файл меняли.

  3. 19.03.2012 в 03:19:50 | #3

    Небольшое дополнение. Если title из одного слова, то будет два одинаковых кейворда

    $this->data['keywords'] = implode(',', $words);

    if($this->data['keywords'] != $this->data['title']) $this->data['keywords'] = $this->data['keywords'] . ',' . $this->data['title'];

    Вообще, думаю, для поисковиков нормально даже если один ключ, дело не в количестве. Но если он будет совпадать с , а в последнем целое предложение, будет нехорошо.

  4. Ruslan Brest
    19.03.2012 в 09:33:46 | #4

    Добавил проверку.

Оставьте комментарий!

Гость
Комментатор / хотите им стать

Чтобы стать комментатором, введите email и пароль. Напишите комментарий. В дальнейшем ваша связка email-пароль позволит комментировать, получать уведомления об ответах и редактировать свои данные. Не забудьте про активацию (инструкция придёт на email, указанный при регистрации).

Авторизация: Facebook. MaxSiteAuth. Loginza

(обязательно)