close

Вход

Забыли?

вход по аккаунту

?

диплом - копия

код для вставкиСкачать
Содержание
1. Введение.
2. Описание структуры cs-cart и методов разработки модулей.
2.1. Общедоступные (глобальные) переменные и входящие данные.
2.2. Хуки программного кода (ХПК).
2.3. Контроллеры.
2.4. Преконтроллеры и постконтроллеры (ПРЕ, ПОСТ).
2.5. Функции.
2.6. Передача управления темлейтеру.
2.7. Аддоны.
2.8. AJAX.
3. Содержание и описание функционирования модуля
3.1. Адресная книга
3.2. Назначение к каждому продукты своего метода доставки
3.3. Статистика
4. Словарь терминов
5. Заключение
Введение
Данная дипломная работа нацелена на усовершенствование системы администрирование cs-cart. Основная задача упрощение процесса покупок для оптовых покупателей.
В рамках данной работы были добавлены следующие функции:
* Адресная книга. Покупатель может сохранять/удалять/редактировать неограниченное количество адресов.
* Назначение методов доставки к каждому продукту. Покупатели смогут назначить свой собственный адрес доставки для каждого продукта отдельно.
* Использование адресной книги непосредственно во время оформления заказа. Покупатели имеют возможность выбирать заказ из адресной книги.
* Статистика использования адресной книги и возможности назначать свой метод доставки к каждому продукту. Администратор сможет посмотреть статистику использования адресной книги и возможности назначения каждому продукту свой метод доставки. Это позволит определить востребованность данных функций у покупателей.
Для выполнения работы была выбрана именно система cs-cart, так как она является очень функциональной, но в тоже время есть не реализованные функции, в которых нуждаются потребители. Данная система имеет модульную структуру, все изменения можно выполнить в рамках отдельного модуля, с возможностью его переноса или отключения. Функционал, выполненный в данной работе, позволяет вести оптовую торговлю в cms1 cs-cart. При этом покупателям будет максимально удобно закупать товары оптом. Помимо этого администратор сможет проверить востребованность новых возможностей благодаря статистике покупок.
Для разработки была выбрана именно cs-cart так как это наиболее гибкая в плане модернизации, но в тоже время обладающая широким функционалом система. Ниже представлено небольшое описание cs-cart.
Данная CMS для электронной коммерции одна из самых популярных в своей отрасли. С момента разработки в 2005 году было продано около 30 000 лицензий в 60 странах мира.
Разработана платформа российскими разработчиками из Ульяновска ("Симбирские технологии"). Однако, Cs-Cart официально распространяется на английском языке. В базовом варианте Cs-Cart больше подходит под он-лайн торговлю в зарубежных странах и под иностранные платёжные системы. Но можно найти и русскоязычную версию с российскими модулями для приёма электронных денег. Популярность этой CMS не удивительна, так как по функционалу она может соперничать только с Magento. Стоимость Cs-Cart 300 долларов США, то есть около 10 000 рублей, а адаптированная под Рунет версия стоит около 35000 рублей. Выпускается в четырёх редакциях, различных по мощности и функционалу. Есть одна бесплатная версия для знакомства с платформой. Так же есть 15ти дневные демо-варианты ко всем редакциям для пробного запуска. В плане удобства пользования данная система также одна из лидеров рынка, так как управлять ей сможет любой человек, которые имеет базовые знания в области пользования компьютером.
Основные преимущества Cs-Cart[1]:
1. Интернет магазин на основе данной CMS удобен для покупателя. Удобство заключается не только в широком функционале, который предоставляет пользователю всю широту действий возможных в современном интернет магазине, но и стиле исполнения всех элементов интернет магазина.
2. CMS удобна для администратора, так как имеет интуитивно понятный веб-интерфейс. Управление распространяется на все функции интернет магазина. Администратор интернет магазина видит все действия пользователей и может по мере необходимости вмешиваться в процесс. Среди наиболее важных функций стоит выделить.
3. У системы 100% открытый исходный код, что позволяет менять систему в дальнейшем под меняющиеся нужды интернет магазина.
Для пробного использования магазина есть демо версия: http://demo.cs-cart.com/professional/.
Полное описание системы можно найти на сайте продукта http://www.cs-cart.com/professional.html.
Описание структуры CS-Cart и методов разработки модулей
Архитектура cs-cart разработана таким образом, чтобы разработчик имел возможность расширять возможности функционала без вмешательства или с минимальным вмешательством в код стандартной версии.
Идеология cs-cart предлагает использование аддонов (addons) для решения задач по расширению и дополнению функционала ПО.
В версии 2.0 были введены следующие базовые архитектурные инструменты, позволяющие дополнять существующие и реализовывать новые функции программы:
* Хуки программного кода (Code hooks)
* Преконтроллеры и постконтроллеры (Precontrollers, postcontrollers)
* Шаблонные хуки (Template hooks)
Также, в системе предусмотрены несколько дополнительных способов для расширения:
* Функции ядра (Core functions)
* Схемы (schemas)
Общедоступные (глобальные) переменные и входящие данные
Все входящие данные объединяются и складываются в массив $_REQUEST, который является "суперглобальным". Не смотря на то, что массив $_REQUEST доступен из любой части приложения, использовать его в функциях будет неправильно. Это связано с тем, что зависимость функции от каких-либо глобальных объектов может привести к путанице и сбоем в работе других функций, которые также используют эти объекты. Данные, к которым нужен доступ из любой части приложения, хранятся в статическом классе Registry. К таким данным относятся: config - конфигурационный массив из config.php
settings - настройки из базы addons - настройки аддонов view, view_mail, ajax, mailer - объекты шаблонной (базовый и для почты), аяксовой и почтовой систем revisions - настройки и рабочие данные ревизий navigation - структура табов на текущей странице (для всех зон) и меню (для админской зоны) runtime - массив с изменяемыми во времени данными
При формировании запросов к базе данных в cs-cart используются так называемые, плейсхолдеры. Благодаря этому сильно повышается защита от несанкционированного доступа, потому что обращение к базе данных происходит не в явном виде. Хуки программного кода (ХПК)
ХПК или просто хук - это специально обозначенное место в программном коде, которое может передавать управление аддону2. Хук заранее объявляется вызовом специальной функциии в нужном участке кода - fn_set_hook('hook_name', $params, [$param2], [$paramN]);.
Зная название хука, любой аддон может перехватить исполнение кода программы, произвести необходимые манипуляции и после этого вернуть процесс исполнения Основной программе (ОП). При вызове определенного хука, аддону становятся доступными все переменные явно объявленные в этом хуке.
Вызов хука внутри аддона, осуществляется определением функции, имя которой состоит из префикса "fn_", названия аддона, символа подчеркивания и полного имени вызываемого хука.
Например, с помощью стандартного хука расположенного в файле /core/fn.catalog.php fn_set_hook('get_products', $params, $fields, $sortings, $condition, $join, $sorting, $group_by, $lang_code); можно перехватить данные массива $fields, внести изменения в этот массив и потом вернуть его обратно программе.
Данный хук используется в аддоне SEO. Хук "get_products" регистрируется в файле addons/seo/init.php. Затем используется в файле addons/seo/func.php в виде функции fn_seo_get_products. В этой функции изменяются значения массивов $fields и $join
Контроллеры
Базовая схема работы cs-cart заключается в вызове одного из двух основных исполняемых PHP файлов(admin.php или index.php) и дальнейшего последовательного подключения PHP файлов, реализующих функциональность программы.
1. index.php или admin.php -> 2.prepare.php -> 3. init.php -> 4. [controller_name].php
Файл, подключаемый под н.4 в терминах cs-cart называется контроллером. В нем осуществляется непосредственная работа с данными в программе - извлечение необходимых данных из базы, обработка данных, вычисления, трансформации и т.п. и подготовка данных для дальнейшего отображения.
Путь к контроллеру и его имя определяются программой автоматически на основании значения параметра "dispatch", переданного основному исполняемому файлу. Параметр "dispatch" всегда имеет вид "[controller_name].[mode_name]", где "[controller_name]" - имя контроллера, а "[mode_name]" - режим, в котором вызываемый контроллер будет работать. При этом имя вызываемого файла будет таким - "[controller_name].php".
Все контроллеры для зоны администрирования (исполняемый файл - admin.php) находятся в папке "/controllers/admin", для пользовательской зоны (index.php) путь к папке соответственно "/controllers/customer". Если вызываемый контроллер отсутствует в этих папках, то система переходит в папку "controllers/common" и пытается подключить его оттуда. Это сделано для ситуаций, когда один и тот же контроллер должен обслуживать и пользовательскую, и администраторскую зоны и при этом его функционал одинаков для обеих зон.
Подключение контроллера осуществляется функцией [/core/control.fn.php]/fn_dispatch(), которая не принимает параметров и выполняет следующие основные действия:
1. Проверяет на валидность5 параметра "dispatch".
2. Проверяет права доступа текущего пользователя к вызываемому контроллеру.
3. Обеспечивает переадресацию на безопасный протокол соединения (HTTPS) при необходимости.
4. Готовит упорядоченный список преконтроллеров и постконтроллеров от аддонов и ядра для подключения последовательного подключения в правильном порядке.
5. Автоматически определят шаблон для отображения.
Например
Имеем значение параметра "dispatch=products.manage" и исполняемый файл "admin.php" или другими словами набираем "http://cscart_dir/admin.php?dispatch=products.manage" в адресной строке браузера.
Подключаемый контроллер будет располагаться по следующему пути - "/controllers/admin/products.php". Параметр "manage" будет использоваться внутри файла для определения действий, которые контроллер должен произвести с данными. В данном примере "manage" указывает на то, что контроллер должен выбрать из базы список продуктов для отображения на странице управления продуктов в администраторской панели.
Имя контроллера обязательно должно быть уникальным. В случае если в аддоне определен контроллер с именем, которое совпадает с одним из стандартных контроллеров, то вызов любого из этих контроллеров приведет к ошибке.
Структура контроллера.
Каждый контроллер может содержать внутри следующие логические блоки:
1. Обработка POST запроса.
2. Обработка GET запроса.
3. Определение локальных функций, используемых только внутри контроллера.
Часть "[mode_name]" из параметра "dispatch" используется для назначения режима работы контроллера при обработке GET запроса.
POST запрос
Обработка POST запроса должна всегда происходить до обработки GET запроса и в конце блока содержать строку возврата управления из контроллера в функцию fn_dispatch():
return array(CONTROLLER_STATUS_OK, "$index_script?dispatch=controller_name$suffix");
Параметр CONTROLLER_STATUS_OK содержит константу со статусом успешности исполнения контроллера, второй параметр является строкой с URI для перехода после отработки POST запроса.
Например
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($mode == 'add') {
// здесь идет код, который необходимо выполнить при отправке формы добавления продукта
}
return array(CONTROLLER_STATUS_OK, "$index_script?dispatch=products$suffix");
}
GET запрос
Секция обработки GET запроса всегда располагается после POST блока.
Например
if ($mode == 'manage') {
"http://cscart_dir/admin.php?dispatch=products.manage"
// здесь идет код, который необходимо выполнить при вызове }
В этом примере представлен участок кода, который проверяет значение параметра "mode" (dispatch=controller.mode) и выполняет код внутри условного оператора, когда оно равно "manage". Выполнение данного кода произойдет при запросе методом GET.
В конце отработки GET режима, контроллер обычно выполняет одно из следующих завершающих действий:
1. Передача управления подсистеме отображения (представления) (темплейтеру).
2. Переход методом GET.
3. Завершение выполнения контроллера и самой программы без дополнительных действий: exit;
В первом случае, управление передастся в функцию fn_dispatch() автоматически, если явно не указано, что необходимо выполнить действие из п.2 или п.3. Для передачи в темплейтер данных для последующего отображения используется следующая конструкция:
$view->assign('template_var_name', $php_var_name);
Здесь "template_var_name" задает имя переменной доступной в темплейтере, а "$php_var_name" определяет содержимое этой переменной.
После отработки этого кода в контроллере, управление передастся в темплейтер, которому будут доступны две переменных $tpl_product_name и $tpl_product_description.
Преконтроллеры и постконтроллеры (ПРЕ, ПОСТ)
ПРЕ и ПОСТ - отдельные специальные PHP файлы аддона, которые в зависимости от их имен, а также от их расположения в структуре файлов аддона вызываются перед (ПРЕ) или после (ПОСТ) исполнения того или иного стандартного контроллера.
Аддон "attachments" имеет в своей структуре файл /addons/attachments/controllers/products.post.php - Это ПОСТ для контроллера products.php
Аддон "age_verification" имеет в своей структуре файл /addons/age_verification/controllers/admin/categories.pre.php - ЭТО ПРЕ для контроллера categories.php
* Папка controllers указывает на то, что файлы внутри нее являются либо собственными контроллерами аддона, либо ПРЕ/ПОСТ для стандартных контроллеров.
* Первая часть имени файла "products" определяет имя контроллера, и т.к. контроллер с именем "products" является стандартным, то модуль может только объявить ПРЕ или ПОСТ для него.
* Часть имени ".post" говорит о том, что файл будет подключен и исполнен после выполнения стандартного контроллера "products". Для подключения перед исполнением стандартного контроллера ".post" необходимо заменить на ".pre".
Функции
Функции внутри контроллера определяются в соответствии с общими правилами оформления функций. В случае, если функция контроллера требуется для вызова в другом контроллере, то такую функцию выносят в ядро программы или аддона.
Доступные данные.
В скрипте контроллера необходимо использовать следующие массивы для работы с данными.
1. $_REQUEST - содержит в себе все переменные пришедшие из GET или POST запроса. Все переменные в этом массиве специальным образом обработаны: вырезаны HTML теги и удалены слеши, автоматически добавляемые PHP, если у него включена соответствующая настройка.
2. $_SESSION - стандартный PHP массив, содержащий данные хранящиеся в сессии.
3. $Registry - специальный статический класс-хранилище для данных, к которым объективно требуется глобальный доступ в любом месте программы. Например, конфигурационные параметры программы, считанные при запуске заносятся в класс $Registry. Особенность этого класса заключается в том, что любые данные, которые он хранит, могут быть закешированы, что позволяет, например, исключить повторные запросы к базе для редко обновляемой информации, сохранив ее в кеше класса $Registry.
Передача управления темлейтеру
После того, как контроллер отработал и вернул управление программой функции fn_dispatch(), она передает управление программой темплейтеру. Также функция fn_dispatch() передают путь к определенному шаблону (шаблону), который должен быть обработан темплейтером и отображен в браузере.
Примечание. В контроллере можно явно указать, что вместо передачи управления в темплейтер нужно прекратить выполнение скрипта или произвести переход на другой адрес.
По умолчанию путь к этому шаблону определяется автоматически по следующей схеме:
/[customer|admin|mail]/views/[controller_name]/[mode_name].tpl
Например.
http://cscart_dir/admin.php?dispatch=products.manage
Отображаемый шаблон будет находиться по пути: /admin/views/products/manage.tpl
Аддоны
Структура установочного архива с аддоном
addons
|______XXX
|_____ lib (третьесторонние библиотеки)
|_____ js (яваскрипт файлы)
|_____ func.php (функции)
|_____ config.php (конфигурация )
|_____ init.php (инициализация хуков)
|_____ addon.xml (XML схема аддона)
var
|______skins_repository |_base
|_ customer (admin/mail)
|_ addons
|_XXX
|_____ common_templates (общие шаблоны аддона)
|_____ hooks (хуки)
|_____ overrides (оверрайды)
|_____ views (отображения)
Подключение аддонов с помощью хуков
Для создания хука нужно произвести следующие действия:
1.В папке с аддоном создаем папку hooks (если её нет). 2.В папке hooks создаем папку, для которой в качестве названия указываем имя контроллера, где будет вызываться хук. (Например, если хук будет вызываться на детальной странице продукта в клиентской части то нужно создать папку products)
3.Далее в этой папке создаем шаблон по правилу: "имя_хука.действие_производимое_с_кодом_хука.tpl"
действие_производимое_с_кодом_хука может принимать три значения:
- post - результат вставляется после объявления хука
- pre - результат вставляется перед объявлением хука
- override - результат заменяет блок хука
AJAX3
CS-Cart 2.0 позволяет выполнять AJAX-запросы(АЗ), которые позволяют получить с сервера необходимые данные и при необходимости отобразить их без перезагрузки страницы.
Основное
Для работы с AJAX-запросами(АЗ), программа использует собственное расширение стандартной AJAX-функциональности библиотеки jQuery - /js/ajax.js. Класс имеет три основных метода:
* ajaxRequest - используется для отправления АЗ на сервер через URL.
* ajaxSubmit - используется для отправления АЗ на сервер через форму.
* ajaxResponse - используется для обработки ответа сервера и вывода результат на страницу.
Работа с данными ведется в формате JSON.
При выполнение АЗ на сервере происходит инициализация подсистемы обработки АЗ через функцию fn_init_ajax(/core/fn.init.php):
* создается объект класса Ajax(/core/class.ajax.php), который производит необходимые преобразование перед выполнением обработки АЗ и после отработки АЗ, а также формирует JSON массив для последующей передачи в ajaxResponse.
* устанавливается в значение true константа AJAX_REQUEST для использования в PHP коде
Используя константу AJAX_REQUEST внутри PHP файла можно обозначить код, который требуется выполнить только при АЗ.
При завершении исполнения скрипта AJAX запроса, либо при явном вызове функции завершения exit() происходит отработка деструктора класса Ajax (/core/class.ajax.php), который помещает информацию для отображения в документе в массив c данными в JSON формате и передает его в JS функцию ajaxResponse(/js/ajax.js).
АЗ через микроформат
Для того, чтобы ссылка при клике или форма при отправлении инициировали АЗ можно воспользоваться микроформатом cm-ajax.
Пример 1. АЗ по клику на ссылку (GET метод).
<a class="underlined-bold cm-ajax" href="index.php?subcats=Y&amp;dispatch=products.search&amp;
sort_by=product&amp;sort_order=desc" coords="my_div" rel="nofollow">Product</a>
Параметр coords содержит список ID HTML элементов (через запятую, если несколько), содержимое которых этот запрос обновит.
АЗ через ajaxRequest
Если по событию перед отправкой АЗ необходимо выполнить какой-либо дополнительный JS код, то можно осуществить АЗ непосредственно через функцию ajaxRequest.
Пример.
<input id="enable_block_1" type="checkbox" name="enable_block_1" value="Y" onclick="jQuery.ajaxRequest('{$index_script}?dispatch=block_manager.enable_disable&amp;block_id=1&amp;enable=' + (this.checked ? this.value : 'N'), {literal}{method: 'POST', cache: false}{/literal});" />
Прямое использование метода ajaxSubmit также возможно, но на практике не применяется.
Дополнительно
Для форм имеется возможность задать pre-call и callback (только для аяксовых) функции. Для этого в документе необходимо объявить функцию, имя которой задается по правилам:
1. Pre-call: 'fn_form_pre_имя_формы'. Функция должна возвращать true/false. Если вернется false - форма не будет отправлена.
2. Call-back: 'fn_form_post_имя_формы'. В качестве параметра в функцию передается объект response.data
Pre-call функция вызывается по событию onSumbit, но до фактического отправления данных. Callback функция вызовется после того, как пришел ответ от АЗ.
Содержание и описание функционирования модуля.
Адресная книга
Для реализации функционала адресной книги активно использовался AJAX. Все операции, производимые с адресами, происходят без перезагрузки страницы. Основной целью оправдывающей полный отказ от обычных запросов перезагружающих страниц было максимальное удобство покупателей. Для добавления или редактирования адреса использовались всплывающие окна. Пользователю не выводились громоздкие формы для заполнения, вся необходимая информация была размещена в одно окно.
Поля, которые требовалось заполнить, для создания адреса задаются в админ панели магазина. Администратор может изменять существующие или создавать новые поля. Таким образом, достигается универсальность данного функционала.
Для того чтобы воспользоваться адресной книгой пользователю необходимо авторизоваться или зарегистрироваться, если он не имеет аккаунта в магазине. Это обуславливается необходимостью привязки конкретного адреса к конкретному пользователю. Если привязывать записи адресной книги к ip адресу, то большинство пользователей не смогли бы иметь доступ к раннее созданным адресам. Ведь чаще всего простые пользователи не имеют выделенного ip адреса. При оформлении заказа пользователь может использовать адреса из адресной книги, непосредственно выбирая их из списка. Для этого была реализована AJAX система, которая обращается к контроллеру адресной книги со страницы оформления заказа, при этом процесс оформления заказа не прерывается.
Ниже изображена схема работы данной системы:
Как видно из схемы покупатель может не только выбрать адрес из адресной книги, но и создать адрес не покидая страницы оформления заказа. Это позволяет пользователям не прерывать процесс оформления заказа, даже если нужного адреса нет в адресной книге.
Основной проблемой при реализации этой системы была ее громоздкость. Поместить все данные во всплывающие окошки, при этом давать покупателям возможность создания не ограниченного числа адресов, при необходимости компактности и хорошего вида всей системы - задача не из простых. Решение этой проблемы использование AJAX и всплывающих окон. Покупатель получает только ту информацию, которая ему нужна на данный момент, во всплывающих окошках нет лишней информации, например меню категорий, или информацию о корзине. Так если покупатель хочет добавить адрес в книгу, то при клике на соответствующую кнопку он получает только окно с полями, необходимыми для заполнения. А если покупатель хочет выбрать один из адресов, то он получит только сам писок адресов с их минимальным описанием. Так же вывод только необходимого контента позволяет избежать долгой загрузки данных.
Таблица в базе данных
Для хранения адресов была создана таблица в базе MYSQL. Так как в основном запрашиваются либо конкретные адреса, либо адреса для конкретного пользователя, было добавлено два ключа. Первый ключ - это уникальное поле id, которое является первичным кличем. Так же, для оптимизации запросов на выдачу адресов для конкретного пользователя был добавлен ключ для поля user_id.
Работы системы выбора адресов в процессе оформления заказа.
При оформлении заказа покупатель может выбрать несколько вариантов доставки:
1. Весь заказ доставляется по адресу плательщика.
2. Весь заказ доставляется не по адресу плотильщика, тогда покупатель может выбрать адрес доставки вручную.
3. Адрес доставки выбирается для каждого продукта.
На этапе выбора адреса доставки, выводится кнопка, нажав на которую всплывает окно с адресами данного покупателя. При нажатии на кнопку выбора адресов отправляется POST запрос на сервер. На сервере происходит выборка адресов для данного пользователя и их обработка. Затем с помощью специальной функции "fn_set_notification" происходит вывод окна. Одним из параметров данной функции является шаблон окна. У каждого адреса имеется кнопка "Use this address", нажав которую покупатель выбирает нужный ему адрес. Чтобы не дать покупателю выбрать уже выбранный адрес, id выбранного адреса сохраняется в сессии до момента выбора другого адреса. У выбранного адреса вместо кнопки "Use this address" кнопка "Selected", при нажатии на которую ни чего не происходит, она нужна лишь для того чтобы показать какой адрес выбран на данный момент. Окно выбора адреса имеет следующий вид
Проверить работы адресной книги можно перейдя по ссылке http://super-series.ru/rkuklin_pm52_diplom/index.php?dispatch=address_book.manage и авторизовавшись как пользователь, customer с паролем customer123.
Помимо выбора адреса из данного окна можно перейти на создание нового адреса. Если нажать на кнопку "Add new address", окно выбора будет закрыто, а окно создания адреса будет открыто. Так же, при создании адреса таким способом, по завершении создания, созданный адрес автоматически выбирается. Назначение к каждому продукты своего метода доставки
Многие оптовые покупатели закупаются относительно редко, но крупными партиями. При этом не всегда необходимо доставить весь заказ по одному адресу. Так, например владелец сети магазинов розничной торговли вынужден был оформлять несколько заказов на поставку конкретного товара в каждый из его магазинов розничной торговли. Если покупатель может указать несколько адресов доставки в одном заказе, то ему будет достаточно лишь распределить заказ по конкретным адресам, без необходимости оформления нескольких заказов.
Основной проблемой при реализации этого функционала была жесткость системы оформления заказа в cs-cart. Большинство изменений прописывались непосредственно в исполняемых файлах, так как для реализации данного функционала требовалось изменить основные алгоритмы. Стандартный процесс оформления заказа разбит на 4 шага:
1. Авторизация, либо регистрация покупателя
2. Адрес доставки.
3. Выбор метода доставки
4. Выбор метода оплаты, оплата.
После внедрения системы назначения к каждому продукты метода и адреса доставки, изменились только второй и третий шаги.
На втором шаге покупатель выбирает, будет ли он назначать один адрес для всего заказа, или для каждого продукта будет свой адрес и метод доставки.
Если покупатель выберет один адрес для всего заказа, на третьем шаге он сможет выбрать адрес доставки из адресно книги.
Если же он выберет назначение адреса доставки к каждому продукту, то на третьем шаге, ему будет представлена таблица, содержащие все продукты корзины, для каждого продукта можно выбрать метод доставки, и адрес доставки из адресной книги.
Так как стоимость доставки рассчитывается с учетом множества параметров, таких как стоимость всего заказа, или вес всего заказа, для расчета стоимости доставки для каждого продукта проводились следующие операции
1. Создавалась копия корзины.
2. Из корзины удалялись все продукты, кроме расчётного.
3. Адрес доставки изменялся на адрес, выбранный для данного продукта.
4. Если для продукта нет выбранного адреса, берется первый из списка адресов покупателя.
5. Происходил расчет стоимости доставки с помощью стандартной функции cs-cart: "fn_calculate_cart_content".
При смене адреса, для какого либо продукта, происходил перерасчет стоимости доставки.
Третий шаг оформления заказа, при выборе адреса доставки для каждого продукта выглядит следующим образом:
В базе данных cs-cart имеется таблица с дополнительной информацией о заказах, для хранения информации о назначенных к продуктам методах доставки использовалась именно эта таблица. Вся информация о методах доставки хранится в сериализованном4 виде, в поле с типом текст.
Статистика
В данной работе помимо основного функционала, имеется дополнительная функция подсчета заказов с использованием назначения методов доставки к каждому продукту (оптовых заказов). Что бы администратор имел представление о востребованности оптовых заказов у покупателей, была разработана статистика.
На странице просмотра заказов(http://super-series.ru/rkuklin_pm52_diplom/admin.php?dispatch=orders.manage), в блоке "Total" было добавлено поле "Total percent". В этом поле выводится процентное соотношение оптовых заказов к обычным заказам. Система статистики, по умолчанию, имеет в себе только информацию о соотношение оптовых заказов к обычным заказам. Однако при необходимости можно вести подсчет любой информации связанной с заказами. Система разрабатывалась так, чтобы было максимально просто добавить новую информацию для подсчета.
Словарь терминов
1. CMS(content manage system) - Система управления контентом.
2. Addon - дополнение основной программы, имеющие завершенную структуру, свободно переносимое и отключаемое без потери работоспособности основной программы.
3. AJAX - подход к построению интерактивных пользовательских приложений, заключающийся в "фоновом" обмене данными браузера с веб-сервером.
4. Сериализация - процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации (структуризации) - восстановление начального состояния структуры данных из битовой последовательности.
5. Валидность - соответствие требованиям и нормам, применимым к той или иной структуре данных.
Заключение
Основной задачей владельцев интернет магазинов является привлечение покупателей. При прочих равных критериях, покупатель совершит покупку в магазине с более понятными и простыми средствами просмотра товаров и совершения заказа. Максимально упрощение процесса покупки является глобальной задачей электронной коммерции.
В рамках этой дипломной работы были сделаны следующие усовершенствования:
1. Была добавлена адресная книга.
2. Была добавлена возможность выбирать адрес доставки непосредственно из адресной книги.
3. Была добавлен возможность назначать к каждому продукту свой метод и адрес доставки.
4. Была добавлена статистика продаж с использование назначения адреса доставки к каждому продукту.
Этот функционал, существенно упрощает процесс покупки в CMS cs-cart. Возможность для покупателей иметь адресную книгу пригодится всем покупателям, даже если пользователь захочет купить только один продукт, а не целую партию. Возможность назначать к каждому продукту свой способ и метод доставки выводит cs-cart на новый уровень в оптовой торговле. Так же, статистика оптовых покупок позволит администратору магазина следить за оборотами оптовых продуктов, и за востребованностью функционала оптовых продаж. Cs-Cart - это система рассчитанная на средний и малый бизнес, однако, если включить сделанные в рамках данной работы модули в стандартный функционал системы, cs-cart сможет заинтересовать крупных производителей и выйти на уровень крупного бизнеса. Таким образом, система была модернизирована успешно, результаты оправдали ожидания, поставленные задачи выполнены полностью.
Список литературы
1. База Знаний CS-Cart. http://kbrus.cs-cart.com/.
2. Кристиан Дари, Богдан Бринзаре, Филипп Черчез-Тоза, Михай Бусика. AJAX и PHP. Разработка динамических веб-приложений. Кристиан Дари, Богдан Бринзаре, Филипп Черчез-Тоза, Михай Бусика. AJAX и PHP. Разработка динамических веб-приложений. .: Символ-Плюс, 2006.
3. Сейд М.М., Хью Е.Вильямс. Руководство по MySql. .: Русская редакция, 2012. С.331-337.
4. Алекс Маккоу. Веб приложения на JavaScript. .: Питер, 2012.
5. Билл Скотт, Тереза Нейл. Проектирование веб приложений.: Симво, 2010. С.133-214.
6. Владимир Дронов. HTML 5, CSS 3 и WEB 2.0 Разработка современных сайтов: БХВ-Петербург, 2011. С.187-229, С.283-315.
26
Документ
Категория
Разное
Просмотров
108
Размер файла
161 Кб
Теги
диплом
1/--страниц
Пожаловаться на содержимое документа