[РЕШЕНО] Ubercart несколько товаров в одном

Аватар пользователя casey_2000 casey_2000 10 ноября 2010 в 21:07

Уважаемое Комьюнити, проблема в следующем: нужно создать товар в котором будут несколько его вариантов как например здесь http://www.don-parfum.ru/product_6152.html. То есть имеется наименование, есть несколько его объемов или размеров, но как это сделать на одной странице - ума не приложу...

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

Комментарии

Аватар пользователя Andruxa Andruxa 11 ноября 2010 в 2:05

Вариант попроще - воспользоваться модулями:
1. Attribute (входит в Ubercart) - можно задать объемы/размеры через атрибуты, присвоить каждому атрибуту свой артикул (SKU) и цену.
Пользователь сможет выбирать нужный ему размер/объем (цвет и т.д.) из раскрывающегося списка.
2. UC Option Images - каждому атрибуту можно задать свою картинку, которая будет меняться через js при выборе атрибута из списка.
3. UC Attribute Stock Filter - фильтрует товары с атрибутами, отсутствующие на складе
4. UC Ajax Attribute Calculations - изменяет цену в зависимости от выбранного атрибута при его выборе из списка
5. UC attributes in cart - пользователь сможет менять атрибут в корзине.
Не уверен, что все эти модули будут работать одновременно.
Результат будет отличаться от примера (атрибут выбирается из списка).

Если же требуется сделать, как у Адидаса - я бы пошел следующим путем:
- Создал тип материала "Описание товара", в нем с помощью CCK Node Reference сделал бы ссылки на материалы типа "Товар", которые и являлись бы непосредственно товарами со своими особенностями (цвет, объем, размер и т.д.)
- или связал бы описание товара с самими товарами через таксономию.
далее - организовать вывод в следующем порядке:
1. Описание товара - заголовок, описание, изображение
2. Связанные товары - изображение, описание, цена, добавить в корзину
3. Описание товара - комментарии.
Это можно сделать либо с помощью представлений (views), либо темизацией шаблона для материалов типа "описание товара".

Как-то так...

Аватар пользователя casey_2000 casey_2000 11 ноября 2010 в 11:10

Andruxa wrote:

- Создал тип материала "Описание товара", в нем с помощью CCK Node Reference сделал бы ссылки на материалы типа "Товар", которые и являлись бы непосредственно товарами со своими особенностями (цвет, объем, размер и т.д.)

- это хорошо, с этим проблем не возникло
Andruxa wrote:

- или связал бы описание товара с самими товарами через таксономию.

- с этим способом проблема, я собственно через него и делал, когда зашел в тупик... если плясать от term description, то после описания и товаров нет возможности прикрутить комментарии (т.к. они к термину не прикручиваются)

все соответственно через views:

Andruxa wrote:

1. Описание товара - заголовок, описание, изображение

+ здесь все понятно
Andruxa wrote:

2. Связанные товары - изображение, описание, цена, добавить в корзину

??? здесь тоже все понятно, но только если первый и второй пункты делать в разных вьюсах, если в одном, то заголовок, текст и описание родительского тотвара повторяется с каждым дочерним, как это победить?
Andruxa wrote:

3. Описание товара - комментарии.
если слепить первое и второе, то здесь проблем не должно быть.

Аватар пользователя 7wonders 7wonders 10 ноября 2015 в 11:48

Понимаю, что пишу уже комментарий поздновато, но у меня не получается создать второй, третий и тд SKU на одной странице.
Надо как здесь http://www.don-parfum.ru/product_7966.html
У меня как будто SKU по умолчанию

Product information
SKU: *

и все Attributes идут как дополнительные товары..цена плюсуется..

к примеру, Product стоит 0 рублей, как я ставлю,

а attributes 100 рублей..

и системы плюсует 0+100=100
Подскажите пожалуйста, как attrubutes присвоить SKU..я в тупике
Спасибо

Аватар пользователя Andruxa Andruxa 11 ноября 2010 в 2:19

P.S. - в первом варианте необязательно использовать раскрывающийся список, можно и радиобатоны, и чекбоксы (множественный выбор), но у меня с ними не работал Option Images

основная разница между 1 и 2 - кол-во кнопок "добавить в корзину": во втором случае их будет несколько.

Аватар пользователя casey_2000 casey_2000 11 ноября 2010 в 9:27

Второй вариант подходит, спасибо большое, пошел пробовать, как сделаю отпишусь. Чет я про node reference не подумал...

Аватар пользователя Andruxa Andruxa 11 ноября 2010 в 11:47

"casey_2000" wrote:
но только если первый и второй пункты делать в разных вьюсах, если в одном, то заголовок, текст и описание родительского тотвара повторяется с каждым дочерним, как это победить?

В представлении создать 2 вида "вложение", первый выводится перед видом "страница", в нем заголовок, описание, изображение
Потом идет вид "страница", в нем выводятся связанные товары
Последним идет снова вид "вложение", в нем выводятся комментарии к заголовку товара

Аватар пользователя casey_2000 casey_2000 11 ноября 2010 в 19:33

Andruxa wrote:

В представлении создать 2 вида "вложение", первый выводится перед видом "страница", в нем заголовок, описание, изображение
Потом идет вид "страница", в нем выводятся связанные товары

с этим понятно, извините, был балван. Не пойму почему сам не додумался..[/quote]

но вот с

Andruxa wrote:

Последним идет снова вид "вложение", в нем выводятся комментарии к заголовку товара

Если я создаю view с типом материал, то он у меня не видит комментарии как поля, как это бороть (в отдельном view соответственно все нормально...)?

P.S. Извините конечно за назойливость и непонятливость, но так далеко в дебри views еще не лазил. Заранее благодарю за ответы.

P.P.S. Извините, снова был болван и слеп. все нашел. Andruxa большое спасибо за помощь!

Аватар пользователя casey_2000 casey_2000 11 ноября 2010 в 22:24

Andruxa wrote:
Последним идет снова вид "вложение", в нем выводятся комментарии к заголовку товара

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

Аватар пользователя Andruxa Andruxa 11 ноября 2010 в 22:48

Хм... Признаться - не знаю.
Сейчас поковырял views - появился встречный вопрос: а как удалось вывести комментарии?

Аватар пользователя casey_2000 casey_2000 11 ноября 2010 в 23:33

Вот все настройки views


Просто в качестве аргумента NID и потом с него брал комментарии

Аватар пользователя Andruxa Andruxa 12 ноября 2010 в 2:07

Не могу ничего подсказать...
Поискал модули - ничего не подошло.

Наверное, стоит подождать совета более опытных людей.

Либо смотреть в сторону шаблона node-описание_товара.tpl.php

Аватар пользователя casey_2000 casey_2000 12 ноября 2010 в 9:56

Andruxa wrote:
- для типа материала "товар" (в данном случае - тип материала будет "заголовок товара") я создал поле CCK viewfield, в котором указываю, какое именно представление будет выводить товар.
(Удобно - не надо плодить однотипные материалы, чтобы выводить товары по-разному).
В файле шаблона node-product.tpl.php (в данном случае будет node-тип_материала.tpl.php) оставил одну строку:
<?php print $node->field_viewfield[0]['view']; ?> которая вызывает view, выбранный для каждого конкретного товара в поле viewfield.

Соответственно, в Вашем случае можно поступить аналогичным способом, выводя заголовок и связанные товары через представление, а комментарии и форму для ввода новых - через шаблон, оставив в нем код, отвечающий за их вывод.

Получится слегка коряво, в идеале лучше переписать полностью шаблон и отказаться от представлений.
Или дождаться чьего-нибудь совета, как вывести форму ввода комментария в представлении.


А можно здесь по подробнее, особенно про "я создал поле CCK viewfield" это тип CCK'я такой?

Аватар пользователя casey_2000 casey_2000 12 ноября 2010 в 9:28

<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a> wrote:

http://api.ubercart.org/api/function/uc_attribute_load/2
и/или
http://api.ubercart.org/api/function/uc_product_get_attributes/2[/quote]

Не то, там другая логика. Там товар остается 1 и соответственно кнопка купить - 1 и не удобно цены выставлять в атрибутах. Это уже проходил.

Аватар пользователя casey_2000 casey_2000 12 ноября 2010 в 9:32

В принципе по основной задаче вопрос можно считать закрытым. По комментариям создам отдельную. Andruxa, еще раз спасибо, заставил мой мозг думать ))

Аватар пользователя Andruxa Andruxa 12 ноября 2010 в 10:17

Пожалуйста.
Мой мозг тоже потрудился, это полезно Smile

М.б. Views Custom Field поможет, если написать в нем вызов формы добавления комментария.
Или прилепить снизу блок...

Просьба - если получится решить, описать решение.

"casey_2000" wrote:
создал поле CCK viewfield" это тип CCK'я такой?

Да, реализуется модулем CCK viewfield.
Потом в типе материала добавляется поле, и при создании/редактировании материала указывается представление, соответствующее материалу.
Ну а вызывается оно из шаблона.

Кстати, в цитируемом посте я был неправ насчет "комментарии и форму для ввода новых - через шаблон, оставив в нем код, отвечающий за их вывод."
В шаблоне материала этого кода нет, там одна переменная $content поэтому пост и отредактировал

Можно воспользоваться советами http://drupal.ru/node/25903

Аватар пользователя casey_2000 casey_2000 14 ноября 2010 в 16:20

Andruxa еще раз спасибо, все реализовал через CCK viewfield. Оказалось очень удобно и не нужно изобретать велосипед.

Аватар пользователя casey_2000 casey_2000 15 ноября 2010 в 9:44

Andruxa wrote:
Был рад помочь.
Если не затруднит, можно ссылку на готовое решение?

создаем 2 типа материалов:

  • описание товара
  • товар

доп. поля у описания товара:

  • cck node reference
    • разрешить выбор только "товара"
    • создать view для отображения списка товаров для выбора
  • cck view field
    • создать view для отображения списка товаров этой ноды
      • Relationships: Содержание: товар (сск node reference поле в "описании товара")
      • Аргумент: NID
      • Поля: все необходимые, только выбирать "relationship товар"
Аватар пользователя chel chel 17 января 2011 в 7:25

"Andruxa" wrote:
1. Attribute (входит в Ubercart) - можно задать объемы/размеры через атрибуты, присвоить каждому атрибуту свой артикул (SKU) и цену.

А может ли быть у каждого SKU своё кол-во на складе? Т.е. к примеру Балон 10л, и балон 20л - это разные физ. еденицы, соответственно и разное кол-во на складе может быть

Аватар пользователя Andruxa Andruxa 17 января 2011 в 9:04

"chel" wrote:
А может ли быть у каждого SKU своё кол-во на складе

1 SKU это 1 товарная позиция.
Если включено отслеживание товарных запасов node/[nid]/edit/stock, то разные товары (ноды) с одинаковым SKU будут уменьшать складские остатки этого SKU при оформлении заказа.

К примеру - при включении многоязычности с переводом, каждый перевод товра на другой язык будет являться отдельной нодой, но SKU у них будет одинаковый.
При оформлении заказа, со склада будет списываться SKU, вне зависимости от языка ноды (её nid).

"chel" wrote:
Балон 10л, и балон 20л - это разные физ. еденицы, соответственно и разное кол-во на складе может быть

Если у них разные SKU, то кол-во на складе будет разным.

Аватар пользователя chel chel 17 января 2011 в 18:41

"Andruxa" wrote:
Если у них разные SKU, то кол-во на складе будет разным.

Т.е. получается таблица products - это сами продукты, а таблица нод(тип материала продукт) - это как бы общая группа объединяюшая похожие товары, которая группирует их по Заголовку ноды? (правильно мыслю?)

Аватар пользователя Andruxa Andruxa 17 января 2011 в 19:21

chel: Не совсем понял...

Если говорить от таблицах, то таблица node - это своего рода реестр всех нод, вне зависимости от их типа.

В таблице uc_products следующие поля:
vid, nid - со вторым понятно, значения этих полей совпадают, так что vid - это явно не vocabularyID, м.б. - редакция ноды;
model - там как раз SKU;
list_price, cost, sell_price - соответственно, 3 цены uc;
weight, weight_unit ... lenght_units - думаю, понятно;
pkg_qty, default_qty - кол-ва в упаковке и по умолчанию;
ну и т.д.
Т.е. таблица uc_product - это своего рода набор полей, делающих ноду продуктом.

Аватар пользователя chel chel 17 января 2011 в 19:37

Когда мы кликаем на продукцию, то получаем товары с разными атрибутами объединяемыми как бы в одну продукцию. На основе чего задается в таблицах такое объединение по сути разных товаров с разными SKU, как бы в отдельную продукцию (для конечного пользователя выглядит как товар с разными характеристиками) являющимися по сути разными товарами.

Аватар пользователя Andruxa Andruxa 17 января 2011 в 21:05

О, там много таблиц...

uc_attributes - там список атрибутов, который мы видим на странице admin/store/attributes/overview
uc_attribute_options - список опций со страницы admin/store/attributes/[aid]/options
uc_product_attributes - привязка атрибутов из uc_attributes к нодам, с указанием заголовка атрибута и опции по дефолту, это можно наблюдать на странице node/[nid]/edit/attributes
uc_product_options - привязка опций к ноде, с указанием их дельт стоимости и веса: node/[nid]/edit/options, а дефолтная опция, как уже говорилл - пишется в uc_product_attributes
uc_product_adjustments - тут, собственно, комбинациям нода+опции назначаются SKU

остаются еще uc_class_attributes и uc_class_attribute_options, они у меня пустые - не знаю, что в них...

Аватар пользователя Andruxa Andruxa 17 января 2011 в 21:16

Стоп.

Мы сейчас говорим именно об атрибутах продукта, или о том решении, которое обсуждалось в начале комментариев?
(заголовок, к которому через node refrence прибиты несколько продуктов)

Аватар пользователя chel chel 17 января 2011 в 23:06

"Andruxa" wrote:
uc_product_options - привязка опций к ноде, с указанием их дельт стоимости и веса:
uc_product_adjustments - тут, собственно, комбинациям нода+опции назначаются SKU

uc_product_adjustments - похоже зависимые атрибуты товаров - круто, спасибо!

Аватар пользователя chel chel 17 января 2011 в 22:30

"Andruxa" wrote:

"Andruxa" wrote:
Мы сейчас говорим именно об атрибутах продукта, или о том решении, которое обсуждалось

Скорее мы говорим о первом варианте решения (развиваем его).
Вариантов было два, как я понял: Простой, и как у Адидаса. Smile

Аватар пользователя Andruxa Andruxa 18 января 2011 в 0:01

"chel" wrote:
uc_product_adjustments - похоже зависимые атрибуты товаров

ну,они там в виде "a:1:{i:2;s:2:"10";}"
да и голыми руками в БД лазить - тоже не гут

Аватар пользователя Andruxa Andruxa 29 января 2011 в 14:29

Понравилось.

Поворчу немного для порядку ))

- некоторые изображения продукта без полей, получается не очень удобно читать:

- в панели информация о покупателе ашыпко:

- ссылка на корзину только в праймари, как-то привык видеть ее в сайдбаре с кол-вом товаров и их суммой, но это наверное личное

Чьорд, а куда подевались приаттаченные скриншоты?

Аватар пользователя chel chel 18 января 2011 в 18:37

"casey_2000" wrote:
результат можете посмотреть здесь: http://terraparfum.ru[/quote]
Суперски
"Andruxa" wrote:
ну,они там в виде "a:1:{i:2;s:2:"10";}"
да и голыми руками в БД лазить - тоже не гут

а как не голыми руками эту связь сохранить?
пробовал делать print_r ($node), эту связь не увидел, увидел только то, что является атрибутом, но если атрибуты по хитрому, то не видно.
к примеру есть две майки, одна размером S, и размер L, третья только M

Аватар пользователя Andruxa Andruxa 18 января 2011 в 19:00

"chel" wrote:
майки, одна размером S, и размер L, третья только M

Видимо, создавать 2 продукта: майка1 с атрибутами S и L, майка2 - можно вообще без атрибутов, раз размер один.
Это же разные майки, насколько я понимаю, раз нельзя объединить их размеры в один атрибут - S,M,L.
Тогда лучше использовать 2 продукта - с разными изображниями и описаниями.

Аватар пользователя casey_2000 casey_2000 19 января 2011 в 9:36

"Andruxa" wrote:

- некоторые изображения продукта без полей, получается не очень удобно читать:

Где именно?

"Andruxa" wrote:

- в панели информация о покупателе ашыпко:

Хде?! О_о

"Andruxa" wrote:

- ссылка на корзину только в праймари, как-то привык видеть ее в сайдбаре с кол-вом товаров и их суммой, но это наверное личное

И мое имхо тоже, только клиент не захотел.

Аватар пользователя casey_2000 casey_2000 19 января 2011 в 9:39

"chel" wrote:
дна размером S, и размер L, третья только M

В твоем случае лучше такой же геморой нагородить как у меня. Другую логику так и не придумал. Ситуация та же, только у меня флаконы 30, 50 мл, а другие 30 100 и т.д. Таким образом я сделал каждый флакон - товар и "Описание товара", в которое через node reference добавляются товары.

Аватар пользователя Andruxa Andruxa 19 января 2011 в 10:26

"casey_2000" wrote:
Хде?! О_о

Дык, скриншоты пошли по женской линии почему-то...

http://terraparfum.ru/catalog/chanel/chanel-chance
здесь изображение без полей и текст плохо воспринимается

Чекаут:
...чтобы войти под своей учетной записью

Нашел модуль Ubercart Sub-Product - он вроде бы полностью повторяет решение с вьюсами

Аватар пользователя psyh psyh 31 января 2011 в 19:22

To casey_2000. У тебя каталог товаров получается состоит не из товаров, а из нод типа "Описание товара"?
При клике на какой-либо товар в блоке спец-предложений, открывается страница типа "Описание товара", если я правильно понимаю. А каким образом, открывается она, а не сам товар?

Аватар пользователя casey_2000 casey_2000 1 февраля 2011 в 12:56

"Psyh" wrote:
To casey_2000. У тебя каталог товаров получается состоит не из товаров, а из нод типа "Описание товара"?

Да
"Psyh" wrote:
При клике на какой-либо товар в блоке спец-предложений, открывается страница типа "Описание товара", если я правильно понимаю

Абсолютно не правильно. Просто открывается нода "описание товара" к которой через node reference прикреплены "товары"
"Psyh" wrote:
А каким образом, открывается она, а не сам товар?

У меня каталог не Ubercart'овский а на views'ах сделанный

Аватар пользователя psyh psyh 2 февраля 2011 в 12:41

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

Аватар пользователя casey_2000 casey_2000 2 февраля 2011 в 17:25

Наоборот в данном конкретном случае заказчику понравилось. Специфика просто такая, что существует аромат, а к нему: туалетная вода, парфюмированная вода, разный литраж и т.д.