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

Как проверить включен ли модуль?

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

Привет!

Ребят, может кто знает как проверить включен ли модуль на странице категории.

Мне нужно если модуль (фильтр) включен, что вывести определенный текст. Я так понимаю на php это будет как-то так:

<?php if [вот здесь условие проверки "включенности"] { ?>
   А вот это мой текст "ля ля ля".

<?php } ?>

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


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

Спасибо!

У меня, собственно, вопрос тот же, что и в теме по ссылке: не заработало вот так:

<?php if ($this->config->get('filter_status')) { ?>
   ля ля ля
<?php } ?>

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


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

Посмотрите в базе в таблице settings в столбце key как этот модуль пишет свои настройки. 
Возможно это filter_module 
Но через $this->config->get('some_module') вы получите все настройки этого модуля. Если вам нужна какая-то одна то вам нужно 
сначала сделать
$some_module_settings = $this->config->get('some_module');

после чего через например

print_r($some_module_settings); 
посмотреть все настройки этого модуля, как они называются. 
Если вам нужно именно проверить включен ли модуль в каталоге то смотрите на "
layout_id" модуля

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


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

Потихоньку начал понимать.

Вот выдал он мне его массив параметров:

Array
(
    [0] => Array
        (
            [layout_id] => 3
            [position] => column_left
            [status] => 1
            [sort_order] => 1
        )

)

Теперь я понял, что "[status] => 1" значит что он включен.

А вот как теперь средствами php проверить именно эту строку массива на наличие в ней "[status] => 1"?

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


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

Нужно пройтись по массиву $some_module_settings, так как модулей может быть много, не только 1,

 

foreach ($some_module_settings as $some_module_setting) {

  if ($some_module_setting['layout_id'] == 3 && $some_module_setting['status'] == 1) {

    // модуль включен на странице категории, ['layout_id'] == 3 - это страница категории

  }

}

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


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

Спасибо большое!  :-)

В итоге сделал так и заработало:

<?php $fmsetting = $this->config->get('filter_module'); ?>
<?php foreach ($fmsettings as $fmsetting) {?>
  <?php if ($fmsetting['layout_id'] == 3 && $fmsetting['status'] == 1) {?>
    ля ля ля
  <?php } ?>
<?php } ?>

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

Ведь при таком подходе наш текст "ля ля ля" будет выводиться даже если у самой категории (в админке "Связи->Фильты") не будет ни одного фильтра, т.к. в настройках модуля "Фильтр" его отображение в категории включено.

А нужно, что бы текст "ля ля ля" отображался только если у самой категории есть хотя бы один фильтр. Как бы еще и это условие проверить? По идее, тоже нужно сделать каккой-то гед параметров категории, но какой?

Уважаемый sv2109, выручайте!

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


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

Спасибо большое!  :-)

В итоге сделал так и заработало:

<?php $fmsettings = $this->config->get('filter_module'); ?>
<?php foreach ($fmsettings as $fmsettings) {?>
  <?php if ($fmsettings['layout_id'] == 3 && $fmsettings['status'] == 1) {?>
    ля ля ля
  <?php } ?>
<?php } ?>

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

Ведь при таком подходе наш текст "ля ля ля" будет выводиться даже если у самой категории (в админке "Связи->Фильты") не будет ни одного фильтра, т.к. в настройках модуля "Фильтр" его отображение в категории включено.

А нужно, что бы текст "ля ля ля" отображался только если у самой категории есть хотя бы один фильтр. Как бы еще и это условие проверить? По идее, тоже нужно сделать каккой-то гед параметров категории, но какой?

Уважаемый sv2109, выручайте!

дальше нужно смотреть сам модуль фильтра, как он работает, возможно там есть специальная ф-ция которая определяет наличие фильтра для категории. 

Кстати, у вас ошибка в коде, должно быть (без "s" в fmsettings):

<?php foreach ($fmsettings as $fmsetting) {?>
  <?php if ($fmsetting['layout_id'] == 3 && $fmsetting['status'] == 1) {?>
    ля ля ля
  <?php } ?>
<?php } ?>

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


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

 

дальше нужно смотреть сам модуль фильтра, как он работает, возможно там есть специальная ф-ция которая определяет наличие фильтра для категории. 

Кстати, у вас ошибка в коде, должно быть (без "s" в fmsettings):

<?php foreach ($fmsettings as $fmsetting) {?>
  <?php if ($fmsetting['layout_id'] == 3 && $fmsetting['status'] == 1) {?>
    ля ля ля
  <?php } ?>
<?php } ?>

Ага, с кодом при перепечатывании напортачил, исправил в посте.

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

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


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

Разобрался, вот как нужно сделать под мои цели (выводить текст только если у категории есть фильтры и модуль фильтров включен):

	<?php if (!empty($this->request->get['path'])) { ?>
	   <?php $parts = explode('_', $this->request->get['path']); ?>
	   <?php $category_id = end($parts); ?>
	   <?php $filter_groups = $this->model_catalog_category->getCategoryFilters($category_id); ?>
	<?php } ?>
	<?php $some_module_settings = $this->config->get('filter_module'); ?>
	<?php foreach ($some_module_settings as $some_module_setting) {?>
	<?php if ($some_module_setting['layout_id'] == 3 && $some_module_setting['status'] == 1 && $filter_groups) {?>
           ля ля ля
        <?php } ?>
        <?php } ?>

Спасибо, sv2109!

 

Есть еще вопрос, может кто-нибудь подскажет как на странице категории вывести количество товаров в этой категории? Или, если это проще, количество показанных на странице категории товаров (у меня все равно все сразу показываются)?

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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