Инструкция по добавлению дополнительного поля "Краткое описание" к товару и его вывод в модулях "Рекомендуем", "Последнее", "Популярное" и других, которые выводятся на главную страницу. При желании это краткое описание можно выводить после этих изменений где угодно. За основу была взята статья Владислава Храмцова для добавления такого же поля но для OpenCart <1.5. Данный гайд составлен и точно работает на OpenCart 1.5.1.3.
1. Создаем дополнительное поле short_description в базе данных в таблице product_description. Распологаться оно должно перед полем description. Первый шаг совпадает с первым шагом статьи от Влада. Там можно посмотреть скриншоты.
2. Открываем файл product.php (../admin/controller/catalog) и после строки 544
$this->data['entry_description'] = $this->language->get('entry_description');
вставляем строку
$this->data['entry_short_description'] = $this->language->get('entry_short_description');
3. Открываем файл product.php (../admin/language/russian/catalog) и перед этой строкой (32):
$_['entry_description'] = 'Описание:';
вставляем строку
$_['entry_short_description'] = 'Краткое описание:';
4. Далее открываем файл product_form.tpl (../admin/view/template/catalog) и после этих строк (47-50):
<tr>
<td><?php echo $entry_meta_description; ?></td>
<td><textarea name="product_description[<?php echo $language['language_id']; ?>][meta_description]" cols="100" rows="2"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['meta_description'] : ''; ?></textarea></td>
</tr>
вставляем
<tr>
<td><?php echo $entry_short_description; ?></td>
<td><textarea name="product_description[<?php echo $language['language_id']; ?>][short_description]" cols="40" rows="5"><?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['short_description'] : ''; ?></textarea></td>
</tr>
5. Открываем файл product.php (../admin/model/catalog) и строку 13:
$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']) . "', short_description = '" . $this->db->escape($value['short_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
Далее строку 139
$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']) . "', short_description = '" . $this->db->escape($value['short_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
И наконец после строки 473
'meta_description' => $result['meta_description'],
вставляем
'short_description' => $result['short_description']Не забудьте поставить после строки 473 запятую в конце.После этого идем в админку на страницу редактирования товара, должно появиться поле "Краткое описание" как на изображении ниже
6. Далее выведем значение этого поля в нужные нам места, рассмотрим на примере вывода в популярных товарах, для других модулей вы сможете сделать это по аналогии, процесс совершенно идентичен.
Откройте файл featured.php (../catalog/controller/module) и после строки 48
'product_id' => $product_info['product_id'],
вставьте
'short_description' => $product_info['short_description'],
7. Далее откройте файл featured.tpl (../catalog/view/theme/default/template/module) и после этой строки (9):
<div class="product-name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
вставьте<div class="shortdesc"><?php echo $product['short_description']; ?></div>
Если вы выполнили все шаги правильно, вы увидите приблизительно следующее