Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Запрос] Сделать кол-во товара списком ?


sys

Recommended Posts

Как сделать,что бы кол-во товара указывалось не текстовым полем, а выпадающим списком?А также иметь возможность, регулировать шаг кол-ва в заказе в каждой товарной позиции, при чем шаг, как четный, таки не четный (т.е 2,4,6 или 2,3,4,6,8, 12+)

Надіслати
Поділитися на інших сайтах


Открыть,

catalogviewthemedefaulttemplateproductproduct.tpl

Найти:

<input type="text" name="quantity" size="3" value="1" />

Заменить на:

<select name="quantity"><? $limit = 10; // лимит списка$step = 1; // шаг - через сколько$first = 0; // первоначальное значениеfor ($i = $first; $i < $limit; $i++, $i=$i+$step ) { ?>    <option value="<?=$i?>"><?=$i?></option><? } ?></select>
Надіслати
Поділитися на інших сайтах


Спасибо, вот что значит человек рубит :(Но, если я хочу создать более универсальное решение.К примеру менять для каждого товара шаг в кол-ве?С простым приращением понятно 2,3,4А если сначала идет 2,3,4, а потом 6,8,10, к примеру ?

Надіслати
Поділитися на інших сайтах


Но, если я хочу создать более универсальное решение.К примеру менять для каждого товара шаг в кол-ве?

Это можно сделать, но нужно уже более глубокое вмешательство в код движка.С простым приращением понятно 2,3,4

А если сначала идет 2,3,4, а потом 6,8,10, к примеру ?

Можно сделать несколько циклов - и в каждом из них менять шаг
Надіслати
Поділитися на інших сайтах


  • 1 month later...

Открыть, catalogviewthemedefaulttemplateproductproduct.tplНайти:

<input type="text" name="quantity" size="3" value="1" />
Заменить на:
<select name="quantity"><? $limit = 10; // лимит списка$step = 1; // шаг - через сколько$first = 0; // первоначальное значениеfor ($i = $first; $i < $limit; $i++, $i=$i+$step ) { ?>    <option value="<?=$i?>"><?=$i?></option><? } ?></select>
а как сделат штобы скрипт сам определял длину списка ? тоэст определял по количеству товара на складе ?
Надіслати
Поділитися на інших сайтах


catalog/model/product/product.tpl - сдесь сделать выгрузку необходимой ячейки в переменную которую надо считать с БД данного товара (в данном случае Колличество на складе)!catalog/controller/product/product.php сдесь получить эту переменную из model и перенаправить в viewcatalog/view/theme/default/template/product/product.tpl - отображени страницы? просто вывести переменную!Понимаю что это может сложно, но внимательнее просмотрев все эти три страници с кодом, можно всё понять как работает, на примере другой ячейки которая уже реализована и отображается!!!Потом просто этой переменной(количество товаров) присвоить $limit.

Надіслати
Поділитися на інших сайтах


Кароче попробуй так!!!

Зайди в админ панель, Система--Настройки вкладка Атрибуты, в поле Показывать остаток на складе: выбери да!!!

затем на странице catalog/view/theme/default/template/product/product.tpl после 30 строки вставь вот это!

<?php $limit = $stock; ?>
а из кода что тебе давали выше удали:

$limit = 10;
если что пиши!
Надіслати
Поділитися на інших сайтах


Спосиба заработалоМой код

<select name="quantity"><? $first = $minimum; // первоначальное значениеfor ($i = $first; $i < $limit; $i++, $i=$i+$minimum ) { ?>    <option value="<?=$i?>"><?=$i?></option><? } ?></select>
Но интересна он отображаэт не 1,2,3,4,5,6а 1,3,5,7,9,11интересно где нужна изменит алгоритм и удалит ету эдиничку А эсли ставиш "Minimum Quantity" 3 то отображаэт 3,7,11,15,19,23
Надіслати
Поділитися на інших сайтах


а вот появилас идея а дла груп можна както исползоват , $discount['quantity']; ?

что то не понял, поподробнее опиши что должно быть!А насчёт съедает!попробуй лимит на 1 прибавить или минимум на 1 убавить!поэкспериментируй!так:
<select name="quantity"><? $first = $minimum; // первоначальное значение$first = $first + 1;for ($i = $first; $i < $limit; $i++) { ?>    <option value="<?=$i?>"><?=$i?></option><? } ?></select>
или так:
<select name="quantity"><? $first = $minimum; // первоначальное значение$limit = $limit + 1;for ($i = $first; $i < $limit; $i++) { ?>    <option value="<?=$i?>"><?=$i?></option><? } ?></select>
попробуй как правильно будет присваивать количество товаров то так и оставляй!
Надіслати
Поділитися на інших сайтах


  • 4 months later...

Ок. Эксперементировал по разному, всем спасибо.

Но, интересует такой вариант, когда шаг разный.

К примеру, мне нужно задать в списке следующий шаг.

1,2,3, 4, 6, 8

т.е часть с нулевым шагом, часть через 1, часть через 2 и тп?

Как это можно реализовть по простому?

Надіслати
Поділитися на інших сайтах


Ура... Доперло, всем Спасибо! :)))

sys сказал:

А если сначала идет 2,3,4, а потом 6,8,10, к примеру ?

Можно сделать несколько циклов - и в каждом из них менять шаг

Все оказалось рядом!!! Надо сделать на каждый шаг, отдельный цикл!

Надіслати
Поділитися на інших сайтах


Все оказалось рядом!!! Надо сделать на каждый шаг, отдельный цикл!

это может жестоко сказаться на производительности...

ихмо - проще в каждый товар добавить поле "шаг" и потом с ним работать.

Надіслати
Поділитися на інших сайтах

это может жестоко сказаться на производительности...

ихмо - проще в каждый товар добавить поле "шаг" и потом с ним работать.

Почему?

Модификацию произвел прямо в шаблоне, добавив два отдельных цикла для каждого шага.

Максимально, думаю три цикла, больше не понадобится.

Так где, нагрузка то?

P.S.

Безусловно удобней для каждого товара или группы, но это уже серьезная модификация.

  • +1 1
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.