support 447 Опубликовано 9 ноября, 2017 Жалоба Share Опубликовано 9 ноября, 2017 В 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, который является его основным репозиторием, где содержатся все доступные пакеты. Expand т.е. с помощью 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); и вот что у нас в итоге получилось. Страница оформления заказа по определния города, региона, страны: и после: т.е. поля Город, Регион, Страна заполняются автоматически, определяя город, регион и страну покупателя по IP адресу. Как минимум, мы избавили Вашего покупателя от 3 лишник кликов мышкой при оформлении магазина. Это лишь один небольшой пример использования Composer в VamShop. Просто небольшая вводная статья, что такое Composer и как его можно применять в VamShop. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения