Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Тему пришлось переименовать, теперь она про компоновки товаров.
Для того, чтобы я окончательно остановил свой выбор на движке, мне не хватает Компоновок товаров.
Давайте разберём что это такое. Некоторые проводят параллель между компоновками и комплектами. Но для меня разница есть и разница существенная. Да, я могу потратиться на комплекты (модуль уже разработан), но это будет лишь временным костылём.
Мне же нужно вот что:

Любой товар может являться компоновкой в том случае, если в его состав входят другие товары. Компоновка едина и неделима в движке и в частности в корзине.

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

Покупали ли вы когда-нибудь контактные линзы? Никогда не видели 6 пар линз и раствор в подарок? В данном случае компоновка называется "6 пар линз + раствор". И продаётся этот товар только с 15 по 30 августа. Если человек добавляет в корзину ещё 1 пару линз и 2 банки раствора, то в корзине отображается 3 товара: "6 пар линз + раствор" - 1 шт, "линзы" - 1 шт, "раствор для линз" - 2 шт.

А иногда бывает так, что посетителю просто удобно заказать товар "Электронная сигарета + 2 картриджа стоят", он зашёл в магазин, нажал кнопку "купить", ввёл свои данные и всё. Ему не предоставляется никакая скидка, однако же ему удобно купить все товары одним щелчком, а не лезть в другие разделы. Это выгодно и мне, как предпринимателю: я продал именно 2 картриджа, а не 1.

Теперь о реализации такой задумки:
всё это делается используя связанные товары. Просто в шаблоне переименовываем соответствующий блок в "в эту компоновку входят:" и человек сразу видит, что входит в компоновку и в каком количестве. Может пройти по ссылке, почитать описание товаров из компоновки и вернуться обратно, ДОБАВИВ КОМПОНОВКУ В КОРЗИНУ.

Но реализация осложняется тем, что в админке cms simpla нельзя указать количество связанных товаров (в моём случае количество товаров из компоновки). Кто сделает это, того готов отблагодарить.
Суть простая: либо добавляем в таблицу related_products поле q, которое будел означать количество, либо же используем для данных целей поле position.

Когда задача будет реализована, появится вторая: автоматом пересчитывать сумму компоновки. А что касается скидок, то тут всё на усмотрение руководства.

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 52
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

*** Novecheg: "куда пропал Laster?"

А был ли он))) Или это очередная пиар компания одного из здешних, а может не местных программистов)))

Ссылка на сообщение
Поделиться на другие сайты

Не знаю.
Визард, может подскажешь, можно ли сделать такое изменение, чтобы не только на сайте, но и в админке показывалась цена каждого связанного товара?

Ссылка на сообщение
Поделиться на другие сайты

но и в админке показывалась цена каждого связанного товара

можно

если я правильно понял и вам надо такой вывод:


то делается он по аналогии с клиентской частью

Ссылка на сообщение
Поделиться на другие сайты

if(!empty($related_products))
{
foreach($related_products as &$r_p)
	$r_products[$r_p->related_id] = &$r_p;

$temp_products = $this->products->get_products(array('id'=>array_keys($r_products)));
foreach($temp_products as $temp_product)
	$r_products[$temp_product->id] = $temp_product;

$related_products_images = $this->products->get_images(array('product_id'=>array_keys($r_products)));
foreach($related_products_images as $image)
{
	$r_products[$image->product_id]->images[] = $image;
}

 		$related_products_variants = $this->variants->get_variants(array('product_id'=>array_keys($r_products)));
 		foreach($related_products_variants as $r_variant)
 		{
               $r_products[$r_variant->product_id]->variants[] = $r_variant;
 		}
}



<div class="name cell"><a href="{url id=$related_product->id}">{$related_product->name}</a>              {if $related_product->variants}              <br />                 {foreach $related_product->variants as $v}                 -  {if $v->name}{$v->name} -{/if} {$v->price}<br />                 {/foreach}              {/if}</div>
Ссылка на сообщение
Поделиться на другие сайты

У меня заработало.
На всякий случай уточню (вдруг кого-то заинтересует вариант, который предложил Визард):
первая правка в simpla/ProductAdmin.php
вторая правка в simpla/product.tpl

Огромное спасибо за код. Это то, о чём я писал тут долго-долго, но никто не соглашался это сделать.
Осталось лишь по аналогии добавить к каждому связанному товару ещё одно поле int и выводить (плюс редактировать) его в админке.
Понимаю, что бесплатно никто за такое не возьмётся.

Ссылка на сообщение
Поделиться на другие сайты

Поле добавить в базу данных и делать редактирование в админке. Для профи всё просто. За это и готов заплатить.

Ссылка на сообщение
Поделиться на другие сайты

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

1. Допустим товар может участвовать в разных комплектах и цена у него может быть разной.

2. если я добавляю (каким то чудным образом) комплект и удаляю все товары с комплекта кроме одного, который меня интересует. Он остается со скидкой, далее беру штук 10 этих наименований с халявной скидкой? А если это наименование в другом комплекте с другой стоимостью - что в этом случае делать?

3. Я хочу добавить два комплекта в корзину. как это должно отображаться?

4. Я хочу добавить два разных комплекта но некоторые товары в них пересекаются. Что делаем в этом случае?

5. если в корзине есть комплект, и я хочу добавить еще одно наименование которое присутствует в комплекте - какова стоимость данного товара будет, и будет ли оно выводиться отдельно или сливаться с комплектом(это уже не комплект по сути)? Если должно сливаться то с каким именно комплектом если их более двух разных но в каждом из них присутствует данное наименование?

6. Как все это должно отображаться на стороне админа – в редакторе и в заказах?

можно еще долго продолжать...

Вы слишком недооцениваете сложность данного модуля. Нужно перелопатить половину CMS для того что бы заставить данную доработку работать адекватно с учетом разных сценариев и потребностей.

Ссылка на сообщение
Поделиться на другие сайты

Визард, давайте по порядку. Суть у меня простая: товар может являться комплектом, комплект един и неделим, на комплект цена может считаться как автоматом (по сумме товаров), так и редактироваться менеджером. Электронная сигарета + 2 картриджа стоят 562 рубля, а я захотел продавать этот комплект за 560 рублей - сам зашёл в товар (который комплект), сам отредактировал. А завтра я захочу продавать этот комплект за 599 рублей. И такое бывает в магазинах.
0. Если комплект в моём случае - это обычный товар (у товара есть связанные товары), значит, товар является комплектом, то в корзину он летит как 1 товар. Раскомплект невозможен.
1. Если цена может быть разной, это задача менеджера. Сегодня комплект продаётся со скидкой в 5%, а завтра мы решаем, что скидок не будет. Просто покупателю удобнее купить комплект целиком, а не набирать поэлементно. И мне удобнее продать комплект.
2. вопрос сам собой отпал.
3. так же, как отображаются в корзине 2 товара.
4. Ничего сливаться не будет:
электронная сигарета+2 картриджа: 599 рублей
2 картриджа: 99 рублей.
Итого: 698 рублей

Ссылка на сообщение
Поделиться на другие сайты

А если кто-то захочет сделать скидку в процентах и прочие навороты, то основа уже будет.
Корсу я отписал примерно так:

Итак, что есть у меня: связанные товары переименованы в товары из комплекта, любой товар может быть комплектом - и это именно то, что нужно. В админке выводится цена каждого товара (спасибо Визарду), осталось только в таблицу связанных товаров (кажется, related_products) добавить дополнительное числовое поле, назовём его quantity. По умолчанию - 1. При добавлении нового связанного товара (для меня он называется иначе), этому связанному товару задаётся количество: 1 (quantity = 1). Там же, где выбираются связанные товары (в админке в карточке товара), можно это число изменить (quantity = 2, например).
Теперь по поводу использования поля. Если у товара есть связанные товары (в моём случае это признак того, что перед нами не просто товар, а комплект), то цена этого товара должна складываться из сумм цен связанных товаров (соответственно, если у связанного товара quantity = 2, то нужно умножать на 2).
Это решение будет далеко не идеальным, но мне нужно именно оно.
Алгоритм я уже написал, за реализацию больших денег не обещаю. Если вам не сложно такое сделать, назовите цену.

Ссылка на сообщение
Поделиться на другие сайты

Пробую сделать сам:
Итак, файлов для правки всего 3.
api/Products.php
(примерно 387 строка)
$query = $this->db->placehold("SELECT product_id, related_id, position, q
FROM __related_products
WHERE
1
$product_id_filter
ORDER BY position
");
(примерно 400 строка)
// Функция возвращает связанные товары
public function add_related_product($product_id, $related_id, $position=0, $q=1)
{
$query = $this->db->placehold("INSERT IGNORE INTO __related_products SET product_id=?, related_id=?, position=?, q=?", $product_id, $related_id, $position, $q);
$this->db->query($query);
return $related_id;
}
/ProductView.php
(примерно 116 строка) что редактировать, не знаю.

Ссылка на сообщение
Поделиться на другие сайты

добавить поле q, разумеется.
Simpla/ProductAdmin.php
(примерно 262 строка)
$this->products->add_related_product($product->id, $related_product->related_id, $pos++, $related_product->q);

И ещё править шаблон в админке

Ссылка на сообщение
Поделиться на другие сайты

Simpla/design/default/html/product.tpl
В районе 645 строки вставить
<input name=q value='{$related_product->q}'>
(это вставляется в блок <div class="name cell">)

Ссылка на сообщение
Поделиться на другие сайты

Я одного не понял - зачем все это? и каким образом это в Корзине будет видно?
Я так понимаю, смысл Комплектов немного другой - купи вместе с телевизором подставку - будет дешевле))) И комплектов на один товар - 3-4 шт (подставка, ДВД, БлюРей, 3Д очки) тогда смысл будет... А так - фуфло выйдет.
Алгоритм не продуман. Тут не поле надо добавлять, а как минимум таблицу...

Ссылка на сообщение
Поделиться на другие сайты

Kosjak76, отвечаю: мне нужно именно так (пусть фуфло). Про корзину уже писал.
Это не комплекты. Это наборы. Или компоновки. Их смысл совсем другой.

Ссылка на сообщение
Поделиться на другие сайты

Хватит уже отдельных тем. В этой описано всё, в том числе и то, что я её переименовал. Буду ждать окончания сезона отпусков, там и программисты на форум подтянутся.
Доделок тут немного осталось.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...