Всем привет, давненько не было статей на нашем блоге (что поделать — работа). Наконец появилось свободное время и я решил немного поработать с модулем слайд-шоу.
Список задач на сегодня:
- Работаем с файлом slideshow.twig (файл шаблона)
- Работаем с файлом banner_form.twig (файл шаблона)
- Работаем с файлом banner.php (файл перевода)
Приступим:
1. Откроем файл ../catalog/view/theme/default/template/extension/module/slideshow.twig и вместо этих строк (1-48):
<div class="swiper-viewport">
<div id="slideshow{{ module }}" class="swiper-container">
<div class="swiper-wrapper">
{% for banner in banners %}
<div class="swiper-slide text-center">
{% if banner.link %}
<a href="{{ banner.link }}">
<img src="{{ banner.image }}" alt="{{ banner.title }}" class="img-responsive" />
</a>
{% else %}
{% if banner.mylink %}
<img src="{{ banner.image }}" alt="{{ banner.title }}" class="img-responsive" />
<div class="infoslider">
{% if banner.mytitle %}<h3>{{ banner.mytitle }}</h3>{% endif %}
{% if banner.mytext %}<p>{{ banner.mytext }}</p>{% endif %}
<a class="infolink" href="{{ banner.mylink }}">{{ text_link }}</a>
</div>
{% else %}
<img src="{{ banner.image }}" alt="{{ banner.title }}" class="img-responsive" />
{% endif %}
{% endif %}
</div>
{% endfor %}
</div>
</div>
<div class="swiper-pagination slideshow{{ module }}"></div>
<div class="swiper-pager">
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</div>
<script type="text/javascript">
<!--
$('#slideshow{{ module }}').swiper({
mode: 'horizontal',
slidesPerView: 1,
pagination: '.slideshow{{ module }}',
paginationClickable: true,
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
spaceBetween: 30,
autoplay: 2500,
autoplayDisableOnInteraction: true,
loop: true
});
-->
</script>
вставим эти:
<div class="swiper-viewport">
<div id="slideshow{{ module }}" class="swiper-container">
<div class="swiper-wrapper">
{% for banner in banners %}
<div class="swiper-slide text-center">
{% if banner.link %}
<a href="{{ banner.link }}">
<img src="{{ banner.image }}" alt="{{ banner.title }}" class="img-responsive" />
<div class="infoslider">
{% if banner.mytitle %}<h3>{{ banner.mytitle }}</h3>{% endif %}
{% if banner.mytext %}<p>{{ banner.mytext }}</p>{% endif %}
</div>
</a>
{% else %}
{% if banner.mylink %}
<img src="{{ banner.image }}" alt="{{ banner.title }}" class="img-responsive" />
<div class="infoslider">
{% if banner.mytitle %}<h3>{{ banner.mytitle }}</h3>{% endif %}
{% if banner.mytext %}<p>{{ banner.mytext }}</p>{% endif %}
{% if banner.mylink %}<a class="infolink" href="{{ banner.mylink }}">{{ text_link }}</a>{% endif %}
</div>
{% endif %}
{% endif %}
</div>
{% endfor %}
</div>
</div>
<div class="swiper-pagination slideshow{{ module }}"></div>
<div class="swiper-pager">
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</div>
<script type="text/javascript">
<!--
$('#slideshow{{ module }}').swiper({
mode: 'horizontal',
slidesPerView: 1,
pagination: '.slideshow{{ module }}',
paginationClickable: true,
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
spaceBetween: 30,
autoplay: 2500,
autoplayDisableOnInteraction: true,
loop: true
});
-->
</script>
P.S. — Мы немного упростили условия вывода слайдов, теперь у нас доступно 2 варианта:
- Если вам нужен переход по нажатию на картинку баннера — заполняете ссылку картинки
- Если вам нужен переход по нажатию на кнопку подробнее — заполняете ссылку кнопки
Текст или заголовок вы можете заполнять на свой выбор, заполнили — выводится, не заполнили — нет, на мой взгляд так логичнее и проще, чем я сделал изначально (в первой статье).
Теперь давайте сделаем небольшую подсказку для сотрудников работающим с нашими баннерами, для этого переходим ко второму шагу.
2. Откроем файл ../admin/view/template/design/banner_form.twig и вместо этой строки (65):
<td class="text-left">{{ entry_link }}</td>
вставим эту:
<td class="text-left"><span data-toggle="tooltip" title="{{ help_link }}">{{ entry_link }}</span></td>
а вместо этой (69):
<td class="text-center">{{ entry_mylink }}</td>
вставим эту:
<td class="text-center"><span data-toggle="tooltip" title="{{ help_mylink }}">{{ entry_mylink }}</span></td>
P.S. — Мы вставили иконку со знаком вопроса в заголовки Ссылка и Ссылка кнопки, теперь необходимо добавить текст-подсказку, которая появится при наведении на заголовок. Переходим к третьему шагу.
3. Откроем файл ../admin/language/ru-ru/design/banner.php и после этой строки (26):
$_['entry_sort_order'] = 'Порядок сортировки';
вставим эти:
// Help $_['help_link'] = 'Заполни и картинка-баннер будет ссылкой'; $_['help_mylink'] = 'Заполни и кнопка подробнее будет ссылкой, ссылку изображения оставляем пустой!';
вместо этой строки (20):
$_['entry_link'] = 'Ссылка';
вставим эту:
$_['entry_link'] = 'Ссылка изображения';
Чистим все кеши и проверяем результат:

На мой взгляд неплохо, так пока и оставим. На сегодня всё, следите за выходом новых материалов и вступайте в нашу группу в ВК.
Живой пример (обновляется одновременно с выходом новых статей): https://about-all.ru
2 комментария
Добрый день. Давно не заходил к Вам на сайт, было много супер статей по opencart 2.3, их можно еще где-то увидеть? Очень жаль что удалили!!!
Здравствуйте, нет, старых статей больше не будет.