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

SEO-Title для категорий и товара [1.5]


Recommended Posts

Тема для старых версий https://opencartforum.com/topic/937-seo-title-%d0%b8-h1-%d1%82%d1%8d%d0%b3%d0%b8-%d0%b3%d0%be%d1%82%d0%be%d0%b2%d0%be-%d0%b4%d0%be%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0/page__p__5981__hl__seo+title__fromsearch__1#entry5981

Для новой версии делаем следующее (все номера строк примерны):

Пункт 1

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

Пункт 2

Добавляем в /admin/view/template/catalog/category_form.tpl (например, строка 34):

<tr> 
              <td>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>
Добавляем в /admin/view/template/catalog/product_form.tpl (например, строка 34):

<tr> 
              <td>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>

Пункт 3

Заменяем в /admin/model/catalog/category.php (строка 12):

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_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
		}
НА

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_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "'");
		}
Там же, строка 46, заменяем:

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_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
		}
НА

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_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "'");
		}
Там же, строка 141, заменяем:

foreach ($query->rows as $result) {
			$category_description_data[$result['language_id']] = array(
				'name'             => $result['name'],
				'meta_keyword'     => $result['meta_keyword'],
				'meta_description' => $result['meta_description'],
				'description'      => $result['description']
			);
		}
НА

foreach ($query->rows as $result) {
			$category_description_data[$result['language_id']] = array(
				'name'             => $result['name'],
				'meta_title'      => $result['meta_title'],
				'meta_keyword'     => $result['meta_keyword'],
				'meta_description' => $result['meta_description'],
				'description'      => $result['description']
			);
		}

Этот код был для категорий. А теперь title для товара, заменяем в /admin/model/catalog/product.php (строка 12):

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_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
		}
НА

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_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "'");
		}
строка 148:

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_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
		}
НА

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_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "'");
		}
строка 460:

foreach ($query->rows as $result) {
			$product_description_data[$result['language_id']] = array(
				'name'             => $result['name'],
				'description'      => $result['description'],
				'meta_keyword'     => $result['meta_keyword'],
				'meta_description' => $result['meta_description']
			);
		}
НА

foreach ($query->rows as $result) {
			$product_description_data[$result['language_id']] = array(
				'name'             => $result['name'],
				'meta_title'      => $result['meta_title'],
				'description'      => $result['description'],
				'meta_keyword'     => $result['meta_keyword'],
				'meta_description' => $result['meta_description']
			);
		}

Пункт 4

Заменям в /catalog/controller/product/category.php :

$this->document->setTitle($category_info['name']);
НА

if($category_info['meta_title'] == "") { 
$this->document->setTitle($category_info['name']);
} 
  else { 
$this->document->setTitle($category_info['meta_title']);
}
Заменям в /catalog/controller/product/product.php (строка 120):

$this->document->setTitle($product_info['name']);
НА

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

(workpro) Надо еще вписать в файл /catalog/model/catalog/product.php строка 19

вместо:

'name'             => $query->row['name'],
две строки:

                                'name'             => $query->row['name'], 
                                'meta_title'             => $query->row['meta_title'],

Проверяйте код на правильность, после того как вставили.

  • +1 4
Надіслати
Поділитися на інших сайтах


А у меня для товара не идет, для категории все нормально. Перепроверил несколько раз. Введено все правильно. При это в базе, в таблице в meta_title зачения вносятся, а на странице не выводятся.

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


И не выведутся!

Надо еще вписать в файл /catalog/model/catalog/product.php строка 19

вместо:

'name'             => $query->row['name'],
две строки:

'name'             => $query->row['name'],
				'meta_title'             => $query->row['meta_title'],

т.е. добавить выборку для тайтла.

  • +1 2
Надіслати
Поділитися на інших сайтах


Пункт 1

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

Можно пример SQL запроса? Спасибо.

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


Можно пример SQL запроса? Спасибо.

ALTER TABLE `oc_product_description` ADD `meta_title` VARCHAR(255) NOT NULL

ALTER TABLE `oc_category_description` ADD `meta_title` VARCHAR(255) NOT NULL

PS Префикс таблиц не забудьте изменить на свой

Змінено користувачем ukrgeraldika
  • +1 2
Надіслати
Поділитися на інших сайтах


Подскажите, не работает обновление поля meta_title в базе MySQL при редактировании товара. Если вручную в базе через PHPMyAdmin прописываю - все в порядке. Когда в админке эту же запись правлю, то поле становиться пустым, и на сайте отображается титл по умолчанию.

Так же это добавило проблемы с модулем opencart-1-5-1-x-2-export-import(RUS,COMPLETED)(FIXED), который до этого работал отлично. Я попробовал внести изменения в этот модуль, экспорт работает, поле meta_title появилось, а вот при импорте ошибка и база "слетает", и - восстановление из бекапа.

Прикрепляю правленый мной файл модуля export-import

попробую пока бновить модуль импорта/экспорта на этот opencart-1-5-1-x-2-export-import(RUS,COMPLETED) v1.5.1.1

export(modify).php

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


  • 1 month later...
  • 5 months later...

Спасибо, хорошая инструкция. Работает. Мне вот интересно, я скачал с myopencart OStore 1.5.1.3, там все уже готово и SEO Title и SEO H1 но не реализовано в контроллере вывода на странице товара, категорий, статей. Очень странно сделали 95% работы...

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


  • 4 weeks later...
  • 1 month later...

И не выведутся!

Надо еще вписать в файл /catalog/model/catalog/product.php строка 19

вместо:

'name'			 => $query->row['name'],
две строки:

'name'			 => $query->row['name'],
				'meta_title'			 => $query->row['meta_title'],

т.е. добавить выборку для тайтла.

У меня что то нет такой строки в 1.5.3.1 с ней решение не совместимо?

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


  • 3 weeks later...
  • 1 month later...

Поиском в версии 1.5.1.3 не находится. Есть такое

'name' => $product_attribute['name'],

'name' => $product_attribute_group['name'],

'name' => $product_option_value['name'],

'name' => $product_option['name'],

Такого нет

'name' => $query->row['name'],

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


  • 2 weeks later...
  • 4 weeks later...

Что-то я не пойму.. совсем запутался уже в этих сео, целый день читаю ветки по сео про, deadcow seo .. столько версий, уже голова пухнет, помогите :cry:

Можно по порядку?

Как я понимаю, в этой теме в первом посте обсуждается как добавить meta_title?

Я использую OpenCart 1.5.1.3 + deadcow + seo pro. Последний вроде уже был в моей сборке изначально, но при включении в настройках магазина толком не работал - не сохранял категории, товары, выплевывал ошибки про seo_title и seo_h1 и перезаписывал описания категорий на пустые значение. Я скачал с максзона оригинальный модуль seo pro для OpenCart 1.5.1.3 заменил из него файл - category.tpl, добавил себе файл seo_pro.php, которого почему то не было вообще. В таблицах probuct_description и category_description добавил поля seo_title и seo_h1.

Как корректно и полностью интегрировать поля seo_title и seo_h1 в OpenCart 1.5.1.3 (я так понимаю что их использует модуль seo pro)? Просто ведь добавить поля в базе недостаточно?

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


Что-то я не пойму.. совсем запутался уже в этих сео, целый день читаю ветки по сео про, deadcow seo .. столько версий, уже голова пухнет, помогите :cry:

Можно по порядку?

Как я понимаю, в этой теме в первом посте обсуждается как добавить meta_title?

Я использую OpenCart 1.5.1.3 + deadcow + seo pro. Последний вроде уже был в моей сборке изначально, но при включении в настройках магазина толком не работал - не сохранял категории, товары, выплевывал ошибки про seo_title и seo_h1 и перезаписывал описания категорий на пустые значение. Я скачал с максзона оригинальный модуль seo pro для OpenCart 1.5.1.3 заменил из него файл - category.tpl, добавил себе файл seo_pro.php, которого почему то не было вообще. В таблицах probuct_description и category_description добавил поля seo_title и seo_h1.

Как корректно и полностью интегрировать поля seo_title и seo_h1 в OpenCart 1.5.1.3 (я так понимаю что их использует модуль seo pro)? Просто ведь добавить поля в базе недостаточно?

Тоже долго не мог разобраться с этими SEO. После добавления таблиц в базу данных нужно выполнить пункты 2, 3 и 4 с первого поста этого топика. По идее этого достаточно.
Надіслати
Поділитися на інших сайтах


  • 2 months later...

Здравствуйте.

Версия 1.5.3.1 Не могу разобраться, что и как, в админке в категориях прописываю заголовки title и h1, только на страницах отображается только Название категории.

В настройка поставил ЧПУ SeoPro.

Что не так делаю?

выше прочитанное не понимаю так как в программировании полный 0.

Кто может помочь?

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


Здравствуйте.

Версия 1.5.3.1 Не могу разобраться, что и как, в админке в категориях прописываю заголовки title и h1, только на страницах отображается только Название категории.

В настройка поставил ЧПУ SeoPro.

Что не так делаю?

выше прочитанное не понимаю так как в программировании полный 0.

Кто может помочь?

Вам не нужно ничего делать. У вас title и h1 добавлены по умолчанию (если речь идет про ocStore). Просто вписывайте нужные значения в поля и все. Подробнее про Title и H1 можете почитать здесь.

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

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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