Наверное многие из Вас при поиске модуля для своего магазина на opencart новой версии столкнулись с тем, что найденный модуль предназначен для более старых версий 1.4.x.
При попытке установить такой модуль на opencart 1.5.х он естественно работать не будет, так как в новой версии много чего изменено.
Давайте рассмотрим на примере скачанного модуля для opencart 1.4.x, как его можно быстро адаптировать для работы с новой версией opencart 1.5.х или ocstore 1.5.
И так. Качаем модуль. Этот модуль позволяет добавлять произвольный html в любом месте сайта.
Подобный модуль уже есть и для opencart 1.5, но мы возьмем именно этот для примера.
И так, для начала копируем скачанный модуль к себе на сайт.
В админской части в настройках включаем права на модуль (система-пользователи-группы пользователей-изменить. В списках ставим галочки возле названия установленного модуля и нажимаем «применить») .
Открываем файл admin/controller/module/mymodule.php.
Меняем в нем все вхождения
$this->document->title = $this->language->get('heading_title');
на
$this->document->setTitle($this->language->get('heading_title'));
Теперь меняем все вхождения
$this->document->breadcrumbs
на
$this->data['breadcrumbs']
И, наконец в самом конце функции index(), перед
$this->template =
вставляем
$this->data['modules'] = array();
if (isset($this->request->post[$this->_name. '_module'])) {
$this->data['modules'] = $this->request->post[[$this->_name. '_module'];
} elseif ($this->config->get([$this->_name. '_module')) {
$this->data['modules'] = $this->config->get([$this->_name. '_module');
}
$this->load->model('design/layout');
$this->data['layouts'] = $this->model_design_layout->getLayouts();
Теперь редактируем файл темплейта admin/view/template/module/
Меняем
<h1 style="background-image: url('view/image/module.png');"><?php echo $heading_title; ?></h1>
На
<h1><img src="view/image/module.png" alt="" /> <?php echo $heading_title; ?></h1>
Далее ищем
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
И ниже вставляем
<table id="module">
<thead>
<tr>
<td><?php echo $entry_limit; ?></td>
<td><?php echo $entry_image; ?></td>
<td><?php echo $entry_layout; ?></td>
<td><?php echo $entry_position; ?></td>
<td><?php echo $entry_status; ?></td>
<td><?php echo $entry_sort_order; ?></td>
<td></td>
</tr>
</thead>
<?php $module_row = 0; ?>
<?php foreach ($modules as $module) { ?>
<tbody id="module-row<?php echo $module_row; ?>">
<tr>
<td><input type="text" name="mymodule_module[<?php echo $module_row; ?>][limit]" value="<?php echo $module['limit']; ?>" size="1" /></td>
<td><input type="text" name="mymodule_module[<?php echo $module_row; ?>][image_width]" value="<?php echo $module['image_width']; ?>" size="3" />
<input type="text" name="mymodule_module[<?php echo $module_row; ?>][image_height]" value="<?php echo $module['image_height']; ?>" size="3" />
<?php if (isset($error_image[$module_row])) { ?>
<span><?php echo $error_image[$module_row]; ?></span>
<?php } ?></td>
<td><select name="mymodule_module[<?php echo $module_row; ?>][layout_id]">
<?php foreach ($layouts as $layout) { ?>
<?php if ($layout['layout_id'] == $module['layout_id']) { ?>
<option value="<?php echo $layout['layout_id']; ?>" selected="selected"><?php echo $layout['name']; ?></option>
<?php } else { ?>
<option value="<?php echo $layout['layout_id']; ?>"><?php echo $layout['name']; ?></option>
<?php } ?>
<?php } ?>
</select></td>
<td><select name="mymodule_module[<?php echo $module_row; ?>][position]">
<?php if ($module['position'] == 'content_top') { ?>
<option value="content_top" selected="selected"><?php echo $text_content_top; ?></option>
<?php } else { ?>
<option value="content_top"><?php echo $text_content_top; ?></option>
<?php } ?>
<?php if ($module['position'] == 'content_bottom') { ?>
<option value="content_bottom" selected="selected"><?php echo $text_content_bottom; ?></option>
<?php } else { ?>
<option value="content_bottom"><?php echo $text_content_bottom; ?></option>
<?php } ?>
<?php if ($module['position'] == 'column_left') { ?>
<option value="column_left" selected="selected"><?php echo $text_column_left; ?></option>
<?php } else { ?>
<option value="column_left"><?php echo $text_column_left; ?></option>
<?php } ?>
<?php if ($module['position'] == 'column_right') { ?>
<option value="column_right" selected="selected"><?php echo $text_column_right; ?></option>
<?php } else { ?>
<option value="column_right"><?php echo $text_column_right; ?></option>
<?php } ?>
</select></td>
<td><select name="mymodule_module[<?php echo $module_row; ?>][status]">
<?php if ($module['status']) { ?>
<option value="1" selected="selected"><?php echo $text_enabled; ?></option>
<option value="0"><?php echo $text_disabled; ?></option>
<?php } else { ?>
<option value="1"><?php echo $text_enabled; ?></option>
<option value="0" selected="selected"><?php echo $text_disabled; ?></option>
<?php } ?>
</select></td>
<td><input type="text" name="mymodule_module[<?php echo $module_row; ?>][sort_order]" value="<?php echo $module['sort_order']; ?>" size="3" /></td>
<td><a onclick="$('#module-row<?php echo $module_row; ?>').remove();"><span><?php echo $button_remove; ?></span></a></td>
</tr>
</tbody>
<?php $module_row++; ?>
<?php } ?>
<tfoot>
<tr>
<td colspan="6"></td>
<td><a onclick="addModule();"><span><?php echo $button_add_module; ?></span></a></td>
</tr>
</tfoot>
</table>
И в самом конце перед
<?php echo $footer; ?>
Вставляем
<script type="text/javascript"><!--
var module_row = <?php echo $module_row; ?>;
function addModule() {
html = '<tbody id="module-row' + module_row + '">';
html += ' <tr>';
html += ' <td><input type="text" name="mymodule_module[' + module_row + '][limit]" value="4" size="1" /></td>';
html += ' <td><input type="text" name="mymodule_module[' + module_row + '][image_width]" value="80" size="3" /> <input type="text" name="mymodule_module[' + module_row + '][image_height]" value="80" size="3" /></td>';
html += ' <td><select name="mymodule_module[' + module_row + '][layout_id]">';
<?php foreach ($layouts as $layout) { ?>
html += ' <option value="<?php echo $layout['layout_id']; ?>"><?php echo $layout['name']; ?></option>';
<?php } ?>
html += ' </select></td>';
html += ' <td><select name="mymodule_module[' + module_row + '][position]">';
html += ' <option value="content_top"><?php echo $text_content_top; ?></option>';
html += ' <option value="content_bottom"><?php echo $text_content_bottom; ?></option>';
html += ' <option value="column_left"><?php echo $text_column_left; ?></option>';
html += ' <option value="column_right"><?php echo $text_column_right; ?></option>';
html += ' </select></td>';
html += ' <td><select name="mymodule_module[' + module_row + '][status]">';
html += ' <option value="1" selected="selected"><?php echo $text_enabled; ?></option>';
html += ' <option value="0"><?php echo $text_disabled; ?></option>';
html += ' </select></td>';
html += ' <td><input type="text" name="mymodule_module[' + module_row + '][sort_order]" value="" size="3" /></td>';
html += ' <td><a onclick="$(\'#module-row' + module_row + '\').remove();"><span><?php echo $button_remove; ?></span></a></td>';
html += ' </tr>';
html += '</tbody>';
$('#module tfoot').before(html);
module_row++;
}
//--></script>
Осталось добавить только недостающие записи в файл admin/language/russian/module/mymodule
$_['text_content_top'] = 'Содержание шапки';
$_['text_content_bottom'] = 'Содержание подвала';
$_['entry_limit'] = 'Лимит:';
$_['entry_image'] = 'Изображение (Ширина x Высота):';
$_['entry_layout'] = 'Схема:';
Ну и в файле admin/controller/module/mymodule.php назначить эти записи переменным темплейта (где-то внутри функции index()):
$this->data['text_content_top'] = $this->language->get('text_content_top');
$this->data['text_content_bottom'] = $this->language->get('text_content_bottom');
$this->data['entry_limit'] = $this->language->get('entry_limit');
$this->data['entry_image'] = $this->language->get('entry_image');
$this->data['entry_layout'] = $this->language->get('entry_layout');
Собственно и все . Теперь наш модуль должен работать.
PS: если Вы заметили, параметр image в данном модуле неуместен. Поэтому его и другие ненужные удаляем , добавляем свои, нужные именно для вашего модуля. Тут у каждого отдельного модуля по-своему, но общий смысл, думаю понятен.