Блог. Скрипты

Добавление новых полей в Opencart

Нам понадобятся прямые руки, голова, текстовый редактор Notepad++, PHP, клиент Mysql PhpmyAdmin и ftp-клиент FileZilla.

Первый шаг - изменение административной части сайта

Разберемся для начала с административной частью, чтобы мы могли нормально вносить значения description и keywords. В административной части правок коснутся 4 файла (контроллер, модель, представление, языковый файл) и база данных.

База данных. Заходим в любимый mysql-client (кто в командной строке, кто в phpMyAdmin и др.) и выполняем в контексте БД OpenCart скрипт:

ALTER TABLE `oc_information_description` ADD `meta_description` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL ,
ADD `meta_keyword` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

Не забываем поменять приставку «oc_», если вы ее меняли при установке.

Далее все работы будут проводиться в файлах сайта через ftp-клиент FileZilla.

Представление. Надо отредактировать файл «admin/view/template/catalog/information_form.tpl». После, примерно, 27 строки вставляем следующий текст (он должен получится в блоке <table class="form">):

<tr>
	<td><?php echo $entry_meta_description; ?></td>
	<td><textarea name="information_description[<?php echo $language['language_id']; ?>][meta_description]" cols="40" rows="5"><?php echo isset($information_description[$language['language_id']]) ? $information_description[$language['language_id']]['meta_description'] : ''; ?></textarea></td>
</tr>
<tr>
	<td><?php echo $entry_meta_keyword; ?></td>
	<td><textarea name="information_description[<?php echo $language['language_id']; ?>][meta_keyword]" cols="40" rows="5"><?php echo isset($information_description[$language['language_id']]) ? $information_description[$language['language_id']]['meta_keyword'] : ''; ?></textarea></td>
</tr>

Контроллер. Надо отредактировать файл «admin/controller/catalog/information.php» . После, примерно, 270 строки вставить текст (он должен получиться внутри метода getForm):

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

Модель. Надо отредактировать файл «admin/model/catalog/information.php». После, примерно, 142 строки вставить следующий текст:

'meta_keyword' => $result['meta_keyword'],
'meta_description' => $result['meta_description'],

В 39й строке после слова SET (не забыть пробел) вставить текст:

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

В 9й строке произвести аналогичную операцию. (Делаем с конца файла, чтобы не сбить порядок строк)

Языковый файл. Необходимо в файле «admin/language/english/catalog/information.php» внести следующие строки после 14й строки

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

Если у Вас есть другой языковый файл, сделайте по аналогии.

Административная часть закончена и мы уже можем редактировать данные поля через «админку».

Второй этап - вывод нужной информации из полей CMS на FrontEnd сайта

Тут все будет намного проще. Нужно будет отредактировать всего ОДИН файл

Контроллер. Редактируем файл «catalog/controller/information/information.php».

После 24й строки в блок «if» вставляем строки

$this->document->setDescription($information_info['meta_description']);
$this->document->setKeywords($information_info['meta_keyword']);

Проверяем результат на сайте.

Смотреть все статьи