Задать вопрос
@LoveCodeandCoffe

Как добавить новую позицию opencart 2.3?

Делаю сайт, главная представляет собой посадочную страницу в которой 5 модулей которые выводятся из админки.
Для своих целей делаю разметку в home.tpl. Разметка в этом файле делаю из нескольких секции, а в секции стандарт будстрапа .container. row .col*бесконечность> ну и свои классы. Поэтому для меня вывод через верх страницы и низ страницы не подходит. Нужно больше позиций. Попробовал создать свою позицию, скопировал файл контроллера с content_top.php в свой content_vantage.php. Нашел все строки с 'top ' заменил на 'vantage'. также по аналогии создал content_vantage.tpl и и вставил в него код из content_top.tpl. Дальше создал модификатор для home.php нашел строчку
$data['content_bottom'] = $this->load->controller('common/content_bottom');

и после нее записал
$data['content_vantage'] =  $this->load->controller('common/content_vantage');

дальше, нужно было добавить эту позицию , для видимости в админку. нашел файл layout_form.tpl и после таблички
id content-top
эта табличка  позиции "верх страницы" . Вставил, копированием еще одну табличку, <code lang="html">
<!--CASTOM SECTION  BEGIN !-->
                  <table id="module-content-vantage" class="table table-striped table-bordered table-hover">
                    <thead>
                      <tr>
                        <td class="text-center">Вывод секции приемущества</td>
                      </tr>
                    </thead>
                    <tbody>
                      <?php foreach ($layout_modules as $layout_module) { ?>
                      <?php if ($layout_module['position'] == 'content_vantage') { ?>
                      <tr id="module-row<?php echo $module_row; ?>">
                        <td class="text-left"><div class="input-group">
                          <select name="layout_module[<?php echo $module_row; ?>][code]" class="form-control input-sm">
                            <?php foreach ($extensions as $extension) { ?>
                            <optgroup label="<?php echo $extension['name']; ?>">
                              <?php if (!$extension['module']) { ?>
                              <?php if ($extension['code'] == $layout_module['code']) { ?>
                              <option value="<?php echo $extension['code']; ?>" selected="selected"><?php echo $extension['name']; ?></option>
                              <?php } else { ?>
                              <option value="<?php echo $extension['code']; ?>"><?php echo $extension['name']; ?></option>
                              <?php } ?>
                              <?php } else { ?>
                              <?php foreach ($extension['module'] as $module) { ?>
                              <?php if ($module['code'] == $layout_module['code']) { ?>
                              <option value="<?php echo $module['code']; ?>" selected="selected"><?php echo $module['name']; ?></option>
                              <?php } else { ?>
                              <option value="<?php echo $module['code']; ?>"><?php echo $module['name']; ?></option>
                              <?php } ?>
                              <?php } ?>
                              <?php } ?>
                            </optgroup>
                            <?php } ?>
                          </select>
                          <input type="hidden" name="layout_module[<?php echo $module_row; ?>][position]" value="<?php echo $layout_module['position']; ?>" />
                          <input type="hidden" name="layout_module[<?php echo $module_row; ?>][sort_order]" value="<?php echo $layout_module['sort_order']; ?>" />
                          <div class="input-group-btn"> <a href="<?php echo $layout_module['edit']; ?>" type="button" data-toggle="tooltip" title="<?php echo $button_edit; ?>" target="_blank" class="btn btn-primary btn-sm"><i class="fa fa-pencil"></i></a>
                            <button type="button" onclick="$('#module-row<?php echo $module_row; ?>').remove();" data-toggle="tooltip" title="<?php echo $button_remove; ?>" class="btn btn-danger btn-sm"><i class="fa fa fa-minus-circle"></i></button>
                          </div>
                        </div></td>
                      </tr>
                      <?php $module_row++; ?>
                      <?php } ?>
                      <?php } ?>
                    </tbody>
                    <tfoot>
                      <tr>
                        <td class="text-left"><div class="input-group">
                          <select class="form-control input-sm">
                            <?php foreach ($extensions as $extension) { ?>
                            <optgroup label="<?php echo $extension['name']; ?>">
                              <?php if (!$extension['module']) { ?>
                              <option value="<?php echo $extension['code']; ?>"><?php echo $extension['name']; ?></option>
                              <?php } else { ?>
                              <?php foreach ($extension['module'] as $module) { ?>
                              <option value="<?php echo $module['code']; ?>"><?php echo $module['name']; ?></option>
                              <?php } ?>
                              <?php } ?>
                            </optgroup>
                            <?php } ?>
                          </select>
                          <div class="input-group-btn">
                            <button type="button" onclick="addModule('content-vantage');" data-toggle="tooltip" title="<?php echo $button_module_add; ?>" class="btn btn-primary btn-sm"><i class="fa fa-plus-circle"></i></button>
                          </div>
                        </div></td>
                      </tr>
                    </tfoot>
                  </table>
                  <!--CASTOm SECTION   END !-->
</code>


В итоге получил ,то что и хотел<img src="https://habrastorage.org/webt/5b/85/ac/5b85ac239cd46129067653.png" alt="image"/> 
<b>НО</b> при когда добавлю модуль в мою секцию "вывод секции преимущества" Сохраняю пишет ,что все хорошо. Но когда опять захожу в макет все добавленные модули в эту секцию слетают и она становится пустой.
<img src="https://habrastorage.org/webt/5b/85/ad/5b85ad0857f2d386118976.png" alt="image"/>
Может я где-то что то пропустил?. 
<b>А есть более простой способ, выводить модуль напрямую в любом файле , через php echo. не используя позиции?

</b>
  • Вопрос задан
  • 978 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
greenkey
@greenkey
программист
точно такая же загвоздка.
везде пишут, что этого достаточно, но, похоже, что-то еще нужно править, чтобы модули сохранялись
Ответ написан
@Asokr
Добавлял последний раз вот по этой статье тык - проблем не возникло...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы