Например, необходимо добавить поле, которое будет выводить произвольный заголовок на странице категории, взамен штатному. За основу возмем название переменной heading_user_title.
1. Добавляем запрос в базу данных для создания нового поля:
|
1 |
ALTER TABLE `oc_category_description` ADD `heading_user_title` varchar(255) NOT NULL; |
2. В шаблоне вывода категории /catalog/view/theme/тема/template/product/category.tpl заменяем строку:
|
1 |
<h1><?php echo $heading_user_title; ?></h1> |
на
|
1 2 3 |
<?php if ($heading_user_title) { ?> <h1><?php echo $heading_user_title; ?></h1> <?php } ?> |
3. В языковом файле /admin/language/russian/catalog/category.php добавляем поле:
|
1 |
$_['entry_heading_user_title'] = 'Произвольный заголовок'; |
4. В шаблоне админки редактирования категории /admin/view/template/catalog/category_form.tpl после:
|
1 2 3 4 |
<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> |
добавляем поле
|
1 2 3 4 |
<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 в строку:
|
1 2 3 |
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']) . "'"); } |
добавляем
|
1 |
heading_user_title = '" . $this->db->escape($value['heading_user_title']) . "', |
код полностью будет выглядеть так:
|
1 2 3 |
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 строка.
Далее в функции:
|
1 2 3 4 5 6 7 8 9 10 |
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'], ); } |
добавляем строку:
|
1 |
'heading_user_title' => $result['heading_user_title'] |
и получаем такой код:
|
1 2 3 4 5 6 7 8 9 10 11 |
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 после:
|
1 |
$this->data['entry_description'] = $this->language->get('entry_description'); |
добавляем
|
1 |
$this->data['entry_heading_user_title'] = $this->language->get('entry_heading_user_title'); |
7. В файле /catalog/controller/product/category.php после:
|
1 |
$this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); |
добавляем
|
1 |
$this->data['heading_user_title'] = html_entity_decode($category_info['heading_user_title'], ENT_QUOTES, 'UTF-8'); |
и после:
|
1 |
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..', |
добавляем
|
1 |
'heading_user_title' => utf8_substr(strip_tags(html_entity_decode($result['heading_user_title'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..', |
https://codemaniac.ru/snip/cms/opencart/opencart-dobavit-novoe-pole-na-stranicu-kategorii-136.html