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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...