Разработка

Создаем меню из статей сайта на OpenCart 2.3

Краткое руководство

Создать главное меню из статей сайта на базе OpenCart 2.3 не так уж и сложно

Но мы не просто создадим или модифицируем имеющееся меню. Мы добавим в форму редактирования статьи в админке чекбокс, позволяющий нам выбирать, будет ли размещаться ссылка на статью в главном меню.

Итак начнем...

1. Добавим в таблицу information базы данных столбец с названием menu рядом со столбцом bottom: Тип - int, длина/значение - 1, по умолчанию - выбираем "Как определено" и в поле проставляем значение 0.

2. Открываем в кодовом редакторе следующие файлы:
- catalog/controller/common/header.php
- catalog/controller/common/footer.php
- admin/controller/catalog/information.php
- admin/model/catalog/information.php
- admin/view/template/catalog/information_form.tpl
- admin/language/ru-ru/catalog/information.php
- catalog/view/theme/[ваша тема]/template/common/header.tpl

Для начала правим файл контроллера статьи (information.php). В тело функции getForm() примерно в 398 строке вставляем слудующий код:

	
$data['entry_menu'] = $this->language->get('entry_menu');
$data['help_menu'] = $this->language->get('help_menu');
if (isset($this->request->post['menu'])) {
	$data['menu'] = $this->request->post['menu'];
} elseif (!empty($information_info)) {
	$data['menu'] = $information_info['menu'];
} else {
	$data['menu'] = 0;
}

3. Далее отредактируем файл модели статьи (information.php), а именно функцию public function addInformation($data), примерно 4 строка, доавим в sql-запрос после кода:

bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "',

следующий код:
  menu = '" . (isset($data['menu']) ? (int)$data['menu'] : 0) . "',

и такой же код добавим в это же место в функцию public function editInformation.

4. Теперь добавим в файл шаблона редактирования статьи (information_form.tpl) добавим вывод нужных нам чекбоксов во вкладку "Данные" (примерно 127 строка) после очередного дива с классом form-group, где выводится чекбокс отображения внизу (bottom):

<div class="form-group">
    <label class="col-sm-2 control-label" for="input-menu"><span data-toggle="tooltip" title="<?php echo $help_menu; ?>"><?php echo $entry_menu; ?></span></label>
    <div class="col-sm-10">
        <div class="checkbox">
            <label>
            <?php if ($menu) { ?>
            <input type="checkbox" name="menu" value="1" checked="checked" id="input-menu" />
            <?php } else { ?>
            <input type="checkbox" name="menu" value="1" id="input-menu" />
            <?php } ?>
   </label>
   </div>
	</div>
</div>

5. Далее добавим в языковой файл текстовой обозначение переменных


$_['entry_menu']           = 'Отображить в меню';
$_['help_menu']            = 'Показывать в главном меню';

6. Теперь редактируем файл контроллера шапки (header.php) и добавляем вывод статей:


$this->load->model('catalog/information');
$data['informations'] = array();
foreach ($this->model_catalog_information->getInformations() as $result) {
    if ($result['menu']) {
        $data['informations'][] = array(
            'title' => $result['title'],
             'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])
        );
    }
}

Теперь на странице редактирования статьи в админ.панели во вкладке "Данные" появился чекбокс: "Отображать в меню".

7. Теперь редактируем файл шаблона шапки. Либо добавляем в код списка меню

<ul class="nav navbar-nav">
следующий код:
<?php if ($informations) { ?>
    <?php foreach ($informations as $information) { ?>
        <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li>
    <?php } ?>
<?php } ?>
						      			

или заменяем текущий т.е. categories и category меняем на informations и information соответственно.

Теперь можно менять внешний вид и стили как вам угодно.

Итак, мы меню из статей в opencart 2.3.


Поделиться

А теперь поговорим о вашем проекте!