Виведення модуля html у вибраних категоріях opencart

Блог Фрилансера 6 груд. 2018 р.
 Виведення модуля html у вибраних категоріях opencart

Для вирішення даної задачі додамо поле, де будуть вибиратися категорії, в яких відображати модуль. Шматок соду представлений нижче.

Все працює просто і зрозуміло.

Admin->view

<div class="col-sm-10">
              <div class="well well-sm" style="height: 150px; overflow: auto;">
                
                <?php
              

                 foreach ($categories as $category) { ?>
                <div class="checkbox">
                  <label>
                    <?php if (in_array($category['category_id'], $module_html_categories)) { ?>
            <input type="checkbox" name="module_html_categories[]" value="<?php echo $category['category_id']; ?>" checked="checked" />
            <?php echo $category['name']; ?>
            <?php } else { ?>
            <input type="checkbox" name="module_html_categories[]" value="<?php echo $category['category_id']; ?>" />
            <?php echo $category['name']; ?>
            <?php } ?>
                  </label>
                </div>
                <?php } ?>
              </div>
              
          </div>

Admin->controller

$this->load->model('catalog/category');

$data['categories'] = $this->model_catalog_category->getCategories(0);



if (isset($this->request->post['module_html_categories'])) {
$data['module_html_categories'] = $this->request->post['module_html_categories'];
} elseif (!empty($module_info)) {
if (isset($module_info['module_html_categories']) && is_array($module_info['module_html_categories'])) {
$data['module_html_categories'] = $module_info['module_html_categories'];
}else{
$data['module_html_categories'] = array();
}
} else {
$data['module_html_categories'] = '';
}

Далі код для контролера виведення модуля, модернізуємо код з урахуванням категорій

catalog / controller / controller / extension / module / html.php 

<?php
class ControllerExtensionModuleHTML extends Controller {
public function index($setting) {
$this->load->model('catalog/category');


if (isset($setting['module_description'][$this->config->get('config_language_id')]))) {
$data['heading_title'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['title'], ENT_QUOTES, 'UTF-8');
$data['html'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['description'], ENT_QUOTES, 'UTF-8');

if (isset($setting['module_html_categories']) && is_array($setting['module_html_categories'])) {

$ path = '';

$parts = explode('_', (string)$this->request->get['path']);

$category_id = (int)array_pop($parts);


$data['data'] = $setting;
$data['cat'] = $category_id;
if (in_array($category_id, $setting['module_html_categories'])) { //якщо в масиві є id поточної категорії виводимо
return $this->load->view('extension/module/html', $data);
}
}
else {
return $this->load->view('extension/module/html', $data);
}


}
}
}

От і все. Ось так це виглядає. Якщо не вибрати — показуватиметься у всіх категоріях 

html у категорії