Улучшаем верхнюю панель на CMS OpenCart 4

Всем привет, сегодня мы с вами начнём улучшать верхнюю панель нашего интернет магазина созданного на CMS OpenCart 4.0.2.3. Сегодня я хочу вывести к номеру телефона выпадающий список с дополнительными телефонами, почтой, адресом магазина, часами работы и иконками соц. сетей.

1. Откроем файл: ../public_html/***/view/template/setting/setting.twig и после этих строк:

<div class="row mb-3">
  <label for="input-comment" class="col-sm-2 col-form-label">{{ entry_comment }}</label>
  <div class="col-sm-10">
    <textarea name="config_comment" rows="5" placeholder="{{ entry_comment }}" id="input-comment" class="form-control">{{ config_comment }}</textarea>
    <div class="form-text">{{ help_comment }}</div>
  </div>
</div>

вставим эти:

<fieldset>
  <legend>{{ text_headinfo }}</legend>
<div class="row mb-3">
  <label for="input-headphone1" class="col-sm-2 col-form-label">{{ entry_headphone1 }}</label>
  <div class="col-sm-10">
    <input type="text" name="config_headphone1" value="{{ config_headphone1 }}" placeholder="{{ entry_headphone1 }}" id="input-telephone" class="form-control"/>
  </div>
</div>
<div class="row mb-3">
  <label for="input-headphone2" class="col-sm-2 col-form-label">{{ entry_headphone2 }}</label>
  <div class="col-sm-10">
    <input type="text" name="config_headphone2" value="{{ config_headphone2 }}" placeholder="{{ entry_headphone2 }}" id="input-telephone" class="form-control"/>
  </div>
</div>          
<div class="row mb-3">
  <label for="input-headmail" class="col-sm-2 col-form-label">{{ entry_headmail }}</label>
  <div class="col-sm-10">
    <input type="text" name="config_headmail" value="{{ config_headmail }}" placeholder="{{ entry_headmail }}" id="input-email" class="form-control"/>
  </div>
</div>
<div class="row mb-3">
  <label for="input-headaddress" class="col-sm-2 col-form-label">{{ entry_headaddress }}</label>
  <div class="col-sm-10">
    <input type="text" name="config_headaddress" value="{{ config_headaddress }}" placeholder="{{ entry_headaddress }}" id="input-address" class="form-control"/>
  </div>
</div>
<div class="row mb-3">
  <label for="input-headworktime" class="col-sm-2 col-form-label">{{ entry_headworktime }}</label>
  <div class="col-sm-10">
    <input type="text" name="config_headworktime" value="{{ config_headworktime }}" placeholder="{{ entry_headworktime }}" id="input-open" class="form-control"/>
  </div>
</div>
<div class="row mb-3">
  <label for="input-headsocial" class="col-sm-2 col-form-label">{{ entry_headsocial }}</label>
  <div class="col-sm-10">
    <textarea name="config_headsocial" rows="5" placeholder="{{ entry_headsocial }}" id="input-comment" class="form-control">{{ config_headsocial }}</textarea>
  </div>
</div>
</fieldset>

2. Откроем файл: ../public_html/***/controller/setting/setting.php и после этой строки:

$data['config_image'] = $this->config->get('config_image');

вставим эти:

// Headpanel info
$data['config_headinfo'] = $this->config->get('config_headinfo');
$data['config_headphone1'] = $this->config->get('config_headphone1');
$data['config_headphone2'] = $this->config->get('config_headphone2');
$data['config_headmail'] = $this->config->get('config_headmail');
$data['config_headaddress'] = $this->config->get('config_headaddress');
$data['config_headworktime'] = $this->config->get('config_headworktime');
$data['config_headsocial'] = $this->config->get('config_headsocial');

3. Откроем файл ../public_html/***/language/ru-ru/setting/setting.php и после этой строки:

$_['entry_comment']                       = 'Дополнительная информация';

вставим эти:

$_['entry_headphone1']                    = '1 Телефон';
$_['entry_headphone2']                    = '2 Телефон';
$_['entry_headmail']                      = 'Почта';
$_['entry_headaddress']                   = 'Адрес';
$_['entry_headworktime']                  = 'Время работы';
$_['entry_headsocial']                    = 'Соц. сети';

а перед этой строкой:

$_['text_image_size']                     = 'Размер изображений';

вставим эту:

$_['text_headinfo']                       = 'Информация в выпадающем списке';

4. Откроем файл ../public_html/***/language/en-gb/setting/setting.php и после этой строки:

$_['entry_comment']                       = 'Comment';

вставим эти:

$_['entry_headphone1']                    = '1 Phone';
$_['entry_headphone2']                    = '2 Phone';
$_['entry_headmail']                      = 'E-mail';
$_['entry_headaddress']                   = 'Address';
$_['entry_headworktime']                  = 'Work Times';
$_['entry_headsocial']                    = 'Social';

а перед этой строкой:

$_['text_image_size']                     = 'Image Sizes';

вставим эту:

$_['text_headinfo']                       = 'Information in the drop-down list';

5. Открываем админку и переходим: Система > Настройки > Редактировать > Магазин и видим внизу новый блок:

OpenCart 4 - выпадающий список

Заполняем нужные вам строки (чтобы меня не забросали спамом свои данные вставляю картинкой):

OpenCart 4 - выпадающий список

и нажимаем кнопку Сохранить.

6. Откроем файл ../public_html/catalog/view/template/common/header.twig и после этой строки:

<div class="nav float-start">

вставим эти:

 <div class="dropdown">
  <a href="{{ contact }}" class="dropdown-toggle" data-bs-toggle="dropdown"><i class="fa-solid fa-phone"></i> <span class="d-none d-md-inline">{{ telephone }}</span> <i class="fa-solid fa-caret-down"></i></a>
  <ul class="dropdown-menu dropdown-menu-right headmenu">
      <li>{{ headphone1 }}</li>
      <li>{{ headphone2 }}</li>
      <li>{{ headmail }}</li>
      <li>{{ headaddress }}</li>
      <li>{{ headworktime }}</li>
      <li>{{ headsocial }}</li>
  </ul>
</div>

и удалим эту строку:

<li class="list-inline-item"><a href="{{ contact }}"><i class="fa-solid fa-phone"></i></a> <span class="d-none d-md-inline">{{ telephone }}</span></li>

9. Откроем файл: ../public_html/catalog/controller/common/header.php и после этой строки:

$data['telephone'] = $this->config->get('config_telephone');

вставим эти:

$data['headphone1'] = html_entity_decode($this->config->get('config_headphone1'), ENT_QUOTES, 'UTF-8');
$data['headphone2'] = html_entity_decode($this->config->get('config_headphone2'), ENT_QUOTES, 'UTF-8');
$data['headmail'] = html_entity_decode($this->config->get('config_headmail'), ENT_QUOTES, 'UTF-8');
$data['headaddress'] = html_entity_decode($this->config->get('config_headaddress'), ENT_QUOTES, 'UTF-8');
$data['headworktime'] = html_entity_decode($this->config->get('config_headworktime'), ENT_QUOTES, 'UTF-8');
$data['headsocial'] = html_entity_decode($this->config->get('config_headsocial'), ENT_QUOTES, 'UTF-8');

P.S. — я специально преобразовываю все эти строки в html код (благодаря этому мы можем вставлять иконки, картинки и ссылки).

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

OpenCart 4 - выпадающий список

Сильно не ужасаемся, сейчас перейдём к оформлению.

10. Открываем файл: ../public_html/catalog/view/stylesheet/stylesheet.css и в конец файла вставляем эти строки:

/* headpanel dropdown */
.headmenu {
    min-width: 220px;
    padding: 10px 15px;
}
.headmenu li+li {
    padding: 15px 0 0 0;
}
.headmenu i {
    color: #2196F3;
    padding-right: 5px;
}
.headmenu .small {
    font-size: 12px;
    color: #90A4AE;
}

Чистим все кеши и смотрим результат:

OpenCart 4 - выпадающий список

Конечно оформление так себе, требуется доработка, но всё равно лучше чем было. 🙂

P.S. — В следующих статьях мы вновь вернёмся к верхней панели (и к шапке сайта — сейчас она мне не слишком симпатична) и улучшим оформление выпадающего списка.

Демонстрационный сайт: demo.moushe.ru (демо сайт обновляется вместе с выходом новых статей).

На этом всё, надеюсь статья была вам полезна.

Оставить комментарий

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания.

Срок проверки reCAPTCHA истек. Перезагрузите страницу.

Навигация