Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

Привет!

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

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

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

<?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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.