Есть ли способ создать модуль OpenCart, который имеет доступ ко всем (интерфейсным) страницам магазина? Я хочу, чтобы пользователю не приходилось «привязывать» этот модуль ко всем макетам, чтобы он существовал на всех страницах. По сути, я хочу создать модуль, который вводит некоторый код js на каждую страницу приложения и, в зависимости от некоторых хуков OpenCart на серверной части, запускает дополнительный код js на передней панели или некоторые запросы API на серверной части. Спасибо
Как получить доступ ко всем внешним страницам в модуле opencart?
Ответы (1)
Я не уверен, что именно вы ищете, говоря, что вы хотите, чтобы модуль имел «доступ» ко всем (интерфейсным) страницам магазина. Модули должны быть размещены в макетах, а макеты могут быть назначены нескольким страницам.
Каждый макет может иметь элементы, назначенные специально для областей, которые вы можете назначить (и настроить). Например, вы можете захотеть создать специальное место для вашего модуля в общем заголовке. Вы просто создадите файлы контроллера, языка и представления в папке по вашему собственному назначению (в моем примере я буду использовать общую папку), и давайте назовем эти файлы «loadjs».
Образуйте их после файлов common/header.php
и .tpl
. Просто не забудьте изменить имена классов и файлов в файле контроллера, чтобы они совпадали. Таким образом, вы должны создать файл loadjs.php
в общем каталоге папки контроллера, который содержит класс ControllerCommonLoadjs
, файл loadjs.php
в папке language/(your language)/common
и файл loadjs.tpl
в папке view/theme/(your theme name)/template/common
.
Добавьте $data['loadjs'] = $this->load->controller('common/loadjs');
в файл controller/common/header.php
и <?php echo $loadjs; ?>
в файл view/theme/(your theme name)/template/common/header.tpl
. Теперь вы можете создать свой модуль.
Однако, чтобы иметь возможность добавить его в свой макет, вам нужно будет внести некоторые изменения в некоторые файлы администратора. Add $_['text_loadjs'] = 'Loadjs';
в файл admin/language/(your language)/design/layout.php
и $data['text_loadjs'] = $this->language->get('text_loadjs');
в файл admin/controller/design/layout.php
.
Вам также нужно будет внести изменения в файл admin/view/template/design/layout_form.tpl
. Найдите следующий код:
<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 ($layout_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 ($layout_module['position'] == 'loadjs') { ?>
<option value="loadjs" selected="selected"><?php echo $text_loadjs; ?></option>
<?php } else { ?>
<option value="loadjs"><?php echo $text_loadjs; ?></option>
<?php } ?>
Теперь войдите в свою панель инструментов OpenCart и добавьте свой модуль в позицию loadjs на вашем макете. И это должно сделать это.