Есть ли способ создать модуль OpenCart, который имеет доступ ко всем (интерфейсным) страницам магазина? Я хочу, чтобы пользователь не должен был «связывать» этот модуль со всеми макетами, чтобы он существовал на всех страницах. В принципе, я хочу создать модуль, который вводит некоторый код js на каждую страницу приложения и в зависимости от некоторых крючков OpenCart на back-end, чтобы запустить дополнительный код js спереди или некоторые запросы api на внутреннем сервере. СпасибоКак я могу получить доступ ко всем страницам в интерфейсе в opencart?
ответ
Я не уверен, что именно вы ищете, говоря, что хотите, чтобы модуль имел «доступ» ко всем (передним) страницам магазина. Модули должны быть размещены в макетах, а макеты могут быть назначены нескольким страницам.
Каждый макет может иметь элементы, которые назначаются специально для областей, которые вы можете назначить (и настроить). Например, вы можете создать специальное место для своего модуля в общем заголовке. Вы просто создадите контроллер, язык и файлы просмотра в папке своего собственного обозначения (в моем примере я буду использовать общую папку), и давайте назовем эти файлы «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 Dashboard и добавить модуль в положение loadjs на макете. И это должно сделать это.
Огромное спасибо за ваш комментарий. Я хочу добавить javascript в заголовок независимо от темы и без редактирования пользователем каких-либо файлов. Это возможно? – paptom
Хорошо, вам не нужно добавлять модуль для этого. Я исхожу из вашего первоначального запроса, чтобы иметь доступ к «всем» интерфейсным страницам сайта, вы хотите разместить один и тот же javascript на каждой странице. Если это все, что вам нужно, и все ваши страницы имеют одинаковый вид/тему/(название вашей темы или файл по умолчанию) /template/common/header.tpl, то все, что вам нужно сделать, это добавить javascript непосредственно в заголовок (по крайней мере, это самый простой и прямой способ.) Есть и другие способы, но они становятся все более активными. – JasonF
Если вы используете файл header.tpl по умолчанию, вам нужно будет только добавить javascript один раз, независимо от того, какую тему вы выберете. Если вы используете настраиваемые файлы header.tpl в каждой из ваших тем, вам нужно добавить javascript в каждый файл заголовка theme.tpl. – JasonF
Вы пытались изменить нижний колонтитул или заголовок с помощью vQmod или ocmod? – DigitCart