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

Анкоры ссылок. Настраиваем через админ панель [SEO]


Maks

Recommended Posts

У OpenCart есть недостаток давно раздражавший меня (v. 1.5.1.3)

Речь об отсутствии возможности задания анкоров ссылок как для товара так и для категорий. Использовать их нужно как минимум в хлебных крошках.

Взявшись за это дело и потратив 2 часа нашел нижеследующее решение для анкора ссылок в карточке товара:

1. В таблицу "_product_description" добавить поле seo_ankor

Запрос:

ALTER TABLE `[ПРЕФИКС БД]_product_description` ADD `seo_ankor` varchar(255) COLLATE utf8_general_ci NOT NULL

2. по желанию скопировать данные из seo_h1 в новое поле

Запрос

UPDATE `[ПРЕФИКС БД]_product_description` SET `seo_ankor`=`seo_h1`

3. Изменяем файлы

3.1. Файл: [корень_сайта]admincontrollercatalogproduct.php

После строки:

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

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

3.2. Файл: [корень_сайта]adminlanguageenglishcatalogproduct.php

После строки:

$_['entry_seo_h1']		   = 'HTML Tag H1:';
Добавляем:

$_['entry_seo_ankor']		= 'Ankor:';

3.3. Файл: [корень_сайта]adminlanguagerussiancatalogproduct.php

После строки

$_['entry_seo_h1']		   = 'HTML-тег H1:';
Добавляем

$_['entry_seo_ankor']		= 'Текст анкора:';

3.4. Файл: [корень_сайта]adminmodelcatalogproduct.php

3.4.1 Строку:

$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']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
Меняем на:

$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']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "', seo_ankor = '" . $this->db->escape($value['seo_ankor']) . "'");
3.4.2. Строку:

$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']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
Меняем на:

$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']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "', seo_ankor = '" . $this->db->escape($value['seo_ankor']) . "'");
3.4.3 После строк:

foreach ($query->rows as $result) {
			$product_description_data[$result['language_id']] = array(
				'seo_title'		=> $result['seo_title'],
				'seo_h1'		   => $result['seo_h1'],
Вставляем строку:

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

3.5. Файл: [корень_сайта]adminviewtemplatecatalogproduct_form.tpl

Перед строками:

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

Добавляем:

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

3.6. Файл: [корень_сайта]catalogcontrollerproductproduct.php

3.6.1. Строки:

$this-&gt;data['breadcrumbs'][] = array(
				'text'	  =&gt; $product_info['name'],

				'href'	  =&gt; $this-&gt;url-&gt;link('product/product', $url . '&amp;product_id=' . $this-&gt;request-&gt;get['product_id']),
				'separator' =&gt; $this-&gt;language-&gt;get('text_separator')
			);
Меняем на строки:

if ($product_info['seo_ankor']) {
				$this-&gt;data['breadcrumbs'][] = array(
					'text'	  =&gt; $product_info['seo_ankor'],
					'href'	  =&gt; $this-&gt;url-&gt;link('product/product', $url . '&amp;product_id=' . $this-&gt;request-&gt;get['product_id']),
					'separator' =&gt; $this-&gt;language-&gt;get('text_separator')
				);			
			} else {
				$this-&gt;data['breadcrumbs'][] = array(
					'text'	  =&gt; $product_info['name'],
					'href'	  =&gt; $this-&gt;url-&gt;link('product/product', $url . '&amp;product_id=' . $this-&gt;request-&gt;get['product_id']),
					'separator' =&gt; $this-&gt;language-&gt;get('text_separator')
				);			
			}

3.6.2. После строки:

$this-&gt;data['seo_h1'] = $product_info['seo_h1'];
Добавляем:

$this-&gt;data['seo_ankor'] = $product_info['seo_ankor'];

4. Заходим в админке в позицию товара, меняем поле [общие][текст анкора]

post-17215-0-43585300-1334171836_thumb.jpg

5. На сайте видим

post-17215-0-55323300-1334171854_thumb.jpg

P.S.

При отсутствии анкора берется поле названия товара, т.е. так как по умолчанию

Поле во вкладке "English" не используется

P.P.S.

Чуть позже сделаю аналогичное для категорий товаров

Для категорий тоже сделано. См. следующий пост.

Просьба к народным умельцам - собрать XML для VQMod

Спасибо всем за внимание! Надеюсь сделал полезную вещь для всех.

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


Как и обещал, реализовал настройку и вывод на сайт анкора ссылок в категориях

Порядок действий аналогичен измененям при добавлении анкоров в карточки товаров.

1. В таблицу "_category_description" добавить поле seo_ankor

Запрос:

ALTER TABLE `[ПРЕФИКС БД]_category_description` ADD `seo_ankor` varchar(255) COLLATE utf8_general_ci NOT NULL

2. по желанию скопировать данные из seo_h1 в новое поле

Запрос:

UPDATE `[ПРЕФИКС БД]_category_description` SET `seo_ankor`=`seo_h1`

3. Изменяем файлы

3.1. Файл: [корень_сайта]\admin\controller\catalog\category.php

После строки:

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

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

3.2. Файл: [корень_сайта]\admin\language\english\catalog\category.php

После строки:

$_['entry_seo_h1']		   = 'HTML Tag H1:';
Добавляем:

$_['entry_seo_ankor']		= 'Ankor for link:';

3.3. Файл: [корень_сайта]\admin\language\russian\catalog\category.php

После строки

$_['entry_seo_h1']		   = 'HTML-тег H1:';
Добавляем

$_['entry_seo_ankor']		= 'Анкор ссылки:';

3.4. Файл: [корень_сайта]\admin\model\catalog\category.php

3.4.1 Строку(13):

$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']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
Меняем на:

$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']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_ankor = '" . $this->db->escape($value['seo_ankor']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
3.4.2. Строку(47):

$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']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
Меняем на:

$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']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_ankor = '" . $this->db->escape($value['seo_ankor']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
3.4.3 После строк:

foreach ($query->rows as $result) {
			$category_description_data[$result['language_id']] = array(
				'seo_title'		=> $result['seo_title'],
				'seo_h1'		   => $result['seo_h1'],
Вставляем строку:

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

3.5. Файл: [корень_сайта]\admin\view\template\catalog\category_form.tpl

Перед строками:

			  <tr>
				<td><?php echo $entry_seo_h1; ?></td>
				<td><input type="text" name="category_description[<?php echo $language['language_id']; ?>][seo_h1]" maxlength="255" size="100" value="<?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['seo_h1'] : ''; ?>" /></td>
			  </tr>
Добавляем:

			  <tr>
				<td><?php echo $entry_seo_ankor; ?></td>
				<td><input type="text" name="category_description[<?php echo $language['language_id']; ?>][seo_ankor]" maxlength="255" size="100" value="<?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['seo_ankor'] : ''; ?>" /></td>
			  </tr>

3.6. Файл: [корень_сайта]\catalog\controller\product\category.php

3.6.1. Строки:

if ($category_info) {
   					$this->data['breadcrumbs'][] = array(
						   'text'	  => $category_info['name'],

						'href'	  => $this->url->link('product/category', 'path=' . $path),
						'separator' => $this->language->get('text_separator')
					);
				}
Меняем на строки:

if ($category_info) {
					if($category_info['seo_ankor']) {
   					$this->data['breadcrumbs'][] = array(
						   'text'	  => $category_info['seo_ankor'],
						'href'	  => $this->url->link('product/category', 'path=' . $path),
						'separator' => $this->language->get('text_separator')
					);
					} else {
   					$this->data['breadcrumbs'][] = array(
						   'text'	  => $category_info['name'],
						'href'	  => $this->url->link('product/category', 'path=' . $path),
						'separator' => $this->language->get('text_separator')
					);
					}
				}

3.6.2. После строки:

[code$this->data['seo_h1'] = $category_info['seo_h1'];[/code]

Добавляем:

$this->data['seo_ankor'] = $category_info['seo_ankor'];

4. Заходим в админке в свойства категории, меняем поле [общие]\[Анкор ссылки:]

post-17215-0-81849700-1334224588_thumb.jpg

5. На сайте видим

post-17215-0-54486500-1334224603_thumb.jpg

P.S.

При отсутствии анкора берется поле названия категории, т.е. так как по умолчанию

Поле во вкладке "English" не используется

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


  • 4 weeks later...
  • 3 weeks later...

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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