Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

SEO Title и H1 тэги - ГОТОВО. [Доработка]


Alexandr

Recommended Posts

Добрый день всем!

Уже не раз обсуждался крупный недостаток в OpenCart для SEO специалистов - это отсутствие возможности настроить самому содержимое тэгов TITLE и H1.

Довольно серьёзная причина почему многие SEO специалисты отказывались работать с ней.

По моему заданию это было исправлено и работает - если поля TITLE и H1 не заполнены то значения берутся как раньше из названия товара, а если заполнены то из заполненных значений. Теперь выкладываю БЕСПЛАТНО на всеобщее обозрение, надеюсь babushka и те кто отвечают за обновление русского OpenCart. добавят это в русскую сборку.

Кодер буржуйский, поэтому комменты на английском:

Added two fields in tables :

1. oc_product_description

2. oc_category_description

meta_title

h1tag

Changes :

admin/view/template/catalog/category_form.tpl

44 line to line 54

_______Added _______<tr>              <td>Meta Title</td>              <td><input name="category_description[<?php echo $language['language_id']; ?>][meta_title]" size="100" value="<?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['meta_title'] : ''; ?>" />              </td>            </tr>	   <tr>              <td>H1 tag</td>              <td><input name="category_description[<?php echo $language['language_id']; ?>][h1tag]" size="100" value="<?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['h1tag'] : ''; ?>" />               </td>            </tr>_______Added____

admin/view/template/catalog/product_form.tpl

44 line to line 57

_______Added _______<tr>              <td>Meta Title</td>              <td>	      <input type="text" name="product_description[<?php echo $language['language_id']; ?>][meta_title]" value="<?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['meta_title'] : ''; ?>" size="80"/>	</td>            </tr>		<tr>              <td>H1 tag</td>              <td>	       <input type="text" name="product_description[<?php echo $language['language_id']; ?>][h1tag]" value="<?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['h1tag'] : ''; ?>" size="80"/>		</td>            </tr>_______Added____

admin/model/catalog/category.php

Line 12 - changed from

foreach ($data['category_description'] as $language_id => $value) {			$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");		}

To

foreach ($data['category_description'] as $language_id => $value) {			$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', h1tag = '" . $this->db->escape($value['h1tag']) . "'");		}

Line 38 From

foreach ($data['category_description'] as $language_id => $value) {			$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");		}

To

foreach ($data['category_description'] as $language_id => $value) {			$this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', h1tag = '" . $this->db->escape($value['h1tag']) . "'");		}

Line 123 From

$category_description_data[$result['language_id']] = array(				'name'             => $result['name'],				'meta_keywords'    => $result['meta_keywords'],				'meta_description' => $result['meta_description'],				'description'      => $result['description']			);

To

$category_description_data[$result['language_id']] = array(				'name'             => $result['name'],				'meta_keywords'    => $result['meta_keywords'],				'meta_description' => $result['meta_description'],				'description'      => $result['description'],				'meta_title'      => $result['meta_title'],				'h1tag'      => $result['h1tag']			);

admin/model/catalog/product.php

Line 12 From

foreach ($data['product_description'] as $language_id => $value) {			$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");		}

To

foreach ($data['product_description'] as $language_id => $value) {			$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', h1tag = '" . $this->db->escape($value['h1tag']) . "'");		}

Line 107 From

foreach ($data['product_description'] as $language_id => $value) {			$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");		}

To

foreach ($data['product_description'] as $language_id => $value) {			$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', h1tag = '" . $this->db->escape($value['h1tag']) . "'");		}

Line 388 From

$product_description_data[$result['language_id']] = array(				'name'             => $result['name'],				'meta_keywords'    => $result['meta_keywords'],				'meta_description' => $result['meta_description'],				'description'      => $result['description']			);

To

$product_description_data[$result['language_id']] = array(				'name'             => $result['name'],				'meta_keywords'    => $result['meta_keywords'],				'meta_description' => $result['meta_description'],				'description'      => $result['description'],				'meta_title'      => $result['meta_title'],				'h1tag'      => $result['h1tag']			);

catalog/controller/product/category.php

Line 48 from

$this->document->title = $category_info['name'];

To

if($category_info['meta_title'] == "")			{	  		$this->document->title = $category_info['name'];			}			else			{				$this->document->title = $category_info['meta_title'];			}

catalog/controller/product/product.php

Line 113 from

$this->document->title = $product_info['name'];

To

if($product_info['meta_title'] == "")			{	  		    $this->document->title = $product_info['name'];			}			else			{				$this->document->title = $product_info['meta_title'];			}
Змінено користувачем afwollis
code
  • +1 4
Надіслати
Поділитися на інших сайтах


А где редактировать текст "Ключевые слова мета-теги", "Мета-теги" при добавлении товара/категории? Так как не правильно написано (возможно переведено). Есть "ключевые слова", а есть "описание". В ocStore v0.1.3 все перепутано

Надіслати
Поділитися на інших сайтах


Спасибо за доработку, но давайте немного доточим инструкцию.

Что касается полей в БД, то нужно добавлять оба поля meta_title и h1tag в обе таблицы oc_product_description и oc_category_description (ОС префикс, у вас он может быть другой). Поля создаем varchar(80) (255 максимальная длина поля)

Что бы все таки поддерживать многоязычность я бы в коде исправил бы:

admin/view/template/catalog/category_form.tpl и admin/view/template/catalog/product_form.tpl

<td>Meta Title</td>    =>    <td><?php echo $entry_meta_title ?></td><td>H1 tag</td>   =>     <td><?php echo $entry_h1_tag ?></td>

В файлах /admin/controller/catalog/category.php и /admin/controller/catalog/product.php

После

$this->data['entry_status'] = $this->language->get('entry_status');
Добавляем

$this->data['entry_meta_keywords'] = $this->language->get('entry_meta_keywords');$this->data['entry_meta_title'] = $this->language->get('entry_meta_title');

После чего в языковых файлах /admin/language/ваш_язык/catalog/category.php и /admin/language/ваш_язык/catalog/product.php

в конце // Entry добавляем (и во всех языках которых вам нужно с соответствующим переводом)

$_['entry_meta_title']       = 'Мета-название:';$_['entry_h1_tag']            = 'Заголовок H1';

Так же код который нужно добавить в admin/view/template/catalog/category_form.tpl и admin/view/template/catalog/product_form.tpl, нужно добавлять не именно начиная со строки 44 а в таблице, которая там находится, и не обязательно в конец, а в удобное для вас место

З.Ы. первый раз такое пишу, так что если что вдруг что не так, сильно не пинайте, пока все )

Змінено користувачем afwollis
code
Надіслати
Поділитися на інших сайтах


Fix305 Почему мистика? Просто в доработке поля Meta Title'a и H1 tag'а в категории ограничены 100й символов для ввода, а в продукте 80 символов. По этому я решил поставить минимальное. Хотя можно поставить 255 и изменить в доработке size="80" и size="100" на size="255"
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Подскажите, если не затруднит, а как эти поля при экспорте добавить в xls?Ну и соответственно импортировать тоже =)С уважением.

Надіслати
Поділитися на інших сайтах

Действительно актуальный вопрос экспорта. Нужно будет посмотреть самому, может быть там все просто.И еще такой вопрос, вот смотрю я и все вроде бы хорошо, но что то я не совсем понимаю как работает в данной доработке Н1, где выводится или вообще что с ним делается

Надіслати
Поділитися на інших сайтах


Не знаю как у остальных,а у меня ни title ни h1 при произведенных изменениях не меняются.Сделал пока так - viewtopic.php?f=15&t=105&start=30Буду рад, если кто-нибудь меня поправит или дополнитЗЫ Вру - title через раз стал срабатывать, h1 точно не работает. Доработка сырая...

Надіслати
Поділитися на інших сайтах


  • 2 months later...

Логично что не работает H1 тег, ибо инструкция недописана!!!

Нужно дописать:

catalog/controller/product/category.php
Line ~61 from

$this->data['heading_title'] = $category_info['name'];
To

if($category_info['h1tag'] == "")
{
$this->data['heading_title'] = $category_info['name'];
}
else
{
$this->data['heading_title'] = $category_info['h1tag'];
}
catalog/controller/product/product.php
Line ~133 from

$$this->data['heading_title'] = $product_info['name'];
To

if($product_info['h1tag'] == "")
{
$this->data['heading_title'] = $product_info['name'];
}
else
{
$this->data['heading_title'] = $product_info['h1tag'];
}
У меня работает отлично.

Админы, будет время добавьте в шапку

Змінено користувачем afwollis
как мне нравится прятать за всех код в CODE...
Надіслати
Поділитися на інших сайтах


народ, чего паритесь?

чтобы не изменять базу (для последующей совместимости с будущими обновлениями)

достаточно писать тег H1 из meta-description.

В этом случае и потребности seo удовлетворены, и структура базы не нарушается.

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Товарищи, а может кто выложит измененные файлы, а то возился, исправлял, повылетали ошибки. Возможно ли?

пс. разобрался, с 3го раза) всё заработало.

Змінено користувачем spoon
Надіслати
Поділитися на інших сайтах


  • 1 month later...

В версии 1.4.9.4 имеет мета тег Ключевые слова: и метатегов Описание: тэг H1 и ... сделать, Вам нужен ремонт, чтобы сделать его в версии 1.4.9.4, будет ли он улучшить свою SEO, если я сделаю это исправление в код

Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

господа, большая просьба - помогите уж людям несведущим и выложите пожалуйста изменённые файлы, а то как их не менял, не выходит, мож чегото не то менял или недоперепонял аглицкий язык.... :blink: И, я думаю не я один такой.

Заранее спасибо

Надіслати
Поділитися на інших сайтах


да.. в новых версиях OcStore все это есть, но совместимости с модулем экспорта/импорта мы так и не дождались..

Эх! Мне все-равно скоро придется с этим столкнуться. Видимо, напишу мануал по прицеплению.

С уважением.

Надіслати
Поділитися на інших сайтах

  • 1 year later...

не знаю насколько актуально или нет, но вот ссылка на seo pack, для прописания Title H1 и Н2 тегов. Работает для товаров и категорий, не забывайте говорить автору сего чуда спасибо...Надеюсь поможет кому нибудь.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.