Во время написания статьи я, вместе с вами, переведу один из своих рабочих проектов на новый компонент «Оформления заказов».
Прежде чем мы приступим, хочется поблагодарить разработчика компании 1С-Битрикс Орландо Виласека за огромную работу, которую он провел, создавая новый компонент. Компонент написан с использованием ядра D7.
Во время создания компонента в компании, среди тестировщиков, появился даже мем:
«В компоненте Орландо мало багов» - я считаю это странно, видать плохо ищут.
Я конечно верю нашему отделу тестирования, но решил проверить сам, воодушевился высказыванием и решился перейти на новый компонент.
И так поехали…
[spoiler]
Включаю установку Бета версий, на момент написания статьи компонент «Оформления заказа» находится в бете, и устанавливаю обновления на боевой проект, не забыв сделать резервную копию (на всякий случай).
Установка прошла успешно, давайте посмотрим как изменился компонент у меня на сайте и есть ли проблемы с отображение после установки. Для демонстрации я записал небольшой ролик:
У меня предыдущий компонент был кастомизированный, плюс в старой схеме некоторые блоки выводились по другому и выглядели не совсем хорошо. Я в ролике постарался показать проблемные места которые мы с вами и настроим:
- Цвет кнопок не в цвет сайта, это не проблема компонента, скорей я его просто не настраивал. По умолчанию задается цвет синий.
- Не у всех способов оплаты есть описание, и нет смысла теперь показывать название под картинками оплат. В новом компоненте справа выводится описание и название. Мы тоже с вами это настроим.
- Я получаю от клиентов файлы, ранее они выводились в отдельном блоке с описанием. Сейчас описания нет, а файлы отобразились вверху. Проблема возникла по причине отсутствия необходимости выставлять сортировку свойств в предыдущем компоненте. Настройка не сложная и далее мы тоже ее проведем.
- Размеры поля ввода адреса и поля комментариев несколько нелогичны. Предыдущий компонент не понимал возможность задания высоты, текущий понимает, и у меня явно не выставлено корректно. Тоже легко исправим далее.
- Не отобразились картинки товара. У меня была сделана кастомизация и я сам выводил картинки, чуть позже 1С-Битрикс ввел настройку отображения полей, но так-как я это не настраивал, то картинок у меня нет. Легко настроим далее.
Давайте заглянем под капот компонента и откроем его настройки. Я записал небольшой ролик, в котором буду вносить некоторые правки, но его главная цель это посмотреть настройки:
Что я изменил в компоненте:
- Цвет кнопок, у меня красный шаблон и я выставил красную цветовую схему компонента, и на видео у меня красные кнопки.
- Убрал названия у блоков оплат, по картинкам вполне все понятно и справа выводится дополнительная информация.
- Я указал в настройках где брать картинки для всех инфоблоков с которыми я работаю, и картинки отобразились.
Меня сильно цепляет что в профиле у меня файловое свойство находится выше свойств профиля, давайте попробуем это изменить. Идем в административном разделе в список свойств заказа:
Новый компонент оформления заказов отлично понимает сортировку свойств и вы сможете настроить под себя нужную последовательность. А я перенес ненавистные сверху файлы в самый низ.
Следующим шагом давайте посмотрим откуда берутся описания для оплат, чтобы можно было тем оплатам, в которых раньше не было описания, их добавить. Ну и заодно я подправлю сортировку и расположу оплаты в той последовательности, которая мне нравится.
Идем в административный раздел:
Заполняем недостающие описания и меняем немного сортировку.
Осталась еще одна мелочь которую сразу же хочется подстроить, - это уменьшить высоту блока адреса и привести его к размеру комментария, вот так выглядит до настроек:
Идем в настройку свойства Адрес и устанавливаем высоту поля ввода:
Устанавливаем высоту в «две строки» у свойства «Адрес» и смотрим что у нас получилось:
Отлично, высота выставлена и выглядит красиво.
На этой ноте я бы хотел завершить вводную статью. Я перевел сайт на новый компонент, что и было целью статьи.
Следующая статья уже в процессе написания, в ней я расскажу как использовать новые возможности компонента и платформы. Например, появилась возможность выводить дополнительные услуги (например нужна ли сдача при наличной оплате), появилась возможность перенести товары сверху компонента, изменять, не кастомизируя, названия разделов и блоков интерфейса, в статье разберем как включить вывод только необходимых свойств, которые требуются для наличной оплаты или определённой доставки и множество других нововведений.
Если у вас есть вопросы, обязательно пишите их в комментариях к статье, мы с Орландо с удовольствием на них ответим. Это поможет нам в совершенствовании одного из важнейших компонентов интернет-магазина.
.
какие нововведения еще есть?
Предложение: сделать раздел на сайте где описаны все нововведения за последние 6 месяцев у вас.
вот и все, соответственно, т.к. это правила работы с корзиной, то они добавляются в корзину при оформлении заказа
Только не хватает некоторых условий
Например по группе пользователей, по свойству заказа или свойству пользователя
Только список полей свойств и список товаров.
Кто пробовал?
order_ajax.js 6945 строк кода, компонент и до того был очень сложным, ну а сейчас все рендерит гигантский js, вешает обработчики и тд, это монстр, хотя да, написан не плохо, удачи в разработке
Вебформа не посчитает скидки.
Всё переписывать, конечно же, смысла нет, иначе расплатой за универсальность получится такой же монстр в десятки тысяч строк. Но реализовав два-три проекта, вполне можно прийти к какому-то минимально необходимому шаблону, который и понятен разработчику, и покрывает 80% поставленных задач. Опять же, обратная совместимость со старым шаблоном имеется, так что если разработчик недостаточно компетентен в js (а тут порог гораздо выше уровня "знаю jquery"), сложное поведение можно реализовать по-старинке.
этому же проценту партнеров полезна эта статья и они будут вам благодарны
остальным это бесполезно и они будут в шоке от js-кода, заточенного под этот шаблон, и останутся со старой логикой шаблона
лучше было бы сделать как в sale.basket.basket, там хотя бы js заточен под ID элементов и легко кастомизируется под другой дизайн
поменять цвет кнопочек и ширину поля - это просто безумно круто и удобно, разработчики вам очень благодарны
Так же например для доставки в самовывоз добавить пункты самовывозов на карте и т.д
Или суть нового компонента только в том что работает на D7???
Работа конечно как мне кажется проделана хорошая - но не на тех моментах как мне кажется сосредоточились.
Мы сделали действительно качественный и удобный компонент исходя из этого тезиса. Чуть позже мы опубликуем список всех событий и подскажем как их применять и легко встраивать свои кусочки.
Для этого мы максимально дали в рамках компонента рычаги влияния на тексты, кнопки, разделы, отбивки, ошибки.
И повторюсь еще раз. Кастомизацию и легкую кастомизацию мы тоже закладывали и готовы обсуждать конкретные места и конкретные предложения. Пока же у нас несколько холивар.
Доработать ваш код (что php компонентов/шаблонов), что js - вообще не представляет проблемы. Но из-за того, как этот код написан (особенно - js) - это с каждой новой версией становится всё более невыполнимой задачей. Особенно компоненты оформления заказа и корзины.
За более чем 5 лет работы у меня было всего 2 клиента, которых устроила ваша форма оформления заказа. Т.е. на данный момент у меня куча проектов реализовано, где от вашего исходного шаблона практически ничего не остается. При этом каждый раз у меня выбор - плюнуть и писать самому, забив на ваши обновления компонента или же пытаться как-то в рамках вашего шаблона привести внешний вид и логику к желаемым клиентом. Времени это съедает просто дикое количество - и в большей части именно из-за того, что приходится постоянно городить какие-то костыли для компенсации работы вашего js-кода (особенно аякс-части). Да банально: на одном магазине у товаров есть свойство, которое влияет на список служб доставки и оплаты. Если брать стандартный компонент (даже без редизайна, просто убирать ненужные службы "на лету") и не клонировать его к себе (ради обновлений!), то приходится при открытии страницы оформления заказа 2 раза делать сабмит формы, чтобы скрыть лишние способы доставки и выбрать правильную по-умолчанию - ведь если просто спрятать пользователь может кликнуть на оформление заказа и оформить его с неверной доставкой (и оплатой, которая от нее зависит).
И таких вот вещей - огромное количество. И с каждой версией битрикса всё большее желание таскать с собой по проектам старую версию уже модифицированного компонента, полностью забив на все новые фишки.
А еще компоненты и шаблоны переходят на D7 - а документации все нет и нет... Вот правда - у вас или диверсант сидит в разработчиках, или же это просто сознательная политика, отсечь от разработки всех, кроме крупных фирм сотрудничающих с вами напрямую
P.S.: более-менее полезные комментарии в коде я видел только в одном компоненте - vote (со звездочками рейтинга). При этом компонент сам по себе ужасен и древний как я не знаю что (может потому там и сохранились хоть какие-то комментарии).
Просто хотелось бы как-то более явно видеть в том же js файле блоки - здесь обрабатываем изменение количества товаров "на лету", здесь обрабатываем и показываем выбор складов, здесь - работа с местоположениями и т.п. Сейчас всё это свалено в кучу, код жестко привязан к вашим классам, которые прописаны в шаблоне и плюс к этом, все это активно использует ваш собственный аналог jquery (а документации маловато - особенно с примерами туго). Вот, например, для отладки JQuery можно использовать плагин к хрому Visual Event - он показывает все jquery-обработчики на ссылках/кнопках и т.п. Для вашей реализации - нет ничего, в итоге, если в шаблоне/js есть привязка соответствующего события (например кнопка увеличения кол-ва товаров в корзине) - то этот обработчик еще попробуй найди! Особенно плохо в последних версиях - вы стали использовать отдельные переменные для хранения имен классов/id элементов на странице или же просто собирать их "на лету" - в итоге теперь даже просто поиск по js файлу не всегда помогает. А файлы-то растут...
P.S.: А компоненты-то я смотрю. У меня как новый проект - так я беру новую версию компонента и шаблона и перерабатываю под нужды клиента. Сейчас как раз потихоньку 16ую версию адаптирую.
P.P.S.: Админку вот вы тоже уже "улучшили", старые наработки на паре проектов можно смело выкидывать и начинать всё заново... Техподдержка послала искать опытного программиста. Ага, для 16ой версии и без документации - откуда они опытные возьмутся-то? Хотя да, вот поковыряюсь еще с недельку и видимо как раз и буду тем самым "опытным"
P.P.P.S: и, кстати, коли уж речь зашла про документацию - вы бы пересмотрели примеры кода в документации для разработчиков. Особенно те примеры, что в комментариях. 99% того, что там написано или уже не соответствует реальности или же просто изначально неверно. Особенно бросается в глаза на страницах про CIBlockElement::Update, CIBlockSection::Update и CIBlockElement::SetPropertyValue, CIBlockElement::SetPropertyValueEx. Т.е. если просто взять и скопировать код - в большинстве случаев он или не заработает (некорректные структуры данных в массивах в параметрах функций) или уж лучше бы и не работал Ну и, конечно, убивают пустые страницы в документации, за столько лет-то... Примеры:
И вот всмпомнил еще 1 - чтобы корзина и оформление было на 1й страницы - возможно сделать такой шаблон дополнительно? а то ооооочень часто хотят совместить корзину и оформление в 1 страницу
Есть несколько пожеланий:
1) отображение подробной информации о применённых скидках. Сейчас просто цена зачеркнута и написана новая. Даже не написано, что это скидка. А надо расшифровывать, что применилась накопительная скидка, или скидка по купону и т.д.
2) Также нужно какое-то настраиваемое сообщение, которое будет описывать для покупателя логику работы скидок. Т.е. чтобы админ мог написать "Скидки не суммируются. Применяется максимальная"
3) Нужно иметь возможность изменения порядка вывода блоков. В частности, чтобы блок для ввода личных данных(телефон, email) мог быть на самом первом месте.
4) Иметь возможность переключения режима просмотра товаров. Т.е. чтобы покупатель не уходил со страницы оформления заказа.
Режимы могут быть такими: в новом окне/быстрый просмотр(модальное окно)/ссылка на товар неактивна
Режимы могут быть такими: в новом окне/быстрый просмотр(модальное окно)/ссылка на товар неактивна
По поводу расшифровки скидки у покупателей часто возникают вопросы - вроде купон применил, а он типа не применился. А на самом деле просто сработала другая скидка.
Ну если даже в автоматическом режиме не расшифровывать скидки, то пункт 2 нужен обязательно - чтобы текстом дать пояснения. Это позволит избежать лишних вопросов у покупателей.
в интернет-магазине есть какие-то определенные скидки - сложные и простые, накопительные и акционные - не важно. А еще есть наценки за использование определенных платежных систем...
Так вот как можно отловить и отдельно показать клиенту, что он а) получил скидку и б) получил наценку. Сейчас это все выливается в одно общее значение
Юрий, сегодня установил очередные беты на тестовом сервере и просмотрел компонент sale.order.ajax на события
уже лучше события появились! НО!!!
берем событие OnSaleComponentOrderOneStepProcess
в старом ВИДЕ (в компоненте)
3 параметра
т.е. получается обработка события написанная по старому с 3-мя параметрами работать уже не будет...
Будет доработка или -надо теперь переписывать обработчики?
$this->executeEvent('OnSaleComponentOrderOneStepProcess', $this->order);
т.е. получается обработка события написанная по старому с 3-мя параметрами работать уже не будет...
Будет доработка или -надо теперь переписывать обработчики?
В новом компоненте изменилась логика создания заказа - если раньше формирование $arResult было параллельно с данными заказа, то теперь сначала создается объект заказа, и по нему уже формируется $arResult. Т.к. события вызываются после формирования $arResult, требуется изменить (синхронизировать) данные, прилетевшие после события ($arUserResult), с текущим обьектом заказа.
Мы думаем добавить событие, которое будет вызываться после создания обьекта заказа (метод createOrder), которому будет передаваться напрямую обьект заказа, с которым будет возможно проводить любые манипуляции.
Ко всему теперь возможно наследование класса компонента, и, перекрывая нужные Вам методы, можно менять логику работы и обойтись без событий.
1. Основная необходимая база для построения проекта.
2. Гибкий функционал, с возможностью построения системы под нас, под наше видение и наш опыт!
3. Рациональный расход времени наших специалистов:
- на изучение существующей системы 15 %
- на создание нашей индивидуальной системы (на вашей базовой) 85%
Ситуация которая сложилась сегодня (спустя 6 лет):
1. Почти готовый проект (продукт), но весьма спорный.
2. Жесткий функционал, практически бескомпромиссный , наше видение и наш опыт применить (реализовать) все сложнее и дороже !
3. Рациональный расход времени наших специалистов:
- на изучение существующей системы 65 %
- на создание нашей индивидуальной системы (на вашей системе) 35%
Исходя из вышесказанного могу Вам сказать следующее, что нам становится все труднее и дороже работать с 1С-битрикс. И честно говоря мне не совсем понятна ваша идеология и цель. Если Ваша задача создать конечный (шаблонный) готовый продукт, то у меня к Вам вопросы:
1. Вы настолько гениальны и обладаете сверхспособностями , чтобы создать совершенный продукт, который подойдет всем?
2. Что тогда будут делать ваши партнеры, какую они будут выполнять задачу?
Итог. Вы все время стремитесь все додумать за нас! И навязать свое видение! Это прямой путь к деградации!
Дорогие друзья, я не хочу ни кого обидеть или просто покритиковать Вас. Но я искренне не понимаю к какую цель Вы преследуете. Для нас очень важно понимать это, для дальнейшего движения вперед.
Спасибо!
2. Гибкий функционал, с возможностью построения системы под нас, под наше видение и наш опыт!
3. Рациональный расход времени наших специалистов:
- на изучение существующей системы 15 %
- на создание нашей индивидуальной системы (на вашей базовой) 85%
- на создание нашей индивидуальной системы (на вашей системе) 35%
Машина 1980 года выпуска, простенький мотор, простенький карбюратор, отсутствие электроники. Любой дядя Вася в гараже на коленке, перебрал мотор пнул машину и она поехала. А сейчас открываешь капот и думаешь черт где тут блин мотор та, сплошные провода и блоки с электроникой. Дяд Вася уже не может в гараже что-то сделать, и требуется идти в специализирующийся сервис и решать проблемы у них. Платя дороже чем Васе, выбирая по сертификатам и различным статусам.
Вот в продукте аналогично. Раньше продажа была обычных простеньких товаров штучных, без ядреных скидок и т.п. А сейчас, единицы измерения, коэффициенты, SKU, выбор свойств и пошло поехало.
К сожалению да мир меняется. Я тоже люблю смотреть на теплые ламповые компоненты новостей, которые когда та сделал Максим Смирнов. Но даже в них, в последнем релизе кода стало в 3-5 раз больше, и этот же Максим его туда и привнес, по требованиям и веяниям времени.
А вот в методологии не чего не изменилось, продукт как был конструктором так и остался, он просто стал более сложным конструктором, и требует для своего конструирования больше знание.
А если не требует появился простенький шаблон, да он простой как ствол лопаты, но он покрывает современные потребности во всяких типах товаров и дает возможность начать торговать быстро и сейчас.
А партнеры как внедряли продукт так и будут его дальше внедрять, как делали разработку так и дальше будут делать, но разработка стала в разы сложней и в разы дороже.
Вы попросили рассказать как мы думали и приходили к выводам, и почему за 6 лет продукт изменялся именно так, а не иначе.
Если в вашем конкретном случае это по другому, ну наверно мы слегка обогнали потребности вашего проекта. Но мы же делаем продукт не только для вашего проекта. И опять пока мы просто рассуждаем, а я уже пробую нововведения и отслеживаю результаты
Удачи вам в вашей нелегкой работе!
Жаль, что блоки "состав заказа" и "состав отгрузки" генерируются на JS
Жаль, что поле "фио"
И еще вопрос, как можно привести в более человеческий вид историю изменений? он там сохраняет каждый чих каждой сущности
Такой уровень детализации истории временно. В ближайших обновлениях подробность можно будет настроить.
дайте функционал по подключению своих блоков на страницу заказа и функционал по отключению действующих(ofc можно их закоментить,благо там по 1й строчке ).
и админка заказа будет легко кастомизироваться.
Незнаю какие у вас проблемы возникли, не так давно кастомизировал sale.order.ajax под нужды на новом ядре
Там и склады при заказе и самовывоз и зависимость свойств от доставок и доп услуги в заказ...на всё ушел 1 рабочий день
ну да, долго, ибо 1й раз ковырял его.
Только замучался объединять всё кроме Москвы в группу "немосква"
За поддержку спасибо!
вот тут нельзя разворачивать или удалять какой-то город.
приходится добавлять всю россию,потом всю моск обл + все города рядом с Москвой
Отсюда следует вывод, Хороший компонент?
Купили шаблон altop для своего сайта:
необходимо внести в шаблоне некоторые доработки.
Куда можно обратиться для помощи в доработке шаблона?
Спасибо.
С Уважением,
Валерий Гаврилов
valeriy.gav@gmail.com
Спасибо!
У нас 3 склада отгрузки (Москва, Екатеринбург, Новосибирск)
Заказчику например нужно 10 шт. "Товар1"
Остатки на складах Москвы: 3шт, Екатеринбурга 5шт. и Новосибирск 2шт.
В заказе необходимо указать для каждого склада вариант отгрузки.
Вот пример, варианты выбора клиента сразу в одном заказе:
Москва - Отправить в Екатеринбург (внутренний транзит)
Екатеринбург - Самовывоз
Новосибирск - Отправить транспортной компанией
Вопрос:
Как сделать предварительный расчет стоимости доставки и прописать все отгрузки в заказ при сохранении?
Какие события перехватить и какие данные изменить?
теперь понятно почему все так странно реализовано
а почему в битрикс админку адаптивность не добавляете?