VaM

Пример работы с Composer в VamShop 2!

1 сообщение в этой теме

В VamShop 2 по умолчанию интегрирована удобная работа с Composer, с любыми библиотеками с https://packagist.org/

Готовых библиотек десятки тысяч, есть готовые варианты для решения практически любых задач, не надо изобретать свой велосипед, в 99% случаях уже есть готовое решение в виде php класса на https://packagist.org/

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

Если коротко, то сделаем так, что на странице оформления заказа у покупателя уже будут автоматически заполнены поля Город, Регион, Страна на основе его IP адреса.

Для этого будет использовать библиотеку Sypex GEO API, а устанавливать эту библиотеку будем в VamShop с помощью Composer.

https://sypexgeo.net/ru/api/

Краткое содержание статьи:

1. Что такое Composer и для чего он нужен в VamShop.

2. Почему Composer - это быстро, просто, удобно.

3. Устанавливаем php библиотеку Sypex GEO API в VamShop.

4. Определяем Город, Регион, Страну покупателя и заполняем поля формы на странице оформления заказа.

 

1. Что такое Composer и для чего он нужен в VamShop.

Для начала, что такое Composer.

Информация с https://ru.wikipedia.org/wiki/Composer

 

Цитата

 

Composer — это пакетный менеджер уровня приложений для языка программирования PHP, который предоставляет средства по управлению зависимостями в PHP-приложении. Composer разработали и продолжают поддерживать два программиста Nils Adermann и Jordi Boggiano. Они начали разрабатывать Composer в апреле 2011, а первый релиз состоялся 1 марта 2012. Идея создания пакетных менеджеров уровня приложений не нова и его авторы вдохновлялись уже существовавшим на тот момент времени npm для Node.js.

Composer работает через интерфейс командной строки и устанавливает зависимости (например библиотеки) для приложения. Он также позволяет пользователям устанавливать PHP-приложения, которые доступны на packagist.org, который является его основным репозиторием, где содержатся все доступные пакеты.

 

 

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

Нет необходимости подключать эту библиотеку в коде VamShop, всё уже автоматически будет подключено и готово к работе.

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

Достаточно просто в консоли написать: composer update

и всё, Composer сам проверит, есть ли обновления и обновит, если нужно.

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

Вот с помощью Composer обновить phpMailer можно было бы практически автоматически :)

Без "ручного" труда, закрыв тем самым найдённую уязвимость у себя на сайте.

 

2. Почему Composer - это быстро, просто, удобно.

Все библиотеки, доступные через composer находятся в едином хранилище https://packagist.org/

Точнее на этом сайте хранятся записи о всех добавленных в Composer библиотеках, сам код должен быть на https://github.com

Все используемые в VamShop через Composer библиотеки должны быть описаны в файле /app/composer.json

т.е. в этом файле опиписывается, с какими именно библиотеками с http://packagist.org мы хотели бы работать у себя в VamShop.

Подробное описание настроек composer.json можно найти на официальном сайте https://getcomposer.org/doc/ и https://getcomposer.org/doc/04-schema.md , в данной статье лишь будет показан пример загрузки и использования одной библиотеки.

В хранилище https://packagist.org/ находятся десятки тысяч удобных библиотек на любые случаи.

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

В нашей статье нам нужна библиотека для работы с Sypex GEO API, для примера, ищем в поиске, и, допустим, возьмём вот этот вариант: https://packagist.org/packages/klev/sypex-geo

Первое, что нам нужно, это скачать эту библиотеку и подключить её в VamShop.

Как подключаение библиотеки происходило без использования composer:

1. Заходили на сайт автора библиотеки - https://github.com/klevunin/sxgeo

2. Скачивали архив с кодом к себе на комп.

3. Распаковывали.

4. Подключались к своему магазину через ftp, к примеру.

5. Переписывали библиотеку в /app/Vendor папку.

6. Подключали её через App::Import к магазину.

7. И только затем могли работать с этой библиотекой в магазине.

Как подключение библиотеки происходит с использоваеним Composer:

1. Подключаемся к своему магазину через ssh, нам нужен доступ к консоли для работы с Composer.

2. Заходим в папку /app нашего магазина и выполняем команду: composer update

Всё, composer скачает/обновит всё что необходимо и подговит весь код для работы с библиотеками.

Всё установленные через Composer библиотеки сразу же доступны по всему коду VamShop.

 

3. Устанавливаем php библиотеку Sypex GEO API в VamShop.

Давайте для примера установим через composer библиотеку для работы с Sypex GEO API - https://github.com/klevunin/sxgeo

Для этого нам надо с /app/composer.json добавить информацию о новой библиотеке, которую мы хотим добавить в VamShop.

Открываем файл /app/composer.json и после:

    "name": "vamshop",

добавляем:

    "minimum-stability": "dev",

Эта опция нам необходима для того что б composer смог скачать код библиотеки из github хранилища - https://github.com/klevunin/sxgeo

т.к. автор библиотеки не использует релизы в github и не прописывает номера версий, то использование опции minimum-stability является обязательным условием, иначе composer не поймёт, что именно выкачивать.

Затем ниже, в разделе requre, меняем:

    "require": {
        "simplepie/simplepie": "~1.5"
    },

на:

    "require": {
        "simplepie/simplepie": "~1.5",
        "klev/sypex-geo": "*"
    },

Всё, сохраняем файл /app/composer.json.

т.е. файл composer.json - это описание того, что будет делать composer, что мы от него хотим.

В данном случае мы хотим, что б composer загрузил нам библиотеку klev/sypex-geo

Всё, теперь через терминал (ssh) подключаемся к магазину, переходим в папку /app и в папке app выполняем компанду: 

composer update

Данной командой мы загрузим нашу новую библиотеку klev/sypex-geo в папку /app/Vendor

Всё, как только появилась папка klev/syper-geo в /app/Vendor, мы можем работать с этой библиотекой в магазине, она уже подключена в движок VamShop, никаких правок больше делать не надо, никаких include, require и т.д.

 

4. Определяем Город, Регион, Страну покупателя и заполняем поля формы на странице оформления заказа.

Теперь осталось самое простое, определить город, регион, страну по IP адресу покупателя и вывести эти значение на страницу оформления заказа.

Официальный сайт Sypex GEO API - https://sypexgeo.net/ru/api/

Итак, теперь будем работать со скачанной библиотекой и автоматически заполним поля Город, Регион, Страна на странице оформления заказа, ведь чем меньше кликов, действий делает покупатель при оформлении заказа, тем лучше, тем быстрее и удобнее будет процедура оформления заказа в Вашем магазине.

Открываем файл с модулем оформления заказа /app/Catalog/function.checkout.php

и после:

	App::import('Model', 'PaymentMethod');
		$PaymentMethod = new PaymentMethod();

Добавляем:

	$SxGeo = new Klev\SypexGeo\SxGeo();
	$ip = $_SERVER['REMOTE_ADDR'];
	$data = $SxGeo->getCityFull($ip);
	$city = $data['city']['name_ru'];
	$region = $data['region']['name_ru'];
	$country = $data['country']['name_ru'];

Это мы определяем город, регион страну по IP адресу посетителя и записываем данные в переменные $city, $region, $state.

Теперь чуть ниже добавляем переменные для шаблона, меняем:

	$assignments = array(
		'ship_methods' => $keyed_ship_methods,

на:

	$assignments = array(
		'ship_methods' => $keyed_ship_methods,
		'city' => $city,
		'region' => $region,
		'country' => $country,

и вставляем в шаблон страницы оформления заказа js код, который заполнит поля формы Город, Регион, Страна.

Для этого меняем:

{if $phone_mask != ""}
  $("#phone").mask("{$phone_mask}");
{/if}  

на:

{if $phone_mask != ""}
  $("#phone").mask("{$phone_mask}");
{/if}  

$("#bill_city").val("{$city}");

$("#bill_state option:selected").prop("selected", false);

$("#bill_state option")
    .filter(function(index) { return $(this).text() === "{$region}"; })
    .prop("selected", true);

$("#bill_country option:selected").prop("selected", false);

$("#bill_country option")
    .filter(function(index) { return $(this).text() === "{$country}"; })
    .prop("selected", true);

и вот что у нас в итоге получилось.

Страница оформления заказа по определния города, региона, страны:

5a04271e01ecd_Screenshotfrom2017-11-0912

и после:

Screenshot from 2017-11-09 13-31-09.png

т.е. поля Город, Регион, Страна заполняются автоматически, определяя город, регион и страну покупателя по IP адресу.

Как минимум, мы избавили Вашего покупателя от 3 лишник кликов мышкой при оформлении магазина.

 

Это лишь один небольшой пример использования Composer в VamShop.

Просто небольшая вводная статья, что такое Composer и как его можно применять в VamShop.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас