Домен продается, подробности тут

OpenCart. Добавить новое поле на страницу категории

Например, необходимо добавить поле, которое будет выводить произвольный заголовок на странице категории, взамен штатному. За основу возмем название переменной heading_user_title.

1. Добавляем запрос в базу данных для создания нового поля:

ALTER TABLE `oc_category_description` ADD `heading_user_title` varchar(255) NOT NULL;

2. В шаблоне вывода категории /catalog/view/theme/тема/template/product/category.tpl заменяем строку:

<h1><?php echo $heading_user_title; ?></h1>

на

<?php if ($heading_user_title) { ?>
<h1><?php echo $heading_user_title; ?></h1>
<?php } ?>

3. В языковом файле /admin/language/russian/catalog/category.php добавляем поле:

$_['entry_heading_user_title'] = 'Произвольный заголовок';

4. В шаблоне админки редактирования категории /admin/view/template/catalog/category_form.tpl после:

<tr>
<td><?php echo $entry_description; ?></td>
<td><textarea name="category_description[<?php echo $language['language_id']; ?>][description]" id="description<?php echo $language['language_id']; ?>"><?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['description'] : ''; ?></textarea></td>
</tr>

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

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

5. В /admin/model/catalog/category.php в строку:

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']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
}

добавляем

heading_user_title = '" . $this->db->escape($value['heading_user_title']) . "',

код полностью будет выглядеть так:

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']) . "', heading_user_title = '" . $this->db->escape($value['heading_user_title']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'");
}

Аналогичные изменения делаем в строке ниже, примерно 66 строка.

Далее в функции:

foreach ($query->rows as $result) {
$category_description_data[$result['language_id']] = array(
'seo_title' => $result['seo_title'],
'seo_h1' => $result['seo_h1'],
'name' => $result['name'],
'meta_keyword' => $result['meta_keyword'],
'meta_description' => $result['meta_description'],
'description' => $result['description'],


);
}

добавляем строку:

'heading_user_title' => $result['heading_user_title']

и получаем такой код:

foreach ($query->rows as $result) {
$category_description_data[$result['language_id']] = array(
'seo_title' => $result['seo_title'],
'seo_h1' => $result['seo_h1'],
'name' => $result['name'],
'meta_keyword' => $result['meta_keyword'],
'meta_description' => $result['meta_description'],
'description' => $result['description'],
'heading_user_title' => $result['heading_user_title']

);
}

6. В файле /admin/controller/catalog/category.php после:

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

добавляем

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

7. В файле /catalog/controller/product/category.php после:

$this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');

добавляем

$this->data['heading_user_title'] = html_entity_decode($category_info['heading_user_title'], ENT_QUOTES, 'UTF-8');

и после:

'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..',

добавляем

'heading_user_title' => utf8_substr(strip_tags(html_entity_decode($result['heading_user_title'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..',

 

 First maniac| 13.08.2015 10:23
Рейтинг
1 комментарий
22.11.2015 01:51
Все работает, но одновременно с этим появилась ошибка: «PHP Notice: Undefined index: heading_user_title ». В чем может быть причина?
Для написания комментария необходимо Войти или Зарегистрироваться
Войти на сайт