Перейти к содержанию

Рекомендуемые сообщения

Всем привет!

Контроллер фронта. Модуль, настройки которого хранятся в таблице module

<?php
class ControllerExtensionModuleMymodule extends Controller {
  public function index($setting) {
    // тут настройки модуля из админки 
  }
  
  public function Myfunction() {
    $json = array();
    
    
    // вот здесь можно получить настройки из админки?
    
    
    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($json));
  }
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так настройки чего именно? какого модуля? там же $setting а значит модулей несколько у каждого свои настройки.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, klaos27 сказал:

// вот здесь можно получить настройки из админки?

нужен id модуля

$this->load->model('extension/module');

$setting = $this->model_extension_module->getModule($this->request->{get,post}['module_id']);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, nikifalex сказал:

так настройки чего именно? какого модуля? там же $setting а значит модулей несколько у каждого свои настройки.

Не важно какого. Да могут быть свои настройки.

Не получится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

до тех пор пока вы точно не решите как надо. не получится.


Это программирование, а не философия. Тут казуистика "неважно"  не срабатывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, nikifalex сказал:

до тех пор пока вы точно не решите как надо. не получится.


Это программирование, а не философия. Тут казуистика "неважно"  не срабатывает.

Да любой модуль возьмем, будь то HTML Содержимое, или Рекомендуемые, или Хиты, или Баннеры, или Слайдшоу.

Не понимаю почему это должно быть важно. Важно то, что все они сидят в таблице module.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вы не поняли. 

4 минуты назад, klaos27 сказал:

Содержимое, или Рекомендуемые, или Хиты, или Баннеры, или Слайдшоу.

 

каждого из них может быть много. А контроллер у них общий. нужный как раз задается через $setting

Чтоб получить настройки, надо выбрать настроки чего именно, какого экземпляра модуля нужны.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 часов назад, nikifalex сказал:

вы не поняли. 

каждого из них может быть много. А контроллер у них общий. нужный как раз задается через $setting

Про это я знаю.

 

7 часов назад, nikifalex сказал:

Чтоб получить настройки, надо выбрать настроки чего именно, какого экземпляра модуля нужны.

для каждого экземпляра свои.

 

Я так понимаю нужен id модуля как написал @ibond

Но в OC2 без вмешательства в движок невозможно получить id модуля. Или я не прав?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
31 минуту назад, klaos27 сказал:

Я так понимаю нужен id модуля как написал @ibond

Но в OC2 без вмешательства в движок невозможно получить id модуля. Или я не прав?

Да, правы. Во всяком случае, не находил других способов без вмешательства. Один из вариантов, например, так:

	<file path="catalog/model/extension/module.php">
        <operation>
            <search><![CDATA[
                if ($query->row) {
            ]]></search>
            <add position="after"><![CDATA[
                if (isset($query->row['code']) && $query->row['code'] == 'ВАШ_CODE')  {
                    $query->row['setting'] = preg_replace('/}$/', ',"module_id":"' . (int)$module_id . '"}', $query->row['setting']);
                }
			]]></add>
        </operation>
    </file>

и уже отдавать его из index($setting) в ajax и т.д.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, ibond сказал:

Да, правы. Во всяком случае, не находил других способов без вмешательства. Один из вариантов, например, так:


	<file path="catalog/model/extension/module.php">
        <operation>
            <search><![CDATA[
                if ($query->row) {
            ]]></search>
            <add position="after"><![CDATA[
                if (isset($query->row['code']) && $query->row['code'] == 'ВАШ_CODE')  {
                    $query->row['setting'] = preg_replace('/}$/', ',"module_id":"' . (int)$module_id . '"}', $query->row['setting']);
                }
			]]></add>
        </operation>
    </file>

и уже отдавать его из index($setting) в ajax и т.д.

 

Благодарю. Но не то. Ни при каких обстоятельствах в оригинал лезть не хотелось. Ну по крайней мере из-за такого)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По архитектуре - довольно странное желание.

MyFunction может вызываться откуда угодно. Например по ajax запросу.

В данном случае нет нуного контекста при вызове данной функции.

 

Вызов index происходит при переборе модулей и там есть конкретный контекст по id модуля. Что позволяет связать конкретный вызов с конкретными настройками.

 

Что бы MyFunction имела тот же контекст по конфигу, надо её вызывать только из функуии index.

Но если вызов идёт только отттуда, то настройки можно передать как параметр.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.