В этой статье будет немного критики, немного советов, немного исходников и много размышлений о вечном: “Зачем разработчики сделали так?”
И так. Все видели свеженький opencart 2.0. Мне очень хотелось, чтобы там было адекватное уведомление о том, что товар положили в корзину, но этого так и не случилось. Мне кажется, что минусы подобного уведомления очевидны, но я все же их перечислю:
- Мне, как клиенту, это очень неприятно, т.к. я не люблю когда кто-то двигает экраном против моей воли.
- Возможно клиент хотел еще что-то посмотреть, но съехавший экран как бы намекает – бери товар и проваливай
- Клиент мог читать описание товара или характеристики в то время, когда нажал на кнопку. И как Вы думаете? Он пойдет искать то место, на котором остановился или пойдет искать то, место которое не двигает его экран вверх.
И вот я, как и многие другие, жалуюсь на это и ничего не предпринимаю – подумаете Вы. А вот и нет. Я переделал этот механизм так, как мне удобно и делюсь им со всеми. Кто знает… может в следующей версии мой код добавят.
Первое, что нам надо сделать – это поправить файл /catalog/view/javascript/common.js
Заменим в нем строки:
| 1 2 3 4 5 | $('#content').parent().before('<div class="alert alert-success"><i class="fa fa-check-circle"></i> ' + json['success'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>'); на: $('#content').parent().before('<div class="alertwraper"><div class="alert alert-success"><i class="fa fa-check-circle"></i> ' + json['success'] + '<button type="button" class="close" data-dismiss="alert">×</button></div></div>'); | 
| 1 2 3 4 5 | $('#content').parent().before('<div class="alert alert-info"><i class="fa fa-info-circle"></i> ' + json['info'] + '<button type="button" class="close" data-dismiss="alert">×</button></div>'); на: $('#content').parent().before('<div class="alertwraper"><div class="alert alert-info"><i class="fa fa-info-circle"></i> ' + json['info'] + '<button type="button" class="close" data-dismiss="alert">×</button></div></div>'); | 
| 1 2 3 4 5 |  $('html, body').animate({ scrollTop: 0 }, 'slow'); на: $('.alertwraper').animate({ top: 0 }); | 
| 1 2 3 4 5 | $('.alert').remove(); на: $('.alertwraper').remove(); | 
Заметьте в этом файле несколько одинаковых строк. Заменить нужно все!
Далее правим стили. Тут все просто. Добавляем в конец файла со стилями (/catalog/view/theme/default/stylesheet/stylesheet.css) следующий текст:
| 1 2 3 4 5 6 7 8 9 10 11 12 | .alertwraper {     position: fixed;     top: -50px;     width: 100%;     z-index: 10;     left: 0;     text-align: center; } .alert {     display:inline-block; } | 
Теперь обновляем страницу с товаром/товарами и нажимаем кнопку “Купить”. У нас выезжает уведомление сверху и при этом не смешает экран. Профит!