Как переделать модуль от старых версий opencart на opencart 1.5.x или ocstore 1.5
2012-02-18 16:12:08 Комментариев: 0 Просмотров: 519

Наверное многие из Вас при поиске модуля для своего магазина на 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" class="list">

        <thead>

          <tr>

                      <td class="left"><?php echo $entry_limit; ?></td>

                      <td class="left"><?php echo $entry_image; ?></td>

            <td class="left"><?php echo $entry_layout; ?></td>

            <td class="left"><?php echo $entry_position; ?></td>

            <td class="left"><?php echo $entry_status; ?></td>

            <td class="right"><?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 class="left"><input type="text" name="mymodule_module[<?php echo $module_row; ?>][limit]" value="<?php echo $module['limit']; ?>" size="1" /></td>

                                         

        <td class="left"><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 class="error"><?php echo $error_image[$module_row]; ?></span>

              <?php } ?></td>

            <td class="left"><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 class="left"><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 class="left"><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 class="right"><input type="text" name="mymodule_module[<?php echo $module_row; ?>][sort_order]" value="<?php echo $module['sort_order']; ?>" size="3" /></td>

            <td class="left"><a onclick="$('#module-row<?php echo $module_row; ?>').remove();" class="button"><span><?php echo $button_remove; ?></span></a></td>

                           </tr>

        </tbody>

        <?php $module_row++; ?>

        <?php } ?>

        <tfoot>

          <tr>

            <td colspan="6"></td>

            <td class="left"><a onclick="addModule();" class="button"><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 class="left"><input type="text" name="mymodule_module[' + module_row + '][limit]" value="4" size="1" /></td>';

            html += '    <td class="left"><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 class="left"><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 class="left"><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 class="left"><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 class="right"><input type="text" name="mymodule_module[' + module_row + '][sort_order]" value="" size="3" /></td>';

            html += '    <td class="left"><a onclick="$(\'#module-row' + module_row + '\').remove();" class="button"><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');

 

Собственно и все J. Теперь наш модуль должен работать.

 

PS: если Вы заметили, параметр image в данном модуле неуместен. Поэтому его и другие ненужные удаляем , добавляем свои, нужные именно для вашего модуля. Тут у каждого отдельного модуля по-своему, но общий смысл, думаю понятен.

 

Оставить комментарий

Ваше Имя:


Ваш комментарий: Внимание: HTML не поддерживается! Используйте обычный текст.

Оценка: Плохо            Хорошо

Введите код, указанный на картинке:



 
СТАТЬИ
 
Последние статьи
Решаем проблему некорректно работающих отчетов в опенкарт 1.5.1.3 Те, кто обновил свои магазины до новой версии движка или просто поставил новый opencart 1.5.1.3 должны были заметить, что отчеты в нем не работают ...
Подробнее >>
Как переделать модуль от старых версий opencart на opencart 1.5.x или ocstore 1.5 Наверное многие из Вас при поиске модуля для своего магазина на opencart новой версии столкнулись с тем, что найденный модуль предназначен для боле...
Подробнее >>
Экономно однако Новое двухстороннее косметическое мыло. Смотрите не перепутайте! ...
Подробнее >>
Корзина товаров в шапке сайта на Opencart   Наверняка те, кто часто делает интернет-магазины на популярной Opencart, столкнулись с необходимостью выноса...
Подробнее >>
Мега супер девайс от Apple планшетник iPad   И так, первое , о чем я бы хотел рассказать, это мега супер девайс от Apple планшетник iPad. Я приобрел сей ...
Подробнее >>