Перейти к содержанию
Ritter

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

Рекомендуемые сообщения

Тема для старых версий 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверено на 1.5.1.3. Работает.

Огромное вам спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у меня для товара не идет, для категории все нормально. Перепроверил несколько раз. Введено все правильно. При это в базе, в таблице в 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

извините за глупый вопрос, но что он будет выводить в качестве тайтла?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и что думаете насчет такой реализации? http://forum.opencart.com/viewtopic.php?t=23849

как я понял, использует поле для кейвордов в качестве тайтла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну что, никто не подскажет? :( :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо за помощь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выводить в качестве тайтла он будет то, что вы будете вводить в качестве тайтла 8)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

вместо:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

+1, тоже интересно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поиском в версии 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'],

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как можно прописать seo_title и seo_h1 для статей и страниц с производителями? Есть ли в этом смысл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×