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

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


Recommended Posts

В основе моей темы информация от Ritter ( SEO-Title для категорий и товара [1.5] ) и itmgk ( title страницы в Opencart ), спасибо им.

То ли из-за ошибок, то ли из-за особенностей скриптов, но методы добавления поля title для OpenCart 1.5.1 и ocStore 1.0.1 немного отличаются.

Работоспособность опробовал сам здесь, пока все не заработало.

Итак, по порядку.

1) Добавление поля meta_title для категорий

1. Выполняем SQL-запрос к базе:

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

(вместо xxx ставиться свой префикс таблиц)

2. Редактирование admin/model/catalog/category.php

Ищем:

        $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']) . "'");

заменяем на:

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

Там же ниже ищем:

        $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']) . "'");

заменяем на:

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

Там же ниже ищем:

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

после добавляем (на новой строке):

        'meta_title' => $result['meta_title'],

3. Редактирование admin/controller/catalog/category.php

Ищем:

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

после добавляем:

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

4. Редактирование admin/language/russian/catalog/category.php

Находим:

        $_['entry_name'] = 'Category Name:';

после добавляем:

        $_['entry_meta_title'] = 'Title категории:';

5. Редактирование admin/view/template/catalog/category_form.tpl

Находим:

        <tr><td><?php echo $entry_meta_keywords; ?></td>

перед этим добавляем:

    
    <tr>
   	<td><?php echo $entry_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>

6. Редактирование 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']);
   	}

(это условие позволяет при незаполненном поле meta-title подставлять в титл страницы название категории)

2) Добавление поля meta_title для товаров

1. Выполняем SQL-запрос к базе:

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

(вместо xxx ставим свой префикс)

2. Редактирование admin/controller/catalog/product.php

Ищем:

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

после добавляем в новой строке:

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

3. Редактирование admin/language/russian/catalog/product.php

Находим:

        $_['entry_name']             = 'Название товара:';

после добавляем в новой строке:

        $_['entry_meta_title'] 	     = 'Title товара:';

4. Редактирование /admin/view/template/catalog/product_form.tpl:

Перед:

<td><?php echo $entry_meta_description; ?></td>

добавляем:

<tr>
 <td><?php echo $entry_meta_title; ?></td>
 <td><input type="text" name="product_description[<?php echo $language['language_id']; ?>][meta_title]" size="100" value="<?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['meta_title'] : ''; ?>" /></td>
</tr>

5. Редактирование /admin/model/catalog/product.php

Ищем:

        $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']) . "'");

заменяем на:

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

Ниже ищем:

        $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']) . "'");

заменяем на:

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

Ниже ищем:

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

после вставляем в новой строке:

        'meta_title'       => $result['meta_title'],

6. Редактирование /catalog/controller/product/product.php

Ищем строку:

    $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']);
   }

(это условие позволяет при незаполненном поле meta-title подставлять в титл страницы название товара)

7. Редактирование /catalog/model/catalog/product.php

Ищем:

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

после добавляем в новой строке:

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

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


  • 2 weeks later...

7. Редактирование /catalog/model/catalog/product.php

Ищем:

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

после добавляем в новой строке:

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

Такого не нашёл, но и без этого пункта всё работает. Спасибо !

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


Такого не нашёл, но и без этого пункта всё работает. Спасибо !

только что проверил лежащий у меня оригинал ocStore 1.0.1

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

это 19-я строка в файле /catalog/model/catalog/product.php

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


  • 1 month later...
  • 1 year later...

рано радовался :(

может кто откликнется

в карточке товара и в категории, в поле "титл" пишет следующее

"<b>Notice</b>: Undefined index: meta_title in <b>/home/bookbuyc/public_html/bookbuy.org.ua/admin/view/template/catalog/category_form.tpl</b> on line <b>41</b>"

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


Для добавления Title и H1в ocStore 1.0.1 нужно:

Произвести замены в описанных файлах.

Выполнить запрос:

ALTER TABLE oc_category_description ADD seo_title varchar(255) COLLATE utf8_general_ci NOT NULL;

ALTER TABLE oc_category_description ADD seo_h1 varchar(255) COLLATE utf8_general_ci NOT NULL;

ALTER TABLE oc_information_description ADD meta_description varchar(255) COLLATE utf8_general_ci NOT NULL;

ALTER TABLE oc_information_description ADD meta_keyword varchar(255) COLLATE utf8_general_ci NOT NULL;

ALTER TABLE oc_information_description ADD seo_title varchar(255) COLLATE utf8_general_ci NOT NULL;

ALTER TABLE oc_information_description ADD seo_h1 varchar(255) COLLATE utf8_general_ci NOT NULL;

ALTER TABLE oc_product_description ADD seo_title varchar(255) COLLATE utf8_general_ci NOT NULL;

ALTER TABLE oc_product_description ADD seo_h1 varchar(255) COLLATE utf8_general_ci NOT NULL;

CREATE TABLE IF NOT EXISTS oc_manufacturer_description (

manufacturer_id int(11) NOT NULL DEFAULT '0',

language_id int(11) NOT NULL DEFAULT '0',

description text COLLATE utf8_general_ci NOT NULL,

meta_description varchar(255) COLLATE utf8_general_ci NOT NULL,

meta_keyword varchar(255) COLLATE utf8_general_ci NOT NULL,

seo_title varchar(255) COLLATE utf8_general_ci NOT NULL,

seo_h1 varchar(255) COLLATE utf8_general_ci NOT NULL,

PRIMARY KEY (manufacturer_id,language_id)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

INSERT INTO oc_manufacturer_description (manufacturer_id, language_id) SELECT manufacturer_id, language_id FROM oc_manufacturer , oc_language;

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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