Opencart 1.5.x (catalog): SEO - автоматическое заполнение meta keywords
Если поле "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']
Еще записи по теме
- Яндексу потребовалось 12 дней, чтобы проиндексировать наш интернет-магазин
- Задумались, как пускать в админку сторонних людей (редакторов)
- Индикация цен опций товара заменена на абсолютную величину (вместо разницы +X руб, -Y руб)
- Opencart 1.5.x -- 1.5.1.2 (admin): редактирование заказов
- Opencart 1.5.1.3 и ниже (admin): колонка SKU (поиск, фильтр, автодополнение, сортировка)
- Opencart 1.5.1.3: выдача HTTP/404 для товаров, которые отключены администратором
- Opencart 1.5.x (admin): улучшения при вводе атрибутов товаров




Комментариев: 4
Приветствую! По вашим статьям сделал поиск товаров по 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
Соответственно.
Что бы это значило, и как исправить?
Эта модификация для витрины магазина. А у вас все ошибки в админке. Не тот файл меняли.
Небольшое дополнение. Если title из одного слова, то будет два одинаковых кейворда
$this->data['keywords'] = implode(',', $words);
if($this->data['keywords'] != $this->data['title']) $this->data['keywords'] = $this->data['keywords'] . ',' . $this->data['title'];
Вообще, думаю, для поисковиков нормально даже если один ключ, дело не в количестве. Но если он будет совпадать с , а в последнем целое предложение, будет нехорошо.
Добавил проверку.