Для решения данной задачи добавим поле где будут выбираться категории в которых отображать модуль. Кусок сода представлен ниже.
Все работает просто и понятно .
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);
}
}
}
}
Вот и все. Вот так это выглядит . Если не выбрать — будет показываться во всех категориях
Владимир Коптелов
- 18 июня 2019, 13:01 ↓Так сделать возможно после вашего апдейта?
admin
- 19 июня 2019, 04:23 ↓Можно добавить список на каких страницах выводить.
Или галочку, выводить только на главной
Стас
- 07 декабря 2019, 17:57 ↓Почему на одном сайте видит дочернии категории а на другом нет?
Admin
- 07 декабря 2019, 18:00 ↓