Jump to content
Sign in to follow this  
trafbite

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

Recommended Posts

Привет!

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

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

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

<?php } ?>

Share this post


Link to post
Share on other sites

Спасибо!

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

)

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

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

Share this post


Link to post
Share on other sites

Нужно пройтись по массиву $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 - это страница категории

  }

}

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

<?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 } ?>

Share this post


Link to post
Share on other sites

 

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

	<?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!

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.