Шаг 2. Создание типа материалов и категорий

Для того чтобы разбить товары по категориям создадим словарь таксономии Категории.

Создание словаря Категории

Далее добавим в него несколько терминов и организуем их в двухуровневую структуру:

Термины словаря Категории

Теперь создадим меню Категории которое мы привяжем к только что созданному словарю. Для этой цели предварительно установим и включим модуль Taxonomy menu.

Модуль Taxonomy menu позволяет создавать пункты меню на основе терминов таксономии.

Создание меню Категории

Для отображения товаров на сайте создадим тип материалов Представление товара.

Создание типа материалов Представление товара

Добавим поле Товар типа Ссылка на товар. Этот тип поля предоставляет модуль Commerce с помощью него и будет осуществляться привязка товаров к материалам типа Представление товара.

Добавление поля Товар

В настройках поля Товар отметим галочку Обязательное поле, установим количество значений Не ограничено и выберем Product в поле Типы товаров, которые могут быть связанны (Commerce позволяет создавать разные типы товаров, мы в этом примере будем использовать только стандартный тип товаров Product).

Настройки поля товар

Также добавим поле Категория типа Ссылка на термин чтобы можно было разбить товары по категориям которые мы подготовили в словаре Категории.

Добавление поля Категории

В настройках поля выберем наш словарь Категории.

Выбор словаря Категории

Сделаем это поле обязательным чтобы не оставлять товары не привязанные к категориям.

Настройки поля Категории

Далее перейдем к списку полей стандартного типа товаров Товар.

Ссылка на управление полями товара

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

Добавление поля Изображение в товар

Поделись с друзьями:

Комментарии

А где дальше?

А все понял, дальше идет в 4 или в 5 уроке про товары, не внимательный ))

Добрый день Денис почему Товар-управление полями не отсвечивает цена

Не понял вашего вопроса. Цена у товара всегда есть. Это поле которое нельзя удалить.

Денис, добрый день.
Не подскажете в чем может быть трабл? Поле "цена" отсутствовало в списке полей.
Добавил его в ручном режиме.
От этого глюков никаких не должно быть?
Спасибо.

похоже что проблема все таки есть... :( при просмотре товара выдает вот такую ошибку...

Notice: Undefined property: stdClass::$commerce_price в функции commerce_product_line_item_populate() (строка 1373 в файле Z:\home\magazin\www\sites\all\modules\commerce\modules\product_reference\commerce_product_reference.module).
Notice: Undefined property: stdClass::$commerce_price в функции commerce_product_line_item_populate() (строка 1373 в файле Z:\home\magazin\www\sites\all\modules\commerce\modules\product_reference\commerce_product_reference.module).

Попробуйте все сделать заново используя Acquia Dev Desktop в качестве локального сервера. Проблема в том что Commerce не всегда правильно инициализируется при включении если конфигурация сервера не правильная. Поле цена должно быть у товара по умолчанию.

Спасибо, за совет.
Проблему удалось решить через запуск Repair Commerce fields (admin/commerce/config/repair)

Вот в том то и дело что оно не отсвечивает хотя все модули включены. Может это из за збоев в работе друпал

Проверьте включено ли отображение поля Цена (Price) в Управлении отображением для Товара admin/commerce/products/types/product/display и для Представления товара admin/structure/types/manage/product_display/display

Вы в скриншотах хлебные крошки админки бы захватывали, а то иногда в ступор приводят действия на скринах, что и откуда это вызвано

Не думал об этом, учту на будущее :)

и ссылочки перехода на следующий и предыдущий материал где-то снизу например, было-бы удобнее

Добрый день!!Выполнил все выше изложенное до пункта где заходим в админке: в :Магазин>Товар>и там по идее должен быть Товар "товар" (простите за тавтологию)))), ное го нет((( решил создать его в ручную через добавить товар, он создался но отсутвует пункт управление полями...как то так.Помогите в какой стороне искать ошибку((

Это стандартный тип товара, он должен там быть. Скорее всего вы просто не туда посмотрели.

Добрый день!
Два вопроса :
1. Как перевести модуль Commerce, если сайт был переведен еще до установки модуля?
2. Во вкладке Store (Магазин), у меня подпункт только "Конфигурация", а где остальные :заказы, профили клиентов, товары?

Второй пункт решился путем включения следующих модулей:
Order Ui, Customer UI и Product UI

Но все это у меня не переведено, как перевести?

Установите Localization update, он позволяет обновлять свежие локализации.

Добавим поле Изображение -- нет возможности добавить, так как в списке есть только два пункта: "Ссылка на термин" и "Ссылка на товар". Подскажите, пожалуйста, как включить возможность добавление поля "Изображения"?

Включите модуль Image.

Я вот этого не понял, где его создавать?
"Теперь создадим меню Категории которое мы привяжем к только что созданному словарю. Для этой цели предварительно установим и включим модуль Taxonomy menu"

Структура -> Меню -> Добавить меню (admin/structure/menu/add).

Все, спасибо! Просто не правильно понял)

Добрый день, Денис! Подскажите, пожалуйста, как на основе терминов таксономии Категории создать в блоке Содержимое представление, чтобы на главной странице отображались только родительские ссылки "Одежда" и "Инвентарь", затем, если клик по ссылке "Инвентарь", то на следующей странице ссылки "Мячи" и "Обручи", а уже клик по ссылке "Мячи" открывает страницу с представлением товаров "Мячи", и т.д.?
Гугл подсказывает, что здесь должно быть как минимум два представления, но не представляю как их связать. Попытался создать представление, сделал связь с родителем термина таксономии, добавил поле (Родитель) Термин таксономии: Имя. Предпросмотр выводит две ссылки: Одежда и Инвентарь. Как быть дальше, не знаю.

Вот небольшой пример со стандартным словарем Tags и типом материалов Article:

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

$view = new view();
$view->name = 'test';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'taxonomy_term_data';
$view->human_name = 'test';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
 
/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Parent terms';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '10';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
/* Field: Taxonomy term: Term ID */
$handler->display->display_options['fields']['tid']['id'] = 'tid';
$handler->display->display_options['fields']['tid']['table'] = 'taxonomy_term_data';
$handler->display->display_options['fields']['tid']['field'] = 'tid';
$handler->display->display_options['fields']['tid']['label'] = '';
$handler->display->display_options['fields']['tid']['exclude'] = TRUE;
$handler->display->display_options['fields']['tid']['element_label_colon'] = FALSE;
/* Field: Taxonomy term: Name */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'taxonomy_term_data';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['label'] = '';
$handler->display->display_options['fields']['name']['alter']['make_link'] = TRUE;
$handler->display->display_options['fields']['name']['alter']['path'] = 'subterms/[tid]';
$handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
$handler->display->display_options['fields']['name']['element_label_colon'] = FALSE;
/* Filter criterion: Taxonomy vocabulary: Machine name */
$handler->display->display_options['filters']['machine_name']['id'] = 'machine_name';
$handler->display->display_options['filters']['machine_name']['table'] = 'taxonomy_vocabulary';
$handler->display->display_options['filters']['machine_name']['field'] = 'machine_name';
$handler->display->display_options['filters']['machine_name']['value'] = array(
  'tags' => 'tags',
);
/* Filter criterion: Taxonomy term: Parent term */
$handler->display->display_options['filters']['parent']['id'] = 'parent';
$handler->display->display_options['filters']['parent']['table'] = 'taxonomy_term_hierarchy';
$handler->display->display_options['filters']['parent']['field'] = 'parent';
$handler->display->display_options['filters']['parent']['value']['value'] = '0';
 
/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['path'] = 'parent';
 
/* Display: Subterms page */
$handler = $view->new_display('page', 'Subterms page', 'page_1');
$handler->display->display_options['defaults']['title'] = FALSE;
$handler->display->display_options['title'] = 'Subterms';
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Contextual filter: Taxonomy term: Parent term */
$handler->display->display_options['arguments']['parent']['id'] = 'parent';
$handler->display->display_options['arguments']['parent']['table'] = 'taxonomy_term_hierarchy';
$handler->display->display_options['arguments']['parent']['field'] = 'parent';
$handler->display->display_options['arguments']['parent']['default_action'] = 'default';
$handler->display->display_options['arguments']['parent']['default_argument_type'] = 'raw';
$handler->display->display_options['arguments']['parent']['default_argument_options']['index'] = '1';
$handler->display->display_options['arguments']['parent']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['parent']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['parent']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['defaults']['filter_groups'] = FALSE;
$handler->display->display_options['defaults']['filters'] = FALSE;
/* Filter criterion: Taxonomy vocabulary: Machine name */
$handler->display->display_options['filters']['machine_name']['id'] = 'machine_name';
$handler->display->display_options['filters']['machine_name']['table'] = 'taxonomy_vocabulary';
$handler->display->display_options['filters']['machine_name']['field'] = 'machine_name';
$handler->display->display_options['filters']['machine_name']['value'] = array(
  'tags' => 'tags',
);
$handler->display->display_options['path'] = 'subterms/%';

Добрый День! Уже обсуждался вопрос по поводу ошибки "Notice: Undefined property: stdClass::$commerce_price в функции"
http://test.brille.dp.ua/node/3
Устанавливал "Commerce Repair 7.x-1.x-dev" не помог.... Буду очень благодарен за помощь!

Commerce repair установили просто или запускали (admin/commerce/config/repair)? Если не помогает пробуйте второй вариант - сделать все заново с Acquia Dev Desktop.

Доброго времени суток.
Я хотел уточнить, как можно сделать так что бы категория так же задавалась при создании продукта.
То есть по Вашему уроку, нам нужно еще редактировать Referenced Node, а мне хотелось бы создавать товар и все готово.
Как думаете если пропатчить модуль Commerce Product Reference Manager, и сделать в нем так же функционал который будет брать категорию с товара, который мы создаем и записывать ее в Referenced Node?
Или может какое то другое решение можете подсказать?

Если у вас все товары будут привязаны к какой-то категории то можно просто это поле создать как поле товара а не представления товара. Второй вариант использовать модуль Inline Entity Form и создавать товар параллельно с созданием представления (пример того как это реализовать смотрите в Commerce kickstart 2.x). В общем тут все зависит от того что вам надо получить на выходе, но патчить контриб модули просто так не советую, это надо делать только в крайних случаях.

Спасибо, второй вариант мне как раз подойдет.

Здравствуйте. Подскажите пожалуйста. Сделал тестовый пример по вашему курсу, всё вроде работает. Захотел добавить новый реквизит к товару - Производитель, что бы затем сделать фильтр по этому реквизиту. Добавляю новый словарь таксономии, добавляю в него термины и когда кликаю на термин - ошибка "Страница "/?q=/Производитель/блабла" не найдена.". Делаю словарь используя латинские буквы та же ошибка "Страница "/?q=dt/dt1" не найдена.". Если добавляю термин в наш словарь Категории, то он открывается. Подскажите в чём может быть проблема?

Если вы уже делали представление из 5 шага, то все логично. Мы перебиваем системный пусть taxonomy/term/% для словаря "Категории". Если вам нужно чтобы детальная страница любого термина была доступна нужно переделать представления используя другие пути. В общем тут все зависит больше от того что вы хотите получить на выходе.

Вот тут моя неначавшаяся любовь к друпалу, видимо и закончилась. Я терпеливо следовал по шагам, увидел как друпал на локале трижды подвисал (!). К середине 2 урока я уже очень сильно уморился угадывать в какое меню залез автор. Наверное лучше перед скриншотом писать путь типа Меню->Раздел->Подраздел. Сделав туеву хучу телодвижений я уже начал понимать, что навеное лучше я напишу движок на Yii сам без этой какой-то ритуальной хери. Но надежда не угасала, пока я тупо не смог найти опцию Ссылка на термин. Вот тут я решил плюнуть и на магазин и на друпал. Не долго музыка играла.

Негативный опыт тоже полезен :)

Добрый день.
У вас написано и выберем Product в поле Типы товаров, которые могут быть связанны..., но у меня нет для выбора поля Product все есть что у вас, только этого поля нет. Не подскажете почему?

Вы выполняли Шаг 1? Если да, то должно быть. Product это стандартный тип товара, он должен быть там по умолчанию.

Конечно а как же без первого шага.

и на картинки у магазина у вас 4 подменю у меня одна конфигурация. Хотя все делал по пунктам?

Проверьте все ли модули из раздела Commerce у вас включены, если нет включите все.

День добрый!
Подскажите пожалуйста по какой причине у меня нету данного пункта : "выберем Product в поле Типы товаров, которые могут быть связанны"?

Нашел, оказывается "ТИПА ПОЛЯ" поля неправильно выбрал, пол перевод у меня(

*полу

Здравствуйте, Денис! У меня проблема вот в чем, я все сделал по Вашим урокам, все получилось и работает хорошо! Но сейчас мне понадобилось добавить еще одно меню с другими товарами... повторяю все действия из шага 2 (создаю новый словарь таксономии, добавляю термины, создаю меню, создаю новое представление, добавляю поля Товар и Категория, в настройках поля выбираю свой словарь), а в меню не появляются ссылки как в словаре таксономии... В чем может быть проблема?

Вы создали новый тип материалов и в него добавляете поля Товар и Категория? Если так то должно все работать если все остальное сделано по той-же схеме.

Может быть проблема в машинных именах полей и тд?

Сейчас попробую все заново сделать. Создаю словарь таксономии "Все для Бани" (Машинное имя: bania), добавляю в него пару терминов в двухуровневой структуре, создаю меню "Все для Бани" (Машинное имя: menu-bania), создаю тип материалов "Представление Бани" (Машинное имя: bania_display), добавляю поля "Товар" типа "Ссылка на Товар" (Машинное имя: field_bania; типы товаров, которые м.б. связаны "Баня") и "Категория" типа "Ссылка на термин" (Машинное имя: field_bania_k; Словарь "Все для Бани"), перехожу в настройки типа товаров "Баня" и добавляю поле "Изображение", затем добавляю пару товаров, как описано в Шаге 4, в настройках словаря выбираю меню "Все для Бани"... и ничего не происходит... в списке ссылок меню "Все для Бани" нет ни одной ссылки...

Вы добавляете пару товаров и соответствующие материалы "Представление бани" ссылающиеся на эти товары или только пару товаров?

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

Попробуйте увеличить глубину в контекстом фильтре http://prntscr.com/6d3i2h

Спасибо! Помогло!

Добавил товар, затем Содержимое->Добавить содержимое->Представление бани... и там ссылался на товар.

Ну вроде все правильно. Попробуйте проделать все заново по той-же схеме. Больше ничего не могу посоветовать не видя сайта.

Жаль, я уже раза 3 переделывал... ничего не получилось... все равно спасибо за советы!

"Теперь создадим меню Категории которое мы привяжем к только что созданному словарю. Для этой цели предварительно установим и включим модуль Taxonomy menu." Где во второй части урока показано каким образом меню "Категории" привязывается к словарю "Категории"?
У меня тоже не появляется блок меню в первой боковой панели

Разобрался сам. Но всё-таки было бы не плохо объяснить сразу в "Шаг №2", что привязка созданного меню "Категории" к словарю "Категории" произойдёт в "Шаге №4" и уточнить, что из выпадающего списка "расположение меню" нужно выбирать не "-------- Категории" из <Мenagement>, а именно <Категории> в нижней части выпадающего списка. Это сохранило бы мне, как новичку, 3 часа и кучу нервов. :-)

Здравствуйте, все делал по пунктам, но при добавлении поля товар в типах хранения данных не нашел пункта "Ссылка на товар"!!! Есть только ссылка на термин

Выбирайте "Product_reference" a справа "Выбор из списка"

На вашем скриншоте видно тип "Product reference" это оно.

Добавим поле Товар типа Ссылка на товар. Этот тип поля предоставляет модуль Commerce с помощью него и будет осуществляться привязка товаров к материалам типа Представление товара.
_________________
нет такого типа поля что делать

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