Drupal commerce


Минусы

  1. Не коробочное решение
    Commerce позиционируется как фреймворк. Это значит, что вам придётся самостоятельно продумывать архитектуру магазина, создавать тему, делать каталог, ставить множество дополнительных модулей. Это конечно не совсем минус, но большинство последующих минусов вытекает именно из этого пункта.

  2. Запутанная структура
    Достаточно сложно разобраться во внутренней структуре коммерца и понять как это всё между собой работает. Без практики и дебагера никак.

  3. Разделение товара на две сущности
    Это вносит сложности при создании товаров, импорте, массовом редактировании, выводе, программной работе и т.п.

  4. Нужен высокий скил по контрибу
    Нужно знать как работает и уметь пользоваться Views, Rules, Entity API. Причём уметь пользоваться не только админкой, но и API этих модулей.

  5. Сложность сортировки и фильтрации по динамическим ценам
    По умолчанию невозможно отсортировать или отфильтровать товары по цене с учётом скидок, акций и т.п. Итоговая цена в коммерце высчитывается в момент вывода, в бд же хранится только первоначальная цена. Интересно, как эта проблема решена в других движках?


  6. Сложность работы с динамическими ценами
    Разработчики комерца предлагают управлять ценами с помощью Rules, но это подходит только в части случаев. Как только понадобится логика сложнее чем «скидка 10% на все товары», придётся писать своё решение.

  7. Нет единого решения по работе с характеристиками товаров
    Простой кейс, от которого разработчик загрустит — есть сто категорий товаров, у каждой категории десятки уникальных характеристик, нужна фильтрация и сортировка по этим характеристика по подобию Яндекс.Маркет.

  8. Нет магазинной админки
    Админка то есть, но она для разработчика. Для администратора практически ничего нет — нет удобного управления материалами, скидками, вариациями товара, статистики. Всё это надо собирать самому. Сложности при редактировании заказов (например невозможно изменить значение кастомного поля line item-а).

  9. Производительность
    Тут конечно всё зависит от разработчика, но на оверхед коммерца можно смело закладывать 50 а то и все 100 процентов.

  10. Детские болезни
    Множество неприятных мелочей — невозможно без костыля перевести отдельные строки, зависимость от Addressfield, невозможно без модуля добавить поля в чекаут, невозможно сменить порядок шагов чекаута и т.п.


Плюсы

  1. Это Drupal
    Для девелопера доступны тысячи модулей, масса статей и видео, локальные комунити, конференции.
    Нужны рейтинги товаров? Не проблема.
    Нужно избранное? Не проблема.
    Нужен вход без регистрации? Не проблема.
    Нужно ______? Не проблема 🙂
    Это перекрывает большинство минусов.

  2. CommerceGuys
    Создатели коммерца активно участвуют в жизни своего сообщества — пишут статьи, создают модули, снимают скринкасты, помогают на форумах. Но самое главное — они сами профелируются на созданиях магазинов на коммерце, поэтому знают что нужно конечным разработчикам.

Выводы

В общем «установил и пошёл зарабатывать деньги» это не про комерц. Про комерц это — «поставил, спроектировал, подебажил, написал модулей». От разработчика требуется высокий скил, а от клиента толстый кошелёк (хотя в e-commerce по-другому и не бывает) 🙂 Зато ограничений по будущему функционалу практически нет, ведь под капотом друпал.

Не могу рекомендовать его для сложных магазинов, где важна скорость, но для маленьких и средних подойдёт хорошо.

Совет: если выбрали Commerce, то ни в коем случае не пользуйтесь сборками типа Kickstart 2.


Написанное актуально для

Commerce 1

Похожие записи

xandeadx.ru

Интернет магазины – это тот тип сайтов, которые в большинстве случаев на платформе Drupal создаются  при помощи Commerce (DC). В первоначальную постановку DC входит целый ряд модулей, посредством включения и выключения которых можно добавлять разные функции на сайт интернет магазина. В этой статье мы рассмотрим стандартные модули DC, которые идут с ним в поставке сразу. При желании в дальнейшем вы можете расширять функционал своего магазина так, как Вам будет угодно при помощи дополнительных модулей.

1. Commerce. Модуль под этим названием является обязательным в DC. Он предоставляет мастеру доступ к базовой API, а также создает базовый функционал, который является обязательным для обеспечения нормальной работы всех остальных модулей системы. Commerce – это модуль, у которого нет настроек. Для начала работы его достаточно просто включить.

2. Commerce UI. Этот модуль позволяет мастеру вывести основной интерфейс магазина, позволяющий настраивать его в дальнейшем.Панель управления Drupal Commerce


3. Cart. Это модуль для работы мастера с корзиной покупок в интернет магазине. При использовании этого модуля можно создать блок для отображения корзины на боковой панели всех без исключения страниц сайта. Он обеспечивает возможность покупателю добавлять или удалять из корзины лоты. Отображения корзины построены с помощью Views, что обеспечивает полный контроль веб-мастера над внешним видом и функционалом всех элементов корзины.Корзина на Drupal Commerce

4. Checkout. Этот модуль отвечает за процесс заказа товаров в магазине, а именно отображает страницу заказа. Он также руководит и самим процессом оформления покупки. Как базовый вариант в DC заказ разбит на 4 стадии:

Оформление заказа. На этой стадии пользователь вводит информацию по своему заказу, а также свои платежные данные;

Предварительный просмотр. Данная стадия позволяет покупателю еще раз проверить содержимое своего заказа, а также возможность «откорректировать» покупку перед оплатой.Оформление заказа Drupal Commerce

Оплата. Тут все понятно.

Выполнение заказа. На этой стадии покупателю предоставляются последние разъяснения по его заказу, даются возможные дополнительные инструкции.

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


Настройка оформления заказа Drupal Commerce

Одна из ключевых особенностей данного модуля – это постановка полей адресов выбранных страниц в автоматическом режиме в зависимости от страны. Но чтобы воспользоваться такой вот удобной возможностью надо обязательно включить модуль под названием Adress Field.

5. Customer. В данный модуль входит целый набор так называемых сущностей, посредством использования которых можно сформировать профиль потенциального покупателя. Данный профиль используется клиентами для комфортного хранения личной информации (она вводиться при оформлении первого заказа в магазине). DC поставляется с уже встроенным набором сущностей под красноречивым названием «Платежные данные». Но есть и другие модули, которые содержат другие наборы.

6. Order, Order UI, Line Item, Line Item UI. Эти модули отвечают за создание, отслеживание, а также управление всеми заказами каждого из клиентов. Например, потенциальный покупатель может просмотреть свои заказы, которые уже полностью завершены, а также и те заказы, которые еще даже не полностью сформированы. Эти же модули дают возможность создать заказ в ручном режиме (если он принимается от покупателя менеджером магазина в телефонном режиме).


Заказы в Drupal Commerce

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

Методы оплаты Drupal Commerce

8. Product и Product UI. Эти модули предоставляют пользователю возможность вести учет товаров, а также предлагаемых услуг на сайте. Посредством использования данных модулей можно создавать разные виды товара или услуги, добавлять к лотам дополнительные поля и т.п. В данных модулях есть очень удобный интерфейс, который позволяет работать со списком товаров и настраивается представлением(views).

Товары Drupal Commerce


9. Product Reference. Посредством использования этого модуля можно использовать дополнительные поля, которые создают связь между товаром и материалом, в котором выводится товар. Так, при использовании данного модуля можно на свое усмотрение настроить внешний вид предлагаемого пользователю товара, а также менять кнопку «добавить в корзину». Использование двух сущностей для создания конечной страницы товара (собственно товара и типа материала, в котором он выводится) с одной стороны усложняет наполнение магазина, с другой делает его структуру очень гибкой и открывает ряд позможностей по управлению выводом товаров в разных категориях и тд. Вообще обзор этого модуля это тема для целого урока, сейчас мы на нем подробно останавливаться не будем.

10. Price, Product Pricing, and Product Pricing UI. Этот набор модулей является очень важной составляющей интернет магазина с экономической точки зрения. Так, используя модули из этого списка можно настроить рассчет цен в разных валютах и с учетом скодок. Именно на работе этих модулей построена большая часть функционала DC.

11. Tax и Tax UI дают возможность к расчету цены добавить расчет налогов для различных налоговых систем и типов законодательства. Как и все в Drupal дают широчайший простор для настройки, в плоть до задания своих правил рассчета налогов для разных типов товара или же мест заказа товара. Правда для этого нам понадобится еще использование модуля Rules.


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

При желании вы даже можете сами написать модуль для магазина. Для этого надо использовать API DC. 

vaden-pro.ru

Views – это мощный и гибкий модуль, с помощью которого можно настраивать вывод данных на сайте. Конечно, он не всемогущ, но то, что он умеет вполне хватает для того, чтобы оформлять вывод данных так, как необходимо. В данной заметке, описывается такая задача: необходимо создать страницу товара с помощью Views. Нужно это для того, чтобы более гибко настроить вывод данных о товаре. Для простеньких Интернет-магазином можно обойтись и перемещением элементов в настройках полей, но когда предстоит оформить страницу товара со сложным дизайном, этого может не хватить.

На самом деле решений этой задачи может быть несколько. Можно, например, темизировать вывод страницы с товаром, подключив определенный views в шаблоне. Но для этого требуется больше “писанины” и времени. Мы пойдем по более легкому пути, с помощью модуля под названием Viewfield. C помощью этого модуля можно подключить Views к определенному типу материала, просто, как создать дополнительное поле. Итак, ставим и включаем модуль. Идем в УПРАВЛЕНИЕ ПОЛЯМИ нашего типа материала, к которому необходимо подгрузить Views и создаем новое поле, выбрав в качестве типа – Представление.


Drupal commerce

В настройках поля под заголовком “Allowed values” выбираем необходимый нам Views, который нужно вывести на страницу с товаром, в блоке “Значение по умолчанию” выбираем тот же Views и не забываем поставить галочку напротив пункта “Always use default value”. Кажется, все! Мы подключили views к странице товара. Но как правильно создать сам Views, чтобы все выводилось так как нам нужно? Давайте разберемся!

Создаем новое представление и на первом этапе выставляем следующие настройки:

Drupal commerce

Теперь самые основные настройки по подзаголовкам настроек Views.

Отношения – “Содержимое: Referenced product” и “Commerce Товар: Материал referencing products from field_product” (у вас может быть другое, вместо field_product). И в том, и в другом случае нужно указать, что связь является обязательной.

Контекстные фильтры – “Содержимое: Nid“. Настройки, как на скриншоте:


Drupal commerce

Навигатор – нужно чтобы было “Отображать указанное количество элементов | 1 элемент

Прочие – Настройки запроса – Выключить перезапись (rewriting) SQL.

Поля – настраивайте по своему усмотрению.

Вот и всё!

coderteam.ru

Price Resolver

Вы можете делать сколько угодно данных price resolver объектов, все они будут применяться (следуя определенным условиям). Тут вы уже сами разберетесь, когда делить на несколько, а когда все решать в одном. Все они наследуются от PriceResolverInterface и имеют публичный метод resolve, в который передается вся необходимая информация, и который возвращает новую цену. Вот так он выглядит в минимальном варианте:

niklan.net

С выходом Drupal 7, всё больше разработчиков в качестве решения для электронной коммерции стали выбирать модуль «Commerce» в замен Ubercart, хотя для 7й версии Drupal – Ubercart тоже переделали и пофиксили. Но как утверждает сообщество для 7ки лучшее решение – Commerce, ну а для 6ки – Ubercart. В своих дальнейших статьях я буду затрагивать оба этих модуля, так как я считаю, что в некоторых ситуациях Ubercart всё же имеет свои плюсы, но об этом не сейчас. Сейчас я вам расскажу как установить «Commerce», какие необходимы модули для его работы, а так же расскажу, как добавить кнопку «Купить» в позицию товара и собственно говоря, как эти самые товары создавать. Приступим, для начала нам понадобятся следующие модули, это сам модуль: Commerce

И ряд его зависимостей

  • Entity
  • Rules
  • Addressfield

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

Drupal commerce

Активация занимает достаточно приличное время, так что наберитесь терпения. (ну вот 2 минуты прошли.) Видим, что у нас в админ панели появился дополнительный пункт «Склад»(У меня он так называется, у вас может быть и магазин, всё зависит от перевода)

Drupal commerce

Переходим в него

Drupal commerce

И видим, перед нами пока 3 пункта «Профили клиентов», «Товары», «Конфигурация». Для начала давайте выберем в качестве основной валюты для интернет-магазина всё таки рубли. Для этого переходим в пункт «Конфигурация»-> «Настройка валют». В выпадающем списке «Валюта магазина по умолчанию выбираем» -> «Русский рубль»

Drupal commerce

И сохраняем настройки. Как в случае с Ubercart – Commerce не создаёт Тип материала для позиций продукции. Создание позиции продукции в Commerce достаточно трудоемкий процесс, но данная реализация и является его плюсом и недостатком одновременно. Принцип такой: сначала необходимо создать сущность продукции, а затем привязать эту сущность к ноде. Приступим, создадим Тип материала, я назову его продукция. Для этого переходим по пути «Структура->Типы материалов->Добавить тип материала».

Drupal commerce

И далее «Сохранить тип материала». Теперь давайте сразу же выведем кнопку купить в ноду для данного типа материала, т.к. она так же является сущностью. Переходим в пункт «Управление полями» типа материала «Продукция», и добавляем новое поле, я назову его «Корзина», вот с такими настройками

Drupal commerce

Жмём «Сохранить->Сохранить настройки поля->Сохранить настройки». С типом разобрались, теперь создаём товары, как я говорил ранее для начала создаются сущности, а затем эти сущности добавляются к нодам. Переходим по пути «Склад->Товары->Добавить товар»

Drupal commerce

И вводим артикул товара, заголовок, цену (замечу, что цену можно выбирать лишь из тех, которые были активированы по пути «Склад->Конфигурация->Настройка валюты»)

Drupal commerce

Далее «Сохранить товар». Видим, что теперь эта сущность отображается в списке товаров

Drupal commerce

Сущность создали, теперь необходимо прицепить ее к ноде. Переходим в пункт «Добавить содержимое» и выбираем новый, созданный нами тип материала «Продукция». Заполняем поля «Заголовок», «Содержимое» и в поле «Корзина» выбираем сущность, которую мы до это создали

Drupal commerce

И сохраняем.

Drupal commerce

Как мы видим, теперь наша сущность подцеплена для ноды. Для отображения кнопки «Добавить в корзину» в тизере переходим в настройки отображения полями для типа материала «Продукция» и для пункта «Анонс» переносим поле «Корзина» из Скрытых

Drupal commerce

И сохраняем настройки. Смотрим что получилось

Drupal commerce

Как видим всё отображается как нам и нужно. Вывод блока корзины в Commerce осуществляется так же как и в Ubercart, переходим по пути «Структура->Блоки» и выставляем блок корзина в нужный вам регион

Drupal commerce

И сохраняем настройки. Как видим всё у нас выводится как нужно.

Drupal commerce

Ну думаю на этом пока закончим. Основные первоначальные настройки Commerce мы произвели.

drupalfly.ru

Вы решились впервые сделать интернет-магазин на Друпале и не знаете, с чего начать? Что ж, модуль Drupal Commerce — это именно то, что вам нужно.

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

Drupal Commerce — это набор самых необходимых функций для интернет-магазина в одной коробке. Модуль включает в себя несколько десятков маленьких модулей, которые вместе формируют мощную базу для интернет-магазина любой сложности.

Для начала, давайте вспомним основные составляющие современного интернет-магазина:

  • Продукты;

  • Варианты продуктов (например, другой цвет, размер);

  • Цена (налоги, скидка и т.п.);

  • Корзина покупателя;

  • Оформление оплаты;

  • Управление заказами;

  • Отчеты.

Все эти элементы в базовом виде уже присутствуют в модуле Drupal Commerce из коробки, необходимо его только установить.

Также стоит обратить внимание на то, что разработчики модуля Drupal Commerce очень пристально прислушиваются ко мнению своих пользователей и постоянно ведут работы по его улучшению. Именно это способствует позиционированию данного инструмента как очень удобного для старта разработки интернет-магазина. Кроме того, на Drupal.org вы найдете огромное количество дополнительных модулей, которые могут помочь решить большинство задач по созданию площадки для онлайн продаж.

Что же в коробке?

Сам Drupal Commerce условно можно назвать сборником модулей. Давайте же рассмотрим, что включает в себя самая актуальная его версия на данный момент:

Commerce — это модуль, который является “сердцем” всего пакета Drupal Commerce. Здесь находятся все необходимые функции для стабильной работы других модулей. Стоит обратить внимание на то, что для включения данного модуля на Друпал-сайте необходимо установить и активировать модули Entity API, Rules и Entity tokens.

Commerce UI — модуль, который добавляет административные страницы, ссылки на которые будут доступны через меню администратора. UI расшифровывается как User Interface, что в переводе означает Пользовательский Интерфейс. Данный модуль дает возможность пользоваться плодами описанного выше инструмента не только программистам, но и редакторам и менеджерам сайта.

Cart — содержит в себе необходимый набор функций и, собственно, саму корзину пользователя. Для включения модуля необходимо предварительно установить и активировать модули Addressfield и Views.

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

Customer — возможно, сначала модуль покажется непонятным, но на самом деле он несет в себе важную миссию — определение обычного пользователя на Друпал-сайте как клиента. Это помогает значительно проще и быстрее создать эту важную для любого интернет-магазина роль и, соответственно, управлять ею. Он также позволяет разбить профили клиентов на типы, что помогает вести работу более комфортно, предлагать акции или специальные предложения разным группам покупателей интернет-магазина.

Customer UI — визуальная оболочка для модуля Customer, которая делает из полезного кода в модуле, описанном выше, удобный пользователям интерфейс для управления клиентами.

Line Item — каждый продукт, который находится в корзине, включает в себя данные о его количестве (ведь можно заказать несколько единиц одного продукта) и информацию о самом продукте. Кроме того, в Line Item может находиться дополнительная информация о продукте в корзине, например его цвет и/или размер. Данный модуль внедряет именно функционал такой сущности, как Line Item.

Line Item UI — добавляет возможность управления из админки полями Line Item.

Order — дает нам такой тип сущности, как Заказ. Заказ формируется на этапе попадания товаров в корзину, а после оплаты в нем можно изменить статус, посмотреть товары, которые были куплены либо находятся в корзине, и многое другое. Все это очень важно как для управления сайтом, так и для самого покупателя.

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

Payment — модуль, который предоставляет нам возможность оформлять оплату сразу же на сайте. Например, если вы хотите оплатить покупку на сайте с помощью WebMoney или же других систем мгновенной оплаты, тогда модуль Payment — то, что нужно.

Payment UI — с помощью этого модуля можно включать/выключать методы оплаты, а также изменять их настройки.

Payment Method Example — предназначен специально для разработчиков-профессионалов. Например, если нужно сделать особенный метод оплаты, а подходящего модуля на Drupal.org нет, тогда этот модуль покажет все возможности интеграции с Drupal Commerce относительно оплаты заказов.

Price — небольшой модуль, который добавляет новый тип поля “Price”. Данное поле можно добавить в любой пункт меню, который доступен на Друпал-сайте.

Product — создает такой элемент, как Продукт. Обратите внимание, что Drupal Commerce никак не относится к нодам. Продукт — это совсем отдельный элемент, который в будущем можно привязать к материалу. Оба элемента всегда существуют по отдельности из-за разного предназначения этих сущностей.

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

Product Pricing — дает возможность динамически управлять ценой. К примеру, данный модуль используют для оформления налога на заказ, который будет варьироваться в зависимости от его цены. Как раз данный функционал использует модуль Tax (его рассмотрим немного ниже).

Product Pricing UI — визуальное представление для управления действий с ценами.

Product Reference — модуль, который добавляет одноименный тип поля и помогает связать сущность товара с нодой, которая будет “представлять” этот товар на сайте.

Модули Tax и Tax UI помогут вам с учетом налогов на товары вашего интернет-магазина. Если в них есть необходимость, конечно же.

А что еще?

Drupal Commerce — это довольно большая система для создания и настройки работы интернет-магазина. Для нее написано уже много дополнительный модулей. И мы хотим с вами поделиться несколькими полезными из них:

Commerce Product Display Manager — модуль для настройки отображения карточек товаров.

Commerce Customizable Products — модуль, который предоставляет дополнительные настройки для продуктов. Здесь многословны не будем. Рекомендуем сразу пробовать, и вы все поймете.

Commerce Feeds — с помощью этого модуля можно подбирать товары из другого сайта и публиковать на своем.

Commerce Coupon — помогает с реализаций функционала купонов (или, если угодно, акций) для вашего сайта.

Существует огромное количество модулей для методов оплаты, например самые популярные для PayPal, Интеркассы.

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

Что это вам дает? Скорость. Вам нужно только установить сборку как обычный друпал-сайт, и у вас уже будет готовый интернет-магазин.

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

Commerce Kickstart https://drupal.org/project/commerce_kickstart

Commercebox https://drupal.org/project/commercebox

Обе сборки подходят для основы интернет-магазинов; а дальше, уже сэкономив множество времени на создании основного функционала, опытные программисты могут доделать уникальные функции для проекта. К слову, в этом деле будет полезно почитать документацию — http://api.drupalcommerce.org/.

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

Подводим итоги

Drupal Commerce — это мощный инструмент для создания интернет-магазина любой сложности. Он подойдет как основа и для обычного пользователя, далекого от программирования, и для настоящих профессионалов, перед которыми стоят сложные и нетипичные задачи по созданию надежного интернет-магазина.

drupalguide.ru

В первую очередь, для установки Drupal Commerce нам потребуется Composer:

https://getcomposer.org/download/

Composer — это менеджер пакетов для PHP. Он позволяет подключить нужные PHP библиотеки, то есть скачивать и добавлять библиотеки в автозагрузку вашего проекта, в данном случае, сайта на Drupal 8. Drupal 8 уже содержит в себе многие стороние библиотеки, в частности, от фреймворка Symfony.

Обычно composer ставится без проблем, только не забудьте включить Open Server или другой локальный веб-сервер перед установкой Composer. Во время установки Composer просто жмите далее и далее и composer поставится сам.

Поэтому ставьте composer, после установки наберите в консоли:

 composer --version

Должно будет появиться сообщение о том, какая версия compser у вас установлена.

 $ composer --version Composer version 1.4.1 2017-03-10 09:29:45

Вы можете пользоваться как встроенной в windows консолью CMD:

Windows console

Так и консолью Open Server:

open server console

О том, как пользоваться консолью я сделаю отдельный урок. Пока можете посмотреть видео, думаю, там будет достаточно команд, чтобы поставить Drupal Commerce.

После установки composer нужно будет поставить Drush. Drush — это консольная утилита для работы с Drupal через консоль. Очень удобно скачивать и включать модули именно через Drush, хотя правильнее скачивать модули сразу через composer, а потом включать через drush.

Чтобы поставить drush выполните следующую команду:

 composer global require drush/drush:8.*

Вместо 8.* вы можете написать 9.* или какую-нибудь другую актуальную версию drush. Чтобы проверить, что drush поставился нормально, выполните команду:

 drush version

У меня текущая версия 9.*:

 $ drush version  Drush version : 9.0-dev-g9ec6aa42

Возможно, у вас возникнут проблемы при установке Drush, Composer в Windows, воспользуйтесь этой инструкцией для настройки Drush в Open Server:

12.1. Установка Drush 8 на Open Server.

Теперь нам нужен Drupal 8, чтобы начать установку Drupal Commerce. Если у вас уже есть рабочий сайт на drupal 8, то можете пропустить установку друпала и сразу перейти к установке drupal commerce.

Я обычно качаю вручную с drupal.org ядро друпала и создаю еще один сайт на Open Server:

Установка Друпал 8

Можно скачать drupal с помощью composer, тогда нужно будет прописать другой Document Root для сайта в настройках домена Open Server, но я предпочитаю простоту и чтобы не делать лишних настроек ставлю чистый друпал с drupal.org.

Устанавливаем друпал как обычно. Но можно использовать drush для более быстрой установки:

 drush si --db-url=mysql://root:password@127.0.0.1/drupal --account-name=admin --account-pass=admin --site-mail=admin@example.com --site-name="Drupal 8" --locale=ru --yes

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

 drush si --db-url=mysql://root@127.0.0.1/commerce --account-name=admin --account-pass=admin --site-mail=admin@example.com --site-name="Drupal 8 Commerce" --locale=ru --yes

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

Установка через консоль займет минуты 3, но установка друпал через браузер стандартным способом со скачиванием переводов может занять минут 10, так что консоль значительно экономит время.

Перезапускаем Open Server и проверяем, что сайт на Drupal 8 работает:

Drupal commerce

Теперь переходим непосредственно к установке Drupal commerce. Ставить будет commerce через composer. Заходим в консоли в папку нашего сайта и выполняем команду на добавление модуля commerce. Сначала добавляем в конфигурацию composer адрес, откуда качать модули друпал:

 composer config repositories.drupal composer https://packages.drupal.org/8

Теперь добавляем сам Drupal Commerce:

 composer require "drupal/commerce 2.x-dev"

Composer сам подтянет необходимые модули Drupal:

Drupal 8 install Commerce

А также PHP библиотеки:

Drupal 8 commerce

 

Теперь можно включать модули Commerce, Commerce Cart, Commerce Checkout, Commerce Price, Commerce Product, Commerce Store, Commerce Order:

 drush en commerce commerce_cart commerce_checkout commerce_order commerce_price commerce_product commerce_store address entity inline_entity_form

Если какие-то модули не включатся через drush, то можно включить через админку:

drupal 8 commerce

drupalbook.ru

Commerce

Да, меня тоже напрягает, что сначала нужно создавать продукт, а потом для него делать представление (view-ноду), и связывать их с помощью как я понял node-reference. Но другого более удобного способа я не нашел.

Commerce Bulk Creation

Да, я знаю что есть модуль Commerce Bulk Creation, который призван типа облегчить добавление новых товаров. Но лично в моей ситуации и для моего способа мышления он не подошел. Это дополнительное усложнение и без того сложного комерца. Товаров у меня не много, добавить ручками их один раз не такая уж и проблема. Сейчас около 30 позиций, планируется довести до 100-200. Модуль Commerce Bulk Creation не понравился еще и тем, что хоть и работал, но выдавал ошибки при каждом добавлении. Я решил отказаться от излишней сложности и рисков в пользу надежности и предсказуемости, тем более на первом коммерц-проекте. Еще, данный модуль был-бы более оправдан, если для каждого товара было не 3 размера, а скажем 10. Вот это была-бы ощутимая польза и ускорение.

Ajax Cart

Это магазин расходных материалов.
Специфика сайта в том, что за один раз человек покупает сразу несколько товаров (недорогая расходка 50-150 руб/штука). Поэтому было неприемлемо перебрасывать человека в корзину после положЕния туда одного товара. Более того, было неприемлемо даже перезагружать страницу, как это реализовано в комерце из коробки.

Так вот, список товаров может быть очень длинным (несколько экранов), и например если в середине списка покупатель жмет «купить» и его перебрасывает наверх — это расценивается как издевательство над юзером, потому что ему приходится мотать вниз и искать то место, где он добавил этот товар, для того чтобы продолжить смотреть список дальше.

Нужно обеспечить непрерывность просмотра категории с одновременным откладыванием в корзину выбранных товаров.

Поэтому естевственно был использован модуль Ajax Cart. Модуль хорошо себя зарекомендовал, не выдает ошибок, работает стабильно, предсказуемый и предельно простой.

Страница корзины /cart

По дефолту оформление заказа для новых юзеров состоит из трех шагов:

1. Страница корзины, где можно удалить товар или изменить его количество.

2. Страница ордера, где нужно ввести свои данные для регистрации и доставки. На этой странице нельзя изменить количество или удалить товар.

3. Страница предпросмотра заказа, где две таблицы: таблица с товарами и таблица подтверждения введенных данных.

И только на третьей странице если мы нажмем «оформить заказ», то тогда он оформится.

Решил подсократить процедуру на оформления на один шаг, дав ссылку не на /cart а на /checkout. Таким образом при переходе пользователя на страницу /checkout, его редиректит на страницу /checkout/order_id, на которой он видит таблицу с его товарами из корзины.

Views

Это мой первый сайт где я использовал Views. В некоторых ситуациях при работе с коммерцем этот модуль незаменим. Например при создании блока вариаций одного товара:

Drupal commerce

Настройки этого блока выглядят так:

Drupal commerce

Viewfield

С помощью этого модуля мы можем показать вьюху как поле какой-то ноды.
Есть альтернатива Eva, но меня и этот полностью устроил.

Картинки товаров в корзине

Чтобы во вьюхе корзины сделать картинки товаров, необходимо связать Line items с products:

Drupal commerce

Чего не удалось сделать с вьюхами

Ссылка на товар из корзины [Fail]
Сделать ссылку на страницу самого продукта (которая видна только админу) у меня получилось. Но мне-то нужна ссылка на представление! Бился над решением этой задачи не один день, но так и не осилил.

Backup migrate

Отлично зарекомендовал себя во время развертывания сайта из бэкапа. phpMyAdmin без лишних слов сожрал mysql файл и выдал чистый полностью рабочий сайт.

Настроил автоматический бэкап базы на сервер через каждые 6 часов. Поставил ограничение в 20 бэкапов, после чего старые будут удаляться. Таким образом у меня есть бэкапы сайта за последние 5 дней, и если что-то случиться, 5 дней мне вполне достаточно чтобы среагировать и забрать бэкапы. Если учесть, что обычно дамп базы весит 3.5 мегабайта, то 20 бэкапов занимают на сервере 70 мегабайт, что совсем не много за надежность и уверенность в завтрашнем дне.

Папка для сохранения на сервере выше корня сайта, и конечно веб-сервер должен иметь права на запись в нее. Конечно хостер тоже каждый день делает бэкапы, но как говорится: «на патруль надейся а сам не плошай». Да и вообще, бэкапы лишними не бывают.

Меня правда слегка напрягает фраза:

You must specify a private file system path in the file system settings to backup to the server.

С какой стати я что-то ему должен?
И зачем он об этом всегда напоминает?

В общем Несмотря на эту фразу бэкапы работают отлично.

Верстка

Адаптивная, не резиновая верстка. Фактически это означает, что сайт существует в двух фиксированных вариантах: 1200px и 1000px. Переключение между режимами во время ресайза окна браузера происходит с помощью CSS без использования jquery и его $(window).onresize(), который заметно тормозит рендеринг при ресайзе браузера. Конечно есть debounce плагины, но игра не стоит свеч, и легкая форма адаптивности прекрасно справляется с поставленными задачами.

Вот CSS код, который переключает эти два режима:


@media (max-width: 1260px) {
.page {
width:960px;
}
.teaserBox {
margin-right:23px;
}
.basketBox {
right:-5px !important;
}
.main-menu {
font-size:17px;
margin-top:25px;
}
.main-menu li {
margin-right:20px !important;
}
}

Корзина, которая всегда видна

Drupal commerce

Прилипающая к верху страницы корзина делается с помощью этого кода:


if ( $.browser.msie && $.browser.version if($('#block-commerce-cart-cart').length>0){

var posTop = $(‘#sidebar’).position().top;

$(window).scroll(function(){

var topX = (document.body.scrollTop || document.documentElement.scrollTop);
if (topX > posTop) {
$(‘#sidebar’).addClass(‘sideCartFixed’);
} else {
$(‘#sidebar’).removeClass(‘sideCartFixed’);
}
});

}
}

Этот кусок кода добавляет класс sideCartFixed блоку корзины, в тот момент, когда блок в сайдбаре доходит до верхней границы окна браузера.

CSS:


.sideCartFixed #block-commerce-cart-cart {
position:fixed;
top:0px;
}

Display этого блока переключается в fixed (то есть закреплен абсолютно по отношению к окну браузера).

Увеличение и уменьшение количества товаров

* в корзине
* на странице каталога
* на странице товара

Для того чтобы сделать кнопки изменения кол-ва товаров, я не пользовался модулем Commerce extra, вместо этого написал немного JS и CSS.

JS:

(function ($) { // это нужно чтобы увидеть друпаловский jquery

$(function(){ // обычный onload jquery

$(‘.field-name-field-prod-variations .form-item-quantity input, .views-field-edit-quantity input’).each(function(){
$(this).after(‘+’);
$(this).before(‘-‘);

});

$(‘.quantityPlus’).click(function(){
var t = $(this);
var curNum = parseInt(t.prev().attr(‘value’));
t.prev().attr(‘value’, curNum+1);
return false;
});

$(‘.quantityMinus’).click(function(){
var t = $(this);
var curNum = parseInt(t.next().attr(‘value’));
if(curNum > 1){
t.next().attr(‘value’, curNum-1);
}
return false;
});

});

})(jQuery);

В CSS не нашел никаких вещей, достойных упоминания. Поэтому если возникли трудности с CSS, могу порекомендовать эти книги.

Сокращение количества шагов при оформлении заказа

Из коробки друпал-коммерц предлагает довольно длинное и нудное оформление заказа, состоящее из трех шагов. Мне не понравилось такое большое количество, и я решил избавиться хотя-бы от одного из этих трех шагов.

Поэтому дал ссылку не на корзину (/cart) а сразу на страницу чекаута (/ckeckout/id)

Для того чтобы вывести на странице /ckeckout/id вьюху, которая обычно используется в корзине (с возможностью удаления элементов и изменения их кол-ва) нужно создать блок, в котором написать такой PHP код:


global $user;
if ($order = commerce_cart_order_load($user->uid)) {
$wrapper = entity_metadata_wrapper('commerce_order', $order);
if (commerce_line_items_quantity($wrapper->commerce_line_items, commerce_product_line_item_types()) > 0) {
echo commerce_embed_view('commerce_cart_form', 'default', array($order->order_id), 'cart');
}
}
?>

И в настройках видимости блока написать так:



Дизан

Как обычно делал сам.
Логотип нарисовал по этому тутору

Лайфхаки

Для того чтобы убить в админке по адресу /admin/index ненавистные ссылки «Настройка прав» для каждого модуля, написал такой селектор jQuery:


$('.admin-list.compact a:contains("Настройка прав")').remove();

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

Фотографии продукции делал фотиком Canon S5 IS со штативом

Грабли и трудности, с которыми пришлось столкнуться

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

SEO

Это необходимое требование для борьбы с конкурентами и завоевывания своей небольшой части аудитории и рынка.

Очень внимательно и не один раз послушал доклад Алексея Костина (эта презентация на SlideShare)

Там он говорит что можно автоматизировать генерацию тайтлов и дескрипшнов (мета-тэгов) на страницах товаров. Но для этого он предлагает убрать связть один вью -> несколько товаров. Так как в моем сайте нельзя это сделать, то данный совет мне не подошел. Возможно есть способы как это реализовать программно, но до этого я еще не добрался, и приоритет в общем у этой задачи довольно низкий.

Simpleping

Simpleping — хороший модуль от того-же Алексея, но я вынужден был его удалить из-за неадекватного поведения файла simpleping.install. Этот файл в некоторых случаях бросал в начало страницы строку ПХП кода с комментами в виде текста. Возможно это можно вылечить простым добавлением в него, но все равно для модуля со стабильной версией на орге это странно. Учитывая тот факт что я использую Ajax для добавления товаров, я решил не рисковать (ведь посторонняя строка в начале AJAX-запроса будет создавать ошибку его выполнения), и удалить его до тех пор пока не будет фикса этой проблемы.

Еще при обновлении БД друпала эта строка вылазит и убивает AJAX запрос, в итоге неприятный косяк с обновлением БД. Вроде все обновляется, но ошибка в середине процесса апдейта не придает ощущения уверенности, не позволяет почувствовать себя спокойно.

При установки/удалении любого модуля, эта строка тоже всплывает в верху сайта.

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

File Field Paths

сокращенно FFP

Для того чтобы SEO было более злобным качественным, решил что кроме alt=»» и title=»», название каждого файла должно быть не таким каким его делает фотик IMG_2168.JPG, а содержащим нужные ключевые слова и название товара. Для этих целей был употреблен модуль Filefield Paths

Сразу скажу, с этим модулем у меня вышла очень серьезная накладка.
Последняя версия этого модуля 1.0 beta3 (на момент написания статьи) не совместима с последней на данный момент версией коммерца 1.2. При добавлении товара в корзину возникает ошибка

PHP Fatal error: Unsupported operand types in /commerce/modules/cart/commerce_cart.module on line 844

В некоторых случаях при добавлении в корзину (или удалении из нее) сайт просто перестает работать для человека, у которого «неправильная корзина с неправильными товарами».

Для того чтобы очистить корзину и ордеры в коммерце я чистил таблицы commerce_line_item и commerce_order. Однако стоит признаться, что очистка этих таблиц не всегда помогала, и поэтому пришлось восстановить сайт из последнего бекапа, где у меня установлен FFP beta2.

О данной проблеме отписался в issue

Ошибки коммерца

К сожалению вынужден признать, ошибки есть.

Notice: Array to string conversion в функции DatabaseStatementBase->execute() (строка 2135 в файле /includes/database/database.inc).

Notice: unserialize() [function.unserialize]: Error at offset 0 of 5 bytes в функции commerce_price_field_load() (строка 88 в файле /sites/all/modules/commerce/modules/price/commerce_price.module).

Эти ошибки возникает при добавлении картинки к товару. Хотя конечно она связана с тем-же модулем File Field Paths. Патч предложенный в этом issue не помог, а наоборот сделал работу еще менее стабильной

Использованные модули

  • Insert
  • One Click Upload
  • Ckeditor
  • Image Resize Filter
  • Fancybox 2
  • ImageCache actions (для ватермарков)

Еще не выполненные задачи:

Сделать нормальную (красивую) страницу-сообщение об успешном отправлении заказа. Она появляется на страницах с таким урлом: /checkout/order_id/complete

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

Сделать блок «похожие товары». Сейчас вместо него висит статичный блок из выбранных мною позиций.

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

Кто осилил все — тот молодец! 🙂

whydrupal.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.