Jump to content

Как вывести список товаров со скидками на главной странице?


Recommended Posts

Доброго времени.
Создал скидки для товаров в разделе админпанели - Админка - Каталог - Скидки.
Как теперь мне эти товары со скидками вывести на главной странице?
Спасибо за помощь!

Link to post
Share on other sites

На главной странице есть табы - новинки, рекомендуемые, скидки
Но выводятся почему-то только рекомендуемые.
таб "скидки" пустой.
https://c2n.me/4cS3BHT
https://c2n.me/4cS3CaG
также если перейти на страницу vamshop.ru/specials.php - также скидки не погружаются. 
Отображается только категория, в которую загружен единственый товар со скидкой
https://c2n.me/4cS3CPV

Link to post
Share on other sites
support
1 час назад, nik сказал:

На главной странице есть табы - новинки, рекомендуемые, скидки
Но выводятся почему-то только рекомендуемые.
таб "скидки" пустой.
https://c2n.me/4cS3BHT
https://c2n.me/4cS3CaG
также если перейти на страницу vamshop.ru/specials.php - также скидки не погружаются. 
Отображается только категория, в которую загружен единственый товар со скидкой
https://c2n.me/4cS3CPV

У товара в опции Количество, в админке, указано больше 0?!

т.е. на складе больше 0 данного товара?!

Link to post
Share on other sites

спасибо. Да. проблема была в количестве.
Есть вопрос 
Как мне создать отдельный шаблон для вывода скидок? чтоб было несколько втсавок например - {$MODULE_specials_default} и каждая из этих вставок подгружала скидки определенным способом в зависимости от изменений в шаблоне.
https://c2n.me/4cTERwg
Задача состоит в том, чтоб вывести на главной странице скидки в 1 месте плитками, а в другом месте изменть шаблон и сделать вывод слайдером. 
Спасибо

Link to post
Share on other sites
support
4 часа назад, nik сказал:

спасибо. Да. проблема была в количестве.
Есть вопрос 
Как мне создать отдельный шаблон для вывода скидок? чтоб было несколько втсавок например - {$MODULE_specials_default} и каждая из этих вставок подгружала скидки определенным способом в зависимости от изменений в шаблоне.
https://c2n.me/4cTERwg
Задача состоит в том, чтоб вывести на главной странице скидки в 1 месте плитками, а в другом месте изменть шаблон и сделать вывод слайдером. 
Спасибо

Ну так просто не сделать.

Надо делать клон блока скидок на главной странице.

/includes/modules/specials.php делать копию например как specials1.php

прваить код в specials1.php указывая отдельный шаблон вместо specials_default.html например specials_default1.html

Сам шаблон тоже взять скопировать /templates/vamshop4/module/specials_default.html в specials_default1.html

и затем подключать specials1.php в /includes/center_modules.php

В /templatates/vamshop4/module/main_content.html добавлять новую метку по аналогии со specials

В общем, как-то так.

На самом деле ничего сложного, у Вас уже есть пример блока скидок.

А список файлов, где и что подключается я написал.

Link to post
Share on other sites

Доброго времени, где-то упускаю ошибку, мне кажется в последнем 5 этапе с подключением аналога файла specials.php
5. 

В 03.08.2021 в 23:37, support сказал:

и затем подключать specials1.php в /includes/center_modules.php

С этим не понятно.
Как правильно подключить?
пробовал так include (DIR_WS_MODULES.FILENAME_SPECIALS_ONE);
пробовал так include '/includes/modules/specials_one.php';

В результате не выводит новый модуль.
Подскажите что делаю не так?


1. 

В 03.08.2021 в 23:37, support сказал:

Надо делать клон блока скидок на главной странице.

В 03.08.2021 в 23:37, support сказал:

В /templatates/vamshop4/module/main_content.html добавлять новую метку по аналогии со specials

Эти 2 сообщение подразумеваете одно и тоже?

Добавил {$MODULE_specials_default_one} В /templatates/vamshop4/module/main_content.html

2.

В 03.08.2021 в 23:37, support сказал:

/includes/modules/specials.php делать копию например как specials1.php

/includes/modules/specials.php сделал копию - specials_one.php

3. 

В 03.08.2021 в 23:37, support сказал:

прваить код в specials1.php указывая отдельный шаблон вместо specials_default.html например specials_default1.html

сделал все specials_default.html заменил на specials_default_one.html
А также предпоследнюю строчку $default->assign('MODULE_specials_default_one', $module); тоже заменил
 

4.

В 03.08.2021 в 23:37, support сказал:

Сам шаблон тоже взять скопировать /templates/vamshop4/module/specials_default.html в specials_default1.html

Сделал в specials_default_one.html

 

Link to post
Share on other sites
support
11 часов назад, nik сказал:

пробовал так include (DIR_WS_MODULES.FILENAME_SPECIALS_ONE);

Да, так, только надо константу эту FILENAME_SPECIALS_ONE задать в /includes/filenames.php

Ну и правильно сделать дубликат модуля, поменять код внутри specials_one.php

Link to post
Share on other sites

спасибо. все заработало

В шаблоне слайдера скидок, нет нужного блока.
как мне в первом слайдере сделать вывод из 1 слайда в слайдере скидок. - https://c2n.me/4cVNz5T
так чтоб во втором слайдере, ниже, осталось как по умолчанию 5 слайдов в слайдере - https://c2n.me/4cVNxxb

Link to post
Share on other sites
support
В 06.08.2021 в 15:08, nik сказал:

и еще 1 вопрос, как мне модулю "Популярное" сделать вывод из 1 слайда
https://c2n.me/4cVOAhQ

Ну всё это через правку вёрстки.

/templates/vamshop4/module/best_sellers_default.html

Возьмите пример какой-то готовый и сделайте на его основе.

Link to post
Share on other sites

Я этот файл смотрел, там нет необходимого блока.
И вложеный в него файл. тоже не содержит
{$smarty.const.DIR_FS_CATALOG}{$tpl_path}components/product-card/product-card-simple.html

как я это вижу
На сколько я понял. Блок, который содержит ширину выведеную через style подгружаетя через javascrypt файл. Также через скрипты подгружается первые активные элементы, в количестве - 4 штуки.
Если ширину я перебью, через css, то активные элементы, все будут выводиться видимые.

Нужно править javascrypt файл, В шаблоне создавать новый клас, типа owl-carousel например - owl-carousel-one , и в файле скриптов /templates/vamshop4/javascript/vamshop4.js создавать аналоги скриптов, и в них выводить не 4, а 1 элемент - https://c2n.me/4cX17nW . Но этого не достаточно, отображение не корректное, необходимо еще какие-то javascrypt файлы, подобным образом, добавить новый класс. Но какие файлы  что нужно продублировать?

Link to post
Share on other sites
support
2 часа назад, nik сказал:

Я этот файл смотрел, там нет необходимого блока.
И вложеный в него файл. тоже не содержит
{$smarty.const.DIR_FS_CATALOG}{$tpl_path}components/product-card/product-card-simple.html

как я это вижу
На сколько я понял. Блок, который содержит ширину выведеную через style подгружаетя через javascrypt файл. Также через скрипты подгружается первые активные элементы, в количестве - 4 штуки.
Если ширину я перебью, через css, то активные элементы, все будут выводиться видимые.

Нужно править javascrypt файл, В шаблоне создавать новый клас, типа owl-carousel например - owl-carousel-one , и в файле скриптов /templates/vamshop4/javascript/vamshop4.js создавать аналоги скриптов, и в них выводить не 4, а 1 элемент - https://c2n.me/4cX17nW . Но этого не достаточно, отображение не корректное, необходимо еще какие-то javascrypt файлы, подобным образом, добавить новый класс. Но какие файлы  что нужно продублировать?

Ну это так просто не сделать, только разметкой через правку кода.

Скрипт настройки слйдера в /templates/vamshop4/javascript/vamshop4.js

По owl найти можно, но owl carousel не поддерживает такого вывода, когда на первом месте 1 слайд, а дальше по 5.

Вам надо найти скрипт для слайдера подходящий и подключать его вместо owlcarousel.

Может быть https://splidejs.com/

Там посмотрите демку Auto width/height - https://splidejs.com/auto-width/

За счёт ширины слайдов можно так сделать, что б на первом экране 1 слайд был, а затем много.

Link to post
Share on other sites

Я понял, спасибо. 

Неверно объяснил, мне нужно чтоб именно в компоненте популярных товаров, был слайдер только по 1 слайду. И далее листал только по 1 слайду. 

Попробую другой компонент подключить, просто не хотел перегружать страницу сторонними скриптами

Link to post
Share on other sites
support
1 минуту назад, nik сказал:

Я понял, спасибо. 

Неверно объяснил, мне нужно чтоб именно в компоненте популярных товаров, был слайдер только по 1 слайду. И далее листал только по 1 слайду. 

Попробую другой компонент подключить, просто не хотел перегружать страницу сторонними скриптами

Ну это сделать легко

Копируйте в /templates/vamshop4/javascript/vamshop4.js код:

//OWL Carousel Slider
$(".owl-carousel").owlCarousel({
    margin: 30,
    nav: false,
    center: false,
    stagePadding: 30,
    dots: false,
    loop: false,
    navText: ['<span class="fas fa-chevron-left fa-1x"></span>','<span class="fas fa-chevron-right fa-1x"></span>'],
    responsive:{
        0:{
            items:1,
            margin: 10,
            stagePadding: 20
        },
        360:{
            items:2,
            margin: 10,
            stagePadding: 20
        },
        768:{
            items:3,
            margin: 10,
            stagePadding: 20
        },
        992:{
            items:4,
            margin: 10,
            stagePadding: 20
        },
        1200:{
            items:4,
            margin: 10,
            stagePadding: 20
        }
    }
})

поменяв класс, т.е. сверху например поменяйте .owl-caraousel на .my-owl-carousel и в настройках сладйера везде items: 1 укажите.

Вставляйте в vamshop4.js такой код:

//OWL Carousel Slider
$(".my-owl-carousel").owlCarousel({
    margin: 30,
    nav: false,
    center: false,
    stagePadding: 30,
    dots: false,
    loop: false,
    navText: ['<span class="fas fa-chevron-left fa-1x"></span>','<span class="fas fa-chevron-right fa-1x"></span>'],
    responsive:{
        0:{
            items:1,
            margin: 10,
            stagePadding: 20
        },
        360:{
            items:1,
            margin: 10,
            stagePadding: 20
        },
        768:{
            items:1,
            margin: 10,
            stagePadding: 20
        },
        992:{
            items:1,
            margin: 10,
            stagePadding: 20
        },
        1200:{
            items:1,
            margin: 10,
            stagePadding: 20
        }
    }
})

 

в html шаблоне заменить owl-carousel на my-owl-carousel и в стили /templates/vamshop4/css/vamshop4.css добавить:

.my-owl-carousel .owl-dots.disabled, .my-owl-carousel .owl-nav.disabled {
    display: none;
}

.my-owl-carousel .owl-dots.disabled, .my-owl-carousel .owl-nav.disabled {
    display: none;
}

 

Хотя, если просто нужно выводить слайды по одному, лучше возьмите встроенный другой слайдер.

Например испиользуйте bootstrap слайдер, просто сделав нужную разметку в html шаблоне.

Вот пример - https://getbootstrap.com/docs/4.6/components/carousel/

и в гугле можно найти множество других примеров, не только для картинок, а для html-блоков.

Это самый простой вариант.

Link to post
Share on other sites
×
×
  • Create New...