Описание производителя в OpenCart

в OpenCart можно добавить описание практически ко всему, начиная от товара, заканчивая категориями. Но, к сожалению, в новых версиях OpenCart не предусмотрен вывод описания производителя. В этой статье мы рассмотрим как сделать вывод описания производителя на любой шаблон в OpenCart. Само собой рассмотрим ошибки и как это устранить.

Что надо знать перед любой работой.

  1. Желательно сделать резервную копию всех файлов которые лежат на FTP
  2. Желательно сделать резервную копию SQL базы сайта
  3. Обязательно, перед тем как менять файл сделайте его копию прямо на FTP (хостинге сайта), к примеру как на картинке ниже. Файл manufacturer_info.tpl над которым мы работаем, и его копия «manufacturer_info_2.tpl» на случай если что-то пойдет не так.резерваня копия файлов в OpenCart
  4. После того как мы добились того что хотели, обязательно переименуйте копию файла в нормальное описание, чтобы вы знали какая именно в них разница. К примеру, на картинке выше это файлы «category-bez-cartinok-vo-vlogenih-categoriyah.tpl» и «product_s_bonysnimi-balami.tpl»

Если вы будете придерживаться инструкции выше, то шансы что вы навредите сайту минимальные.

Как добавить описание производителя в OpenCart. Панель администратора

Поскольку описание мы будем вводить в панели администратор, как и в случае с другими описаниями, то сначала давайте разберемся как добавить в панель администратора описание производителя. Шаг 1 в файле  admin/controller/catalog/manufacturer.php Найдите функцию :

private function getForm() {

И еще чуть ниже строчки:

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

OpenCart добавить описание производителя

Добавьте сразу после них такой код:

$this->data['entry_meta_keywords'] = $this->language->get('entry_meta_keywords'); 
$this->data['entry_meta_description'] = $this->language->get('entry_meta_description');
$this->data['entry_description'] = $this->language->get('entry_description');
$this->data['tab_general'] = $this->language->get('tab_general'); 
$this->data['tab_wdata'] = $this->language->get('tab_data');

Шаг 2 в том же файле найдите код.

if (isset($this->request->get['manufacturer_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { $manufacturer_info =$this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']);}

Скорее всего вы не сможете найти его целиком, поэтому попробуйте найти только первую его часть:

if (isset($this->request->get['manufacturer_id']) && ($this->request->

OpenCart добавить описание производителя

и сразу после него вставьте. (После всего кода, который в начале шага, а не после его части. Пункт с частью, был приведен чтобы вы быстрее нашли нужный участок!)

$this->model_catalog_manufacturer->w_manufacturerDescriptionInstall(); /* create database table */
 
$this->load->model('localisation/language');
 
$this->data['languages'] = $this->model_localisation_language->getLanguages();
 
if (isset($this->request->post['manufacturer_description'])) {
$this->data['manufacturer_description'] = $this->request->post['manufacturer_description'];
} else
if (isset($manufacturer_info)) {
$this->data['manufacturer_description'] = $this->model_catalog_manufacturer->getManufacturerDescriptions($this->request->get['manufacturer_id']);
} else {
$this->data['manufacturer_description'] = array();
}

Шаг 3 в файле

admin/language/russian/catalog/manufacturer.php

В самом конце, перед закрывающимся тегом

?>

добавьте код:

$_['entry_meta_keywords']  = 'Meta Tag Keywords:'; $_['entry_meta_description'] = 'Meta Tag Description:'; $_['entry_description']      = 'Description:';

OpenCart добавить описание производителя

 Шаг 4 в файле admin/model/catalog/manufacturer.php

Найдите функцию 

public function addManufacturer($data) {

В ней найдите строчку 

if (isset($data['manufacturer_store'])) {

OpenCart добавить описание производителя

И перед этой строчкой вставьте код:

foreach ($data['manufacturer_description'] as $language_id => $value) {
 $this->db->query("INSERT INTO " . DB_PREFIX . "manufacturer_description SET manufacturer_id = '" . (int)$manufacturer_id . "', language_id = '" . (int)$language_id . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
 }

 

Шаг 5 в этом же файле Найдите функцию:

public function editManufacturer($manufacturer_id, $data) {

После нее найдите код:

$this->db->query("DELETE FROM " . DB_PREFIX . "manufacturer_to_store WHERE manufacturer_id = '" . (int)$manufacturer_id . "'");

OpenCart добавить описание производителя

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

$this->db->query("DELETE FROM " . DB_PREFIX . "manufacturer_description WHERE manufacturer_id = '" . (int)$manufacturer_id . "'"); 
foreach ($data['manufacturer_description'] as $language_id => $value) {
$this->db->query("INSERT INTO " . DB_PREFIX . "manufacturer_description SET manufacturer_id = '" . (int)$manufacturer_id . "', language_id = '" . (int)$language_id . "', meta_keywords = '" . $this->db->escape($value['meta_keywords']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");
}

 

Шаг 6 в этом же файле Найдите код: 

public function getTotalManufacturers() {
  $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "manufacturer");
 return $query->row['total'];
  }

OpenCart добавить описание производителя

После него вставьте:

public function getManufacturerDescriptions($manufacturer_id) { $manufacturer_description_data = array();
 
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "manufacturer_description WHERE manufacturer_id = '" . (int)$manufacturer_id . "'");
foreach ($query->rows as $result) {
$manufacturer_description_data[$result['language_id']] = array(
'meta_keywords' => $result['meta_keywords'],
'meta_description' => $result['meta_description'],
'description' => $result['description']
);
}
return $manufacturer_description_data;
}
public function w_manufacturerDescriptionInstall() {
$sql = "
CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "manufacturer_description` (
`manufacturer_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL,
`meta_keywords` varchar(255) NOT NULL,
`meta_description` varchar(255) NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`manufacturer_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
";
$query = $this->db->query($sql);
}
 
<span style="line-height: 1.5em;"> </span>

Шаг 7 замените

admin/view/template/catalog/manufacturer_form.tpl

файлом по ссылке. Обязательно сделайте резервную копию старого файла. Все. административную часть мы закончили. Теперь вы можете зайти в Каталог->Производители и внести пробные описания.

Вывести описание производителя в OpenCart. Выводим на сайт

После того как мы внесли все правки в панель администратора. Теперь надо внести правки в файлы сайта, чтобы собственно выводилось описание. Шаг 8 в файле  

catalog/controller/product/manufacturer.php

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

$this->document->title = $manufacturer_info['name'];

Если у вас этой строчки нет, то найдите:

$this->document->setTitle($manufacturer_info['name']);

OpenCart добавить описание производителя

Добавьте код:

$this->model_catalog_manufacturer->w_manufacturerDescriptionInstall(); /* create database table */
 $w_manufacturerDescription = $this->model_catalog_manufacturer->getManufacturerDescription($this->request->get['manufacturer_id']);
  if ($w_manufacturerDescription) {
  $this->document->keywords = $w_manufacturerDescription['meta_keywords'];
  $this->document->description = $w_manufacturerDescription['meta_description'];
 $this->data['description'] = html_entity_decode($w_manufacturerDescription['description'], ENT_QUOTES, 'UTF-8');
  }

Шаг 9 в файле  

catalog/controller/product/manufacturer.php

В конце файла найдите строки:

} ?>

OpenCart добавить описание производителя

И перед ним добавьте код

$this->model_catalog_manufacturer->w_manufacturerDescriptionInstall(); /* create database table */
<span style="line-height: 1.5em;">$w_manufacturerDescription = $this->model_catalog_manufacturer->getManufacturerDescription($this->request->get['manufacturer_id']);</span>
 if ($w_manufacturerDescription) {
 $this->document->keywords = $w_manufacturerDescription['meta_keywords'];
 $this->document->description = $w_manufacturerDescription['meta_description'];
<span style="line-height: 1.5em;">$this->data['description'] = html_entity_decode($w_manufacturerDescription['description'], ENT_QUOTES, 'UTF-8');</span>
 }

Шаг 10 в файле  

catalog/view/theme/Ваша-Тема/template/product/manufacturer.tpl

Если у вас такого файла нет, ищите

 catalog/view/theme/Ваша-Тема/template/product/manufacturer_info.tpl

Перед  строчкой

<div_class="sort" >

(Когда будете искать, поставьте скобку в начале < и в конце > без пробелов)

opencart не запускаются производители

Добавьте код

<?php if (isset($description) || isset($thumb)) { ?>     <table style="padding-bottom:10px;">   
<tr>     <?php if (isset($thumb)) { ?>         <td><img src="<?php echo $thumb; ?>" alt="<?php echo $heading_title; ?>" /></td>     <?php } ?>     <?php if (isset($description)) { ?>         <td><?php echo $description; ?></td>     <?php } ?>   </tr>     </table>   <?php } ?>

Работа над возможными ошибками. Ошибка №1 Если у вас после всех изменений не грузиться страница с производителем вам надо, в файле catalog/controller/product/manufacturer.php удалить строчки

$this->document->keywords = $w_manufacturerDescription['meta_keywords'];
 $this->document->description = $w_manufacturerDescription['meta_description'];

Они отвечают за вывод ключевых слов, и описания для Google. Ошибка №2 Если у вас описание производителя выводится сразу после «Вид: Список / Сетка» и вы хотите перенести его ниже, вам надо: Код в шаге 10 разместить перед строчками

<div class="product-compare"><a href="<?php echo $compare; ?>" id="compare-total"><?php echo $text_compare; ?></a></div>
  <div class="product-list">

Если вы не найдете строчки выше (в зависимости от шаблона), то разместите после

<?php } ?>
  <?php } ?>
  </select>
  </div>
  </div>

Ошибка №3 Если у вас описание выводиться и сверху, и снизу, как показано на картинке снизу: Opencart ошибка в описанииТо в том же файле catalog/controller/product/manufacturer.php удалите строчку

<div><?php echo $description; ?></div>

На этом все. Если вы все сделали по инструкции, то у вас все должно получится. Если у вас возникли какие либо проблемы и вопросы, пишите в комментариях, попробую помочь.

загрузка...
Один комментарий

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *