Sevdresscode.ru

Финансы и бизнес
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Корзина заказа для сайта

Как оформить корзину на сайте интернет-магазина

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

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

Идеальное расположение и внешний вид корзины в интернет-магазине

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

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

Так что учитывайте это обязательно, и старайтесь оформить корзину в вашем интернет-магазине следующим образом:

    Расположение. Корзина для сайта интернет-магазина должна быть на виду, чтобы посетителям не пришлось прилагать усилия, разыскивая её. Удобнее всего, если находиться она будет с правой стороны шапки сайта, присутствуя на всех страницах и не меняя расположения.



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



Приглашение. Людям нравится следовать чётким инструкциям. Поэтому рядом с товарами следует сделать заметную приглашающую кнопочку с лаконичной надписью «В корзину» или «Купить». Это будет стимулировать их к дальнейшим действиям. Если всё это учесть, и оформить на сайте интернет-магазина корзину правильно, то количество покупателей увеличится. Но это ещё не всё – в самой корзине нужно настроить идеальный набор функций, позволяющий покупателям разобраться со всем легко и просто.

Как сделать корзину интернет-магазина максимально удобной

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

Чтобы на этой страничке царило полное юзабилити для посетителей, корзину на сайте интернет-магазина нужно настроить следующим образом:

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

А после оформления заказа – обнуляться и возвращаться к исходному состоянию.

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



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

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

Управление заказом. Добавить и убрать товар до подтверждения заказа должно быть одинаково легко – одним нажатием кнопки со значком + или -. Но они должны располагаться так, чтобы исключалось случайное нажатие. Кроме возможности регулировать количество товара, нужно настроить возможность ввести итоговую цифру в поле вручную. В процессе выбора не оставляйте посетителя без внимания — предлагайте оформить заказ или продолжить заполнять корзину.



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



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

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

  • Сохранение данных. Пользователь может оставить отложенные в корзину товары, чтобы ещё раз обдумать покупку, или просто из-за недостатка времени в данный момент. Чтобы, вернувшись на сайт интернет-магазина, он не обнаружил неприятного сюрприза в виде пустой корзины, нужно увеличить сроки хранения cookies. Также обязательно сообщите, если в его отсутствие какой-либо из выбранных товаров распродан, и на данный момент его нет в наличии.
  • Читать еще:  Сделать сайт учителя самостоятельно бесплатно

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

    Присоединяйтесь к курсу “10Х интернет-магазин” и вместе с нами проработайте каждую страницу и элемент Вашего интернет-магазина, чтобы увеличить количество заказов в несколько раз. А с промо-кодом Korzina-30-08 получите дополнительную скидку.

    Корзина для интернет магазина php

    Здравствуйте уважаемые читатели блога LifeExample, сегодня мы продолжим создавать интернет магазин с помощью PHP и реализуем еще несколько его модулей собственными руками. В прошлой части урока мы реализовали такие компоненты как каталог, карточка товара, и ЧПУ, а также сделали задел для системы наполнения каталога. Сегодня мы будем заниматься разработкой маленькой корзины для интернет магазина.

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

    Еще хочу заметить, весь код, который я представляю, не претендует на 100% правильность и в ваших силах найти в нем ошибки и оптимизировать, так как вы считаете нужным. Целью данного проекта является не дать вам готовую «болванку» интернет магазина, а научить всех желающих мыслить и самостоятельно разрабатывать PHP программы. Теперь давайте перейдем к процессу разработки нашей системы.

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

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

    Маленькая корзина для интернет магазина

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

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

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

    Существует несколько способов решения данной задачи:

    1. Хранить содержимое корзины для каждого зарегистрированного пользователя в БД
    2. Хранить содержимое корзины любого пользователя в Cookies браузера

    В большинстве случаев второй вариант подходит лучше первого, поэтому мы его и разработаем. Т.е. в итоге у нас корзина должна работать в связке session + cookies

    Приступим, отрываем header.php и вставляем в верстку вывод нашей корзины:

    Здесь у нас фигурирует вызов содержимого массива $smal_cart , который будет доступен в шаблоне после дальнейших действий.
    Для удобного восприятия добавим в style.css стили для корзины:

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

    Так как компонент маленькая корзина для интернет магазина не является отдельной страницей, то контроллера для нее мы создавать не будем, внешнее представление у нас уже есть в общем шаблоне, поэтому и отдельного views она тоже иметь не будет, а вот model все-таки придется сделать.

    В папке applicationmodels создадим файл cart.php с таким содержанием:

    class Application_Models_Cart
    <
    function addToCart ( $id , $count = 1 )
    <
    $_SESSION [ ‘cart’ ] [ $id ] = $_SESSION [ ‘cart’ ] [ $id ] + $count ;
    return true ;
    >

    function delFromCart ( $id , $count = 1 )

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

    Все данные о продуктах из корзины, у нас будут храниться в массиве $_SESSION в виде ассоциативного массива, ключами которого будут ID продуктов, а значением – количество этих продуктов в корзине. Такой минимализм сыграет нам на руку при передаче этой информации в куки.

    Теперь у нас есть модель Application_Models_Cart, и логично предположить, что она должна, откуда-то вызываться. Вызываться модель будет из контролера каталога. Почему каталога? Потому, что ссылки ‘В корзину‘ у нас расположены на странице каталога, завязанной на файлах view-controler-model относящихся к компоненту catalog. А еще и потому, что пока переходить на страницу большой корзины мы не будем. При нажатии на данные ссылки, мы должны оставаться на странице каталога, а информация в маленькой корзине должна изменяться.

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

    В результате получим ссылку вида

    http://lifeexampleshop.ru/catalog?in-cart-product- >

    При клике пользователя на данную ссылку, mvc-система передаст управление в application /controllers/catalog.php. Куда мы сейчас вставим нужный код обработчика данного события:

    class Application_Controllers_Catalog extends Lib_BaseController
    <
    function index ( )
    <
    if ( $_REQUEST [ ‘in-cart-product-id’ ] )
    <
    $cart = new Application_Models_Cart ;
    $cart -> addToCart ( $_REQUEST [ ‘in-cart-product-id’ ] ) ;
    Lib_SmalCart :: getInstance ( ) -> setCartData ( ) ;
    header ( ‘Location: /catalog’ ) ;
    exit ;
    >

    $model = new Application_Models_Catalog ;
    $Items = $model -> getList ( ) ;
    $this -> Items = $Items ;
    >
    >

    Поясню, что тут происходит. Сначала проверяется, был ли щелчок по ссылке и передался ID продукта, который нужно добавить. Если GET параметр in-cart-product-id содержит ID , то управление передается в модель, которая функцией addToCart() , добавляет в корзину нужный продукт, либо только увеличивает его количество. Строка Lib_SmalCart::getInstance()->setCartData() , требует отдельного внимания, поэму я пока ее пропущу, представим, что ее просто нет. На этом этапе у нас есть вся информация о содержимом корзины интернет магазина, и хранится она в сессии. Поэтому мы можем спокойно вернуться на страницу каталога с помощью редиректа:

    Читать еще:  Онлайн платежи на сайте подключить

    Так как мы пока не знаем что такое AJAX и без перезагрузки страницы никак не сможем обойтись, мы просто возвращаемся на страницу каталога, для того чтобы увидеть изменения в корзине. (Об основах AJAX можно прочесть тут.)

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

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

    1. Lib_SmalCart – интерпретируется нашей системой как создание экземпляра класса SmalCart, расположенного в libsmalcart.php
    2. ::— получаем доступ к функциям класса
    3. Вызов любой функции данного класса должен проходить через функцию getInstance(), в задачи которой входит отсеять все возможные повторные попытки создания экземпляра этого класса. Такой метод называется Singleton.
    4. setCartData() – сериализует данные о корзине из сессии, и записывает их в cookie.

    Для более четкого представления откройте файл libsmalcart.php в нем я постарался подробно описать суть каждой функции, поэтому особо комментировать нечего. Единственное, что нужно сказать это то, что вызов метода getCartData() этого класса, происходит и в файле function.php , который является еще одним отделителем логики от верстки и записывает в переменную $smal_cart всю необходимую для вывода информацию.

    Помните первым шагом в этой статье мы в header.php вставили код:

    Так вот, теперь вы наверняка понимаете, откуда берется данный массив $smal_cart и можете заметить, что логическая цепочка обмена информации замкнулась.

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

    Всем тем, кому требуются более тщательные объяснения, советую писать вопросы в комментариях, либо мне на e-mail.

    Сегодня мы добавили немало кода, который требуется обмозговать и переварить, прежде чем преступать к следующим частям магазина. Надеюсь, что у вас не возникнет трудностей с пониманием данной статьи “Корзина для интернет магазина php”. Если вы еще не подписались на e-mail или rss рассылку, не стесняйтесь — подписывайтесь. Скачать листинг данного урока можно по ссылке:

    Читайте также похожие статьи:

    Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

    Как с помощью CSS и JavaScript создать пользовательский интерфейс корзины интернет-магазина

    В этом руководстве мы создадим корзину для сайта с использованием HTML и CSS3 . При этом мы применим Google Fonts ( шрифт « Roboto » ).

    Шаг 1: Создадим HTML-структуру.

    Сначала нужно создать контейнер div , который мы назовем « .shopping-cart ».

    Внутри него у нас будет заголовок и три пункта, которые будут содержать:

    • Кнопку « Удалить » и кнопку « Добавить в избранное »;
    • Изображение товара;
    • Название и описание товара;
    • Кнопки, с помощью которых можно задавать количество товара;
    • Итоговую цену.

    Убедитесь, что при создании корзины для сайта на PHP вы подключили шрифт, который мы используем в этом руководстве. Теперь добавим основные стили для раздела body :

    После этого создадим корзину с размерами 750 на 423 пикселя и зададим для нее стили. Обратите внимание, что мы используем flexbox , поэтому устанавливаем для свойства display значение flex , а для flex-direction – column . Потому что по умолчанию для flex-direction установлено значение row :

    Теперь создадим первый элемент корзины для сайта на JavaScript , который будет названием товара. Для этого изменим значение высоты на 60 пикселей и зададим несколько основных стилей. Следующие три элемента — это товары в корзине. Для каждого из них мы установим высоту 120 пикселей и display: flex :

    Мы задали основные стили. Теперь по порядку установим стили для товаров. Первыми элементами являются кнопки « Удалить » и « Добавить в избранное ».

    Мне всегда нравилась анимация кнопок-сердечек Twitter . Я думаю, что она будет отлично смотреться в скрипте корзины для сайта:

    Мы устанавливаем класс « is-active » при нажатии кнопки, чтобы анимировать ее с помощью jQuery , но об этом подробнее в следующем разделе:

    Следующий элемент скрипта корзины для сайта HTML — это изображение товара, для которого нужно задать поле справа 50 пикселей:

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

    Полная стоимость товаров:

    Также реализуем функцию адаптивности корзины для HTML сайта , добавив следующие строки кода:

    Это все, что касается CSS .

    JavaScript

    Перед тем, как сделать корзину на сайте , создадим анимацию сердечек, которая будет запускаться, когда пользователь нажимает на них:

    Теперь заставим работать кнопки количества приобретаемого товара:

    И это наша окончательная версия корзины товаров для сайта :

    Руководство завершено! Надеюсь, оно вам понравилось, и вы узнали что-то новое. Если у вас есть вопросы, напишите об этом в комментариях!

    Данная публикация представляет собой перевод статьи « How to Create a Shopping Cart UI using CSS & JavaScript » , подготовленной дружной командой проекта Интернет-технологии.ру

    Создайте корзину с PHP и MySQL

    Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)

    В этом еженедельном уроке screencast + мы научимся создавать собственную корзину покупок с PHP и MySQL. Вы увидите, что всё не так сложно, как кажется.

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

    Шаг 1

    Начнём со структуры папок:

    Структура

    • reset.css — вы можете получить по this ссылке
    • style.css — наш css файл для стиля HTML макета
    • connection.php — файл для соединения с базой данных
    • index.php — шаблон корзины покупок
    • cart.php — файл, который меняет продукты в корзине (добавлять, удалять)
    • products.php — страница списка продуктов
    Читать еще:  Создание сайта недвижимости

    Шаг 2

    Начнем с разметки html, а затем её оформления. Откройте index.php и скопируйте/вставьте код:

    Как вы видите, наша страница имеет две колонки: основной столбец и sidebar. Теперь пройдём в CSS. Откройте файл style.css и пропишите код:

    Вот как теперь выглядит наша страница продуктов:

    Полный скринкаст

    Шаг 3

    Прежде чем перейти к части PHP/MySQL, нам нужно создать базу данных. Откройте phpMyadmin и выполните следующие действия:

    1. Перейдите на вкладку Privileges, нажмите кнопку добавления нового пользователя и настройте: Username: tutorial; Host: localhost; Password: supersecretpassword. Теперь убедитесь, что установлены Global privileges; затем переходите к следующему шагу.
    2. Создайте новую базу данных под названием tutorials.
    3. Создайте новую таблицу products и установите количество полей 4. Теперь заполните эти поля так: id_integer — убедитесь, что он установлен в INT и пометьте его как PRIMARY (также установите его в auto_increment); name — будет VARCHAR длиной 100; description — VARCHAR длиной 250; price — значение DECIMAL (2,6)
    4. Заполните таблицу несколькими примерами продуктов.

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



    Шаг 4

    До извлечения данных из базы данных я сделаю index.php шаблон для списка продуктов и корзины. Поэтому добавьте следующий код в начало страницы index.php:

    1. session_start() — для дальнейшего использования; это позволит нам использовать сеансы (очень важно, чтобы session_start был написан прежде, чем другие данные будут отправлены в браузер).
    2. Во второй строке мы укажем connection.php, который установит соединение с базой данных (мы рассмотрим это в секунду). И ещё одно: разница между include и require заключается в том, что если вы используете require и файл не может быть найден, выполнение скрипта закончится. Если вы используете «include», скрипт продолжит работать.
    3. Вместо копирования всего html-кода (ссылка на css, на js) для каждого файла на вашем сайте, можете просто сделать их все относительно одного файла. Сначала я проверяю, есть ли переменная GET, называемая «page set». Если нет, я создаю новую переменную _pages. Указывая сначала переменную GET, называемую pages, я хочу убедиться, что файл, который я собираюсь включить, является допустимой страницей.

    Для этого нам нужно включить файл; добавьте эту строку в index.php между div с id «main»:

    Теперь у нас полный index.php:

    Давайте создадим соединение с MySQL. Откройте connections.php и пропишите следующее:

    Шаг 5

    Пропишем разметку для страницы продуктов. Откройте её и введите следующее:

    Давайте посмотрим на страницу:

    Как видите, это довольно уродливо. Давайте добавим этот CSS.

    Okay: другое дело:

    Выглядит намного лучше, не так ли? Внизу указан полный код style.css:

    Шаг 6

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

    Отлично! Теперь в том месте, где были строки таблицы, введите следующий код PHP:

    1. Итак, сначала мы используем SELECT для извлечения продуктов, затем перебираем каждую строку из базы данных и переводим её на страницу в строке таблицы.
    2. Вы видите, что anchor ссылается на ту же страницу (когда пользователь выбирает продукт, добавляя в корзину/сеанс). Мы передаём некоторые дополнительные переменные, такие как id продукта.

    Если вы укажете одну из ссылок для добавления в корзину, увидите в нижней части страницы, что id передан.

    Шаг 7

    Давайте сделаем anchor работу, добавив следующий код в начало нашей страницы:

    1. Если переменная GET, называемая action, установлена и её значение равно ADD, мы выполняем код.
    2. Мы удостоверяемся, что id, прошедший через переменную GET, является целым числом
    3. Если id продукта находится в корзине SESSION, мы просто увеличиваем его количество на 1
    4. Если id не находится в сеансе, нам нужно убедиться, что id, прошедший через переменную GET, существует в базе данных. Если да, мы берем цену и создаём сессию. Если это не так, мы устанавливаем переменную с именем message, которая будет содержать нашу ошибку.

    Проверим, установлена ли эта переменная сообщения и вызовите её на страницу (введите этот код под заголовком страницы H1):

    Вот полная страница products.php.

    Вот сообщение об ошибке, если id недействителен

    Шаг 8

    Вернёмся к index.php и пропишем sidebar. Добавьте следующий код:

    1. Сначала проверим, установлен ли сеанс корзины. Если нет, мы выводим сообщение, предупреждая пользователя о том, что корзина пуста.
    2. Затем создаём mysql SELECT, но мы выбираем только те продукты, которые присутствуют в этом сеансе. Для этого используем функцию foreach. Итак, мы проходим цикл и добавляем идентификатор продукта в SELECT. Затем мы используем функцию substr для удаления последней запятой из SELECT.
    3. В конце выводим данные в браузер.

    Посмотрите на картинку снизу:


    Поскольку index.php является шаблоном для всех файлов, sidebar также будет виден в cart.php. Разве это не круто ?!

    Шаг 9

    Наконец, откройте cart.php и введите код:

    Он похож на код из index.php и products.php, поэтому я не буду объяснять всё снова. Вы заметили, что количество теперь отображается не в форме, а в поле ввода (чтобы мы могли изменять количество). Кроме того, таблица заключена в form tag. Чтобы получить общую стоимость элементов, мы умножаем количество конкретного продукта (из сеанса) id на его цену. Это повторяется в каждом цикле.

    ПРИМЕЧАНИЕ: input — это массив, key — это id продукта, а quantity — значение количества.

    Шаг 10

    Наконец, нам нужно заставить форму работать. Поэтому добавьте этот код в начало страницы cart.php.

    1. Сначала проверяем, была ли предоставлена форма. Если была и значение ввода было равно нулю, мы отменяем этот сеанс.
    2. Если было любое другое значение, вместо него мы указываем количество.

    Вот заполненный cart.php

    Надеюсь, урок вам понравился. Если появятся вопросы, посмотрите более подробный видеоурок!

    Ссылка на основную публикацию
    Adblock
    detector