Анализ и выбор современных инструментальных средств
Обзор работы рынка аукционов. Обзор решений с "Маркетплэйс". Экономическое обоснование разработки интернет-аукциона. Программные средства для разработки сайта, обзор, обоснование выбора. Создание файловой структуры модуля, установщика, страницы настроек.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 28.01.2014 |
Размер файла | 6,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Особенностью их расположения внутри этого каталога является то, что они должны располагаться строго по тому же пути относительно каталога /bitrix/modules/kauction/, что одноименные файлы, в которых они подключаются. В этом случае подключение языковых файлов может осуществляться только функцией IncludeModuleLangFile.
Языком по умолчанию для модуля будет, являться Русский. Его идентификатор имеет значение "ru". В дальнейшем если потребуется добавить новый язык в решение, то необходимо будет просто перевести файлы из каталога /bitrix/modules/kauction/lang/ru/ в нужный язык.
Структура языковых файлов
Каждый языковой файл должен содержать в себе массив $MESS. Языковые файлы подключаются функцией GetMessage(Название ключа массива).
Пример языкового файла.
Создание списка и детального просмотра разделов
Можно выделить следующий функционал, как правило, требуемый от административной страницы со списком элементов:
1. защита страницы от несанкционированного доступа;
2. получение требуемого списка элементов, разбитого на страницы;
3. возможность сортировки списка по любому из столбцов;
4. возможность совершения групповых и одиночных действий над элементами списка;
5. обработка действий над элементами списка.
Возможности API, предназначенные для формирования административных страниц позволяют реализовать эти функции практически независимо друг от друга. Например, формирование списка таким образом, чтобы можно было обновлять список и осуществлять переход между страницами посредством AJAX без обновления остальной страницы.
Схема работы списков административного раздела
Как видно из рис., весь функционал страницы условно можно разделить на несколько составных частей:
1. Обработка и подготовка данных;
2. Создание экземпляров необходимых для работы классов;
3. Обработка действий над элементами списка;
4. Конфигурация и обработка фильтра списка элементов;
5. Выборка из БД (если требуется) и подготовка к выводу элементов списка;
6. Задание параметров таблицы элементов (в т.ч., сортировка);
7. Вывод данных;
8. Конфигурация и вывод административного меню;
9. Вывод фильтра;
10. Вывод списка.
В процессе работы потребуются экземпляры классов описанных в таблице 1:
Таблица 1
Класс |
Описание |
|
CAdminList |
Основной класс для работы со списками элементов в административной панели. |
|
CAdminResult |
Расширение класса CDBResult, предназначенное для работы со списками элементов в скриптах административных страниц. |
|
CAdminSorting |
Работа с сортировками списка. |
|
CAdminFilter |
Работа с фильтром списка. |
Для начала необходимо создать экземпляры классов CAdminList и CadminSorting:
Создание экземпляров класса CAdminList и CadminSorting
Затем необходимо определить Фильтр результатов. Для разделов фильтр результатов будет состоять из следующих параметров:
1. ID;
2. Название;
3. Код;
4. Раздел;
5. Активность;
6. Описание;
7. Кто изменил;
8. Дата создания;
9. Кто создал;
10. Сортировка;
Соответственно с этими условиями необходимо описать массив с названием полей фильтра.
Создание фильтра списка
Над элементами списка можно совершать два типа действий:
1. редактирование элементов непосредственно на странице списка;
2. групповые и одиночные действия над элементами.
Определить, что произведены действия над элементами списка можно проверив значения CAdminList::EditAction() и CAdminList::GroupAction().
Обработка действий над элементами
Групповые действия над списком разделов
Выборка списка элементов ничем не отличается от выборки в компоненте или на странице, за исключением того, что из результата выборки нужно сформировать экземпляр класса CadminResult. Выбор разделов осуществляется с помощью класса KauctionSection метода GetList().
После этого необходимо осуществить подготовку для вывода таблицы элементов. Для того чтобы сформировать таблицу элементов, нужно, во-первых, сформировать массив заголовков таблицы, а, во-вторых, отправить список в основной объект $lAdmin. Первое осуществляется посредством вызова метода СAdminList::AddHeaders(), которому передается массив колонок таблицы. Каждая колонка описывается массивом, содержащим ключи из таблицы 2.
Таблица 2
Ключ |
Описание |
|
id |
Идентификатор колонки |
|
content |
Заголовок колонки |
|
sort |
Значение параметра GET-запроса для сортировки |
|
default |
Параметр, показывающий, будет ли колонка по умолчанию отображаться в списке (true|false) |
Передача списка элементов в основной объект осуществляется следующим образом:
1. вызываем CAdminList::AddRow(). Результат метода - ссылка на пустой экземпляр класса CAdminListRow;
2. формируем поля строки, используя следующие методы класса CAdminListRow;
3. AddField - значение ячейки будет отображаться в заданном виде при просмотре и при редактировании списка;
4. AddViewField - при просмотре списка значение ячейки будет отображаться в заданном виде;
5. AddEditField - при редактировании списка значение ячейки будет отображаться в заданном виде;
6. AddCheckField - значение ячейки будет редактироваться в виде чекбокса;
7. AddSelectField - значение ячейки будет редактироваться в виде выпадающего списка;
8. AddInputField - значение ячейки будет редактироваться в виде текстового поля с заданным набором атрибутов;
9. AddCalendarField - значение ячейки будет редактироваться в виде поля для ввода даты;
10. Формируем контекстное меню для строки (CAdminListRow::AddActions()).
При формировании полей строки можно комбинировать различные методы для одного и того же поля.
Строка списка разделов аукционов
Для каждой строки есть возможность задать контекстное меню. Контекстное меню элемента задается массивом, элементы которого представляют собой ассоциативные массивы со следующим набором ключей из таблицы 3.
Таблица 3
Ключ |
Описание |
|
ICON |
Имя CSS-класса с иконкой действия. |
|
DISABLED |
Флаг "пункт меню заблокирован" (true|false). |
|
DEFAULT |
Флаг "пункт меню является действием по умолчанию" (true|false). При двойном клике по строке сработает действие по умолчанию. |
|
TEXT |
Название пункта меню. |
|
TITLE |
Текст всплывающей подсказки пункта меню. |
|
ACTION |
Действие, производимое по выбору пункта меню (Javascript). |
|
SEPARATOR |
Вставка разделителя {true|false}. При значении, равном true, остальные ключи пункта меню будут проигнорированы. |
Для каждой строки разделов аукциона добавлено контекстное меню с двумя пунктами:
1. Изменить -- ведет на детальную страницу просмотра категории аукциона;
2. Удалить -- после нажатия на этот пункт будет повторно задан вопрос о с подтверждением действия. Если действие подтвердить то строка будет удаленна без возможности ее восстановления.
Вызов контекстного меню для строки
Для завершения подготовки таблицы остается добавить к ней "резюме" и настроить групповые операции над элементами.
Резюме таблицы формируется в виде массива, элементами которого являются ассоциативные массивы с ключами "title" - название параметра - и "value" - значение параметра. Кроме того, ассоциативный массив может содержать элемент с ключом "counter" и значением true. В этом случае, элемент резюме будет счетчиком отмеченных элементов таблицы и значение будет динамически изменяться. Прикрепляется резюме вызовом метода CAdminList::AddFooter().
Список возможных групповых операций задается в виде массива элементов вида "идентификатор_операции"=>"название_операции" и прикрепляется к таблице вызовом CAdminList::AddGroupActionTable().
Для разделов аукциона добавлено 3 пункта групповых действий над элементами:
1. удаление;
2. активация;
3. деактивация.
4.
Установка групповых действий для разделов
Также можно задать административное меню, которое обычно отображается над таблицей со списком (только если у текущего пользователя есть права на редактирование). Административное меню формируется в виде массива, элементами которого являются ассоциативные массивы с ключами из таблицы 4.
Таблица 4
Ключ |
Текст пункта меню. |
|
TEXT |
Текст пункта меню. |
|
TITLE |
Текст всплывающей подсказки пункта меню. |
|
LINK |
Ссылка на кнопке. |
|
LINK_PARAM |
Дополнительные параметры ссылки (напрямую подставляются в тэг <A>). |
|
ICON |
CSS-класс иконки действия. |
|
HTML |
Задание пункта меню напрямую HTML-кодом. |
|
SEPARATOR |
Разделитель между пунктами меню (true|false). |
|
NEWBAR |
Новый блок элементов меню (true|false). |
|
MENU |
Создание выпадающего подменю. Значение задается аналогично контекстному меню строки таблицы. |
Прикрепляется контекстное меню вызовом CadminList::AddAdminContextMenu().
Для списка разделов добавлены две кнопки в административное меню:
1. Добавить Лот -- Переход на создание нового лота аукциона;
2. Добавить Категорию -- переход на создание нового раздела.
Административное меню списка разделов аукционов
На этом подготовка списка завершена. Для того чтобы обработать альтернативные методы вывода списка (обновление посредством AJAX, вывод в формате Excel) необходимо вызвать метод CadminList::CheckListMode(). Сам вывод списка осуществляется методом $lAdmin->DisplayList().
Вывод списка разделен на 2 этапа. На вывод самого списка и вывод фильтра. Для вывода фильтра требуется сперва создать экземпляр класса CAdminFilter, передав ему, список полей, а затем сформировать форму фильтра "вручную".
Фильтр списка категорий аукционов
Для просмотра, создания и редактирования используются страницы для детального просмотра. Можно выделить следующий функционал, как правило, требуемый от административной страницы редактирования:
1. защита страницы от несанкционированного доступа;
2. получение и подготовка данных формы;
3. вывод формы редактирования в удобном для пользователя виде;
4. обработка изменений данных формы с анализом ошибок.
Возможности API, предназначенные для формирования административных страниц позволяют реализовать эти функции практически независимо друг от друга. В качестве "удобного для пользователя вида" формы предлагается возможность создания форм, разбитых на страницы с динамическим переключением между ними посредством именованных закладок.
Закладки детального просмотра разделов аукционов
Как видно из схемы, весь функционал страницы условно можно разделить на несколько составных частей:
1.Обработка и подготовка данных:
1) Обработка и сохранение изменений;
2) Выборка и подготовка данных для формы;
3) Настройка интерфейса закладок и параметров административного меню страницы.
2. Вывод данных:
1) Вывод административного меню страницы;
2) Вывод сообщений об ошибках;
3) Вывод формы редактирования с метками закладок.
Схема работы детальной страницы административного раздела
В процессе работы потребуются экземпляры классов из таблицы 5.
Таблица 5
Класс |
Описание |
|
CAdminTabControl |
Класс для вывода формы, разбитой на страницы с динамически переключаемыми закладками. |
|
CAdminMessage |
Класс для работы с административными сообщениями. |
|
CAdminContextMenu |
Класс для работы с панелями административного меню действий. |
Административную форму можно разбить на страницы, переключаемые при помощи закладок. Для описания структуры закладок, нужно создать массив, элементами которого являются ассоциативные массивы, которые могут содержать ключи из таблицы 6.
Таблица 6
Ключ |
Описание |
|
DIV |
Уникальный идентификатор закладки. |
|
TAB |
Текст, помещаемый на закладку. |
|
TITLE |
Описание страницы, к которой ведет закладка. |
|
ICON |
CSS-класс иконки, выводимой рядом с описанием страницы. |
|
ONSELECT |
JavaScript-сценарий, который будет выполнен при переключении на закладку. |
Далее, нужно создать экземпляр класса CAdminTabControl и передать ему эту структуру. Для детального просмотра разделов было создано 3 вкладки:
1. Раздел -- вкладка для редактирования общих полей;
2. Анонс -- вкладка для редактирования данных анонса;
3. Подробно -- вкладка для редактирования подробных данных.
На вкладке "Раздел" происходит редактирование полей:
1. Активность;
2. Родительский раздел;
3. Название;
4. Код;
5. Сортировка;
6. Тэги;
7. Описание.
Вкладка "Раздел"
На вкладке "Анонс" происходит редактирование следующих полей:
1. Изображение анонса;
2. Описание анонса;
3. Тип описания анонса.
Вкладка "Анонс"
На вкладке происходит редактирование следующих полей:
1. Изображение детально;
2. Описание детально;
3. Тип описания детально.
Вкладка "Детально"
Обработка измененных или новых данных происходит по следующим параметрам:
1. Страница вызвана методом POST;
2. Среди входных данных есть идентификаторы кнопок "Сохранить" и "Применить".
Если эти условия соблюдены и пройдены проверки безопасности, можно сохранять переданные скрипту данные.
Если на странице присутствует параметр ID то запись будет обновлена методом Update() класса KauctionSection. Если же такого параметра не будет, то будет создана новая категория с переданными параметрами. За создание категории отвечает метод Add класса KauctionSection.
Прежде чем страница будет показана пользователю необходимо, заполнить данные по умолчанию. Все данные, полученные из БД, будут сохраняться в переменные с префиксом "str_". После этого выводим форму детального просмотра.
Для инициализации механизма закладок и вывода панели закладок следует использовать метод CAdminTabControl::Begin(). Для разделения закладок - CAdminTabControl::BeginNextTab(). Для завершения -- CadminTabControl::End().
После обработки информации необходимо выводить сообщение для пользователей об успешной или неудачной операции. В случае с введенными не корректными данными необходимо также указывать причину ошибки. За отображение таких сообщений отвечает метод CAdminMessage::ShowMessage();
Сообщение об успешной операции
Сообщение об ошибке
Создание списка и детального просмотра лотов
У каждого раздела есть обязательный пункт меню "Аукционы", который ведет на страницу со списком лотов этой категории. Страницы лотов также подразделятся на список лотов и детальный просмотр. За показ списка отвечает файл kauction_lot_list.php. Список лотов строится по полям таблицы k_auction_lots.
Доступными полями для фильтра являются следующие поля:
1. ID -- уникальный номер лота в системе;
2. Название Лота -- Текстовое название лота;
3. Код -- уникальный для каждого лота код, который может содержать в себе только символы латинского алфавита и знак подчеркивания;
4. Активность -- Выпадающий список с выбором активности лота;
5. Начало активности -- интервал даты с выбором из календаря;
6. Окончание активности -- интервал дат с выбором из календаря;
7. Минимальная ставка -- размер минимальной ставки для лота;
8. Максимальная ставка -- размер максимальной ставки для лота;
9. Начальная цена -- стартовая цена лота;
10. Фиксированная цена -- в случае если поле заполнено то лот можно будет выкупить за указанную цену не дожидаясь даты окончания торгов;
11. "Автоброкер" -- Возможность устанавливать пользователям механизм автоброкеров для данного лота;
12. Дата начала -- дата начала торгов. Лот может быть добавлен и отображен на внешней части до того как по нему начнется аукцион;
13. Дата окончания -- дата после которой к лоту больше не будут принимается ставки и аукцион будет считается завершенным. Последний кто сделал ставку будет считается победителем торгов;
14. Аукцион дня -- установка этого параметра позволит отследить наиболее значимые лоты для вывода их в значимых местах на внешней части сайта;
15. Автопродление -- Определяет возможность продления время торгов для лота. Устанавливается в настройках модуля;
16. Тип -- Список с выбором типа лота.
Контекстное меню также останется без изменения и будет содержать в себе две кнопки "Добавить лот" и "Добавить категорию".
Страница списка лотов
За детальную страницу отвечает файл kauction_lot_detail.php. Страница также разделена для удобства на вкладки:
1. Параметры лота;
2. Анонс;
3. Подробно;
4. Элементы и ставки.
Вкладки детальной страницы просмотра лота
На вкладке "Параметры лота" происходит редактирование следующих полей, которые участвуют в фильтре на странице списка лотов. Обязательными для заполнения являются следующие поля:
1. Название;
2. Дата начала аукциона;
3. Дата окончания аукциона;
4. Начальная цена.
Так же необходимо отметить, что если установлен пункт "Автоброкер" то поле "Минимальная ставка" также становится обязательным для заполнения. Это необходимо для того чтобы класс KauctionAutobroker мог корректно делать автоматические ставки. В случае если пользователь не заполнит поле "Минимальна ставка" то система сгенерирует ошибку.
Ошибка включения "Автоброкера"
Вкладки "Анонс" и "Подробно" редактируются также как и для разделов аукциона.
На вкладке "Элементы и ставки" заполняется лишь одно множественное поле "Элементы". Элементы необходимы для того чтобы была возможность к лотам привязывать элементы инфоблоков.
Любую информацию удобнее всего располагать системно, тем более однородную. Если у какой-то информации можно выделить типичные свойства, то ее размещение на сайте лучше всего реализовать с помощью специальных сущностей: информационных блоков. Это существенно сократит время, необходимое для добавления и изменения информации. Один из удобных моментов работы с инфоблоками заключается в том, что они позволяют создать иерархическую структуру, подобно той которую мы создали для модуля. За работу с информационными блоками отвечает модуль "Информационные блоки". На базе информационных блоков можно реализовать каталоги товаров, блоки новостей, справочники и т. д. Но создание аукциона только на информационных блоках приводит к сложному управлению, добавление лишней информации в системные таблицы. Вывод такой информации становится очень трудоемким процессом, который осуществляет большое количество запросов к базе данных. Стандартные компоненты и подходы не способны решить такую задачу, а изменение системных файлов или таблиц нарушает правило лицензионного соглашения с компанией "1С -- Битрикс".
В состав модуля информационных блоков входят следующие объекты:
1. типы информационных блоков;
2. информационные блоки;
3. разделы инфоблоков;
4. элементы инфоблоков.
Один из удобных моментов работы с инфоблоками заключается в том, что они позволяют создать иерархическую структуру. На верху пирамиды структуры находится тип инфоблока. Это обобщение самого высокого уровня. Чуть ниже -- инфоблоки, которых может быть много у каждого из типов инфоблоков. Каждый инфоблок позволяет создать неограниченное число разделов. Причем разделы могут иметь внутреннее вложение, а внутри каждого раздела, может быть, неограниченное количество элементов. Общая структура информационных блоков может быть представлена в виде следующей схемы:
Структура модуля Информационные блоки
Элементы инфоблоков могут содержать в себе свойства различных типов. Свойства позволяют добавлять неограниченное количество изображений, или дополнительную информацию о элементах.
Для того чтобы не реализовывать повторно механизм свойств к лотам добавлена возможность добавлять неограниченное число элементов. Также добавление элементов решит проблему составных лотов. То есть, возможно, создавать аукционы, содержащие в себе не только один товар, а несколько.
Для того чтобы добавить элемент инфоблока к лоту необходимо записать в поле "Элементы" ID элемента либо можно нажать на кнопку рядом с полем и из графического оформления и выбрать необходимый элемент.
Выбор элемента инфоблока для лота
После выбора элемента инфоблока ID и название будут автоматически подставлены в поле "Элементы".
Подставленное значение элементов инфоблока
Также на вкладке присутствует список ставок для данного лота.
Ставки для лота
Ставку можно добавить сразу из административного раздела нажав на кнопку "Добавить ставку". Ставка будет добавлена от текущего авторизованного пользователя. Класс для работы с лотами описан в приложении 5.
Создание списка и детального просмотра ставок
В меню модуля также присутствует пункт "Список ставок".
Список ставок
В списке присутствует фильтр по полям таблицы k_auction_bets. Тут можно осуществить необходимую фильтрацию, или сортировку для просмотра всех ставок. Тут можно посмотреть количество ставок за определенные периоды.
Так же отсюда можно удалить ставку либо отредактировать ее. За редактирование ставок из административного раздела отвечает файл kauction_bet_detail.php.
Поля доступные для редактирования:
1. Активность;
2. Значение.
Детальный просмотр ставки
Для детальной страницы со ставкой было реализовано контекстное меню состоящее из следующих пунктов:
1. Посмотреть лот - является ссылкой на страницу с детальным просмотром лота которому принадлежит эта ставка;
2. Добавить ставку -- отправляет на страницу добавления ставки для того же лота к которому принадлежит текущая просматриваема ставка;
3. Удалить -- кнопка для удаления ставки.
Контекстное меню для детального просмотра ставки
Создание списка и детального просмотра типов аукционов
В меню модуля также присутствует пункт "Типы Аукционов", который ведет на просмотр всех доступных типов аукционов. По умолчанию установщик модуля создает два типа:
1. Открытый;
2. Закрытый.
В дальнейшем эти типы будут менять отображения на внешней части. Открытый тип позволяет просматривать информацию о пользователях, которые сделали ставки. Закрытый тип скрывает эту информацию. Можно добавлять свои типы для аукционов и дописывать свою логику в шаблонах компонентов для внешней части.
Список типов аукционов
Типы имеют следующие поля:
1. ID -- Идентификатор типа;
2. NAME -- Название типа;
3. SORT -- индекс сортировки.
Редактирование типов осуществляется на странице kauction_type_detail.php
Детальный просмотр типа
Страница имеет лишь одну вкладку "Параметры" на которой и происходит редактирование всех полей.
После редактирования или добавления нового типа список с возможностью выбора типов на странице детального просмотра лота будет обновлен и появится возможность выбрать новый тип.
Выбор нового типа аукциона
В контекстное меню добавлена одна кнопка "Список типов", которая служит для перехода обратно на страницу со списком типов аукциона.
Контекстное меню детальной страницы типов аукциона
Для редактирования существующих типов в контекстное меню будут добавлены еще две кнопки "Добавить" и "Удалить"
Добавленные кнопки в контекстное меню страницы типов
Создание списка и детального просмотра автоброкеров
В меню модуля присутствует пункт "Автоброкеры". Автоброкер -- это специальный функционал, за который отвечает класс KauctionAutobroker. Автоброкер позволяет устанавливать участникам аукционов придел допустимых ставок. Если на лот совершается ставка и к лоту существуют автоброкеры, величина которых больше чем поставленная ставка, то механизм автоброкера сделает автоматическую минимальную ставку к лоту. Пример: Существует лот с начальной ценой в 1000 руб. Минимальная ставка для лота 500 руб. Пользователь устанавливает на него "Автоброкер" величиной 5000 руб. После установки "Автоброкер" автоматически поставит на лот минимальную ставку и установит цену лота в 1500 руб. Если другой пользователь добавит ставку в 2000 руб то "Автоброкер" автоматически поставит ставку в 2500 руб. Если цена лота дойдет до 5000 руб и какой-либо пользователь поставит ставку выше то "Автоброкер" будет автоматически удален. Таким образом, "Автоброкер" позволяет устанавливать допустимую цену за лот самим участникам торгов.
За страницу со списком автоброкеров отвечает файл kauction_autobroker_list.php. Список автоброкеров состоит из следующих полей:
1. ID -- уникальный номер автоброкера;
2. Номер лота -- номер лота, к которому установлен "Автоброкер";
3. Создал -- Ссылка на пользователя создавшего данный "Автоброкер";
4. Дата создания -- дата, когда был создан "Автоброкер";
5. Значение -- величина, до которой "Автоброкер" будет участвовать в торгах;
6. Активность -- определяет активный ли "Автоброкер" в данный момент. Не активные автоброкеры не участвуют в торгах.
Список автоброкеров
Нельзя создать два автоброкера от одного пользователя к одному и тому же лоту. Также нельзя добавить "Автоброкер" к тем лотам, у которых отключена опция "Автоброкер". При попытки создать "Автоброкер" второй раз произойдет ошибка, и система покажет ошибку. Сама же ошибка будет содержаться в свойстве LAST_ERROR класса KauctionAutobroker. Класс KauctionAutobrokerAll находится в приложении 6.
Ошибка добавления автоброкера
Редактирование и создание автоброкеров в административной части осуществляется за счет файла kauction_autobroker_detail.php. Редактирование осуществляется на одной вкладке "Автоброкер" и содержит в себе следующие поля:
1. Активность;
2. Значение;
3. ID лота.
Остальные поля такие как "Создан" или "Изменил" система подставит автоматически.
Редактирование автоброкера
3.4 Внешняя часть
За работу внешней части в CMS “1C-БИТРИКС” отвечаю "Компоненты". Компоненты являются блоками, с помощью которых строится публичная часть сайта. Они в полной мере реализуют паттерн проектирования Carrier Rider Mapper.
Carrier - Носитель любой информации, к которой могут иметь доступ несколько клиентов одновременно.
Rider - Rider - (Reader либо Writer) - объекты, посредством которых Carrier предоставляет доступ к хранимой в нём информации. Клиенты считывают и записывают информацию, хранимую в Carrier исключительно только посредством объектов типа Reader и Writer. Таким образом, Reader и Writer - интерфейсы доступа к информации.
Mapper - (Scanner либо Formatter) - объекты обёртки над Reader либо Writer соответственно. Мапперы отвечают за преобразование форматов данных в удобные для клиентов форматы.
Поток информации от носителя к клиенту (считывание): Carrier -> Reader -> Scanner -> Client.
Поток информации от клиента к носителю (запись): Carrier <- Writer <- Formatter <- Client.
Введение прослойки мапперов между Carrier-Rider и клиентами позволяет соединять один и тот же Carrier-Rider с разными типами клиентов посредством соответствующих мапперов.
Компоненты позволяют повторно использовать единожды написанный и отлаженный код в рамках одного сайта или на разных сайтах. Визуальные средства среды "1С-Битрикс" позволяют размещать и настраивать компоненты без написания кода. Поставляемые с продуктом системные компоненты регулярно обновляются. Также возможно осуществлять компоненты через маркетплэйс.
В компонентах могут быть разделена логика и представление. Для одной логики может быть несколько представлений, в том числе зависящих от шаблона текущего сайта. Представление (шаблон вывода) может быть написан на любом шаблонном языке, который можно подключить из PHP. Например, шаблоны могут быть на PHP, Smarty, XSL и т.д. Нет необходимости изменять логику компонента для изменения особенностей его показа. Шаблон вывода существенно проще, чем компонент в целом.
Логика - это сам компонент, представление - это шаблон вывода компонента.
Компоненты централизованно хранятся в одной папке. Это обеспечивает большую целостность и понятность структуры сайта. Папка доступна для обращений, а значит, компонент и его шаблоны могут легко подключать свои дополнительные ресурсы.
Компонент хранит все, что ему нужно для работы, в своей папке. Поэтому компоненты можно легко переносить между проектами. Компонент неделим.
Все компоненты находятся в папке /bitrix/components/. Системные компоненты находятся в папке /bitrix/components/bitrix/. Содержимое этой папки обновляется системой обновлений и не может изменяться пользователями.
Пользовательские компоненты могут находиться в любых других подпапках папки /bitrix/components/ или прямо в папке /bitrix/components/.
Название подпапки директории /bitrix/components/ образует пространство имен (namespace) компонентов. Например, все системные компоненты расположены в пространстве имен bitrix. При создании пользовательских компонентов рекомендуется создать какое-либо пространство имен и размещать пользовательские компоненты в нем.
Например, существует системный компонент catalog, который расположен в пространстве имен bitrix. Если необходим пользовательский компонент catalog, который имеет другую функциональность, не реализуемую с помощью шаблона системного компонента, то рекомендуется создать некоторое пространство имен (подпапку) в папке /bitrix/components/ (например, mycompany) и расположить пользовательский компонент catalog в этом пространстве имен. Таким образом, будут доступны два компонента catalog, но лежащие в разных пространствах имен: "bitrix:catalog" и "mycompany:catalog". Поэтому для хранения компонентов был создан отдельный namespace и назван по ID модуля.(kauction).
Файлы и папка компонента описаны в таблице 7.
Таблица 7
Папка/Файл |
Назначение |
|
help |
В папке help расположены файлы помощи компонента. Здесь находятся подпапки с именами, равными кодам языков. В них, в свою очередь, находятся файлы index.php, которые являются главными файлами помощи данного компонента для данного языка (и, возможно, другие файлы). Например, путь к файлу помощи для английского языка будет иметь вид /help/en/index.php (относительно папки компонента). |
|
install |
Здесь располагаются скрипты инсталляции и удаления компонента. Скрипт инсталляции должен иметь имя install.php, а скрипт для деинсталляции - uninstall.php. Подпапка install может отсутствовать. |
|
lang |
Папка lang содержит подпапки с именами, равными кодам языков, в которых находятся файлы языковых сообщений (переводов) компонента. Рекомендуется называть файл языковых сообщений для какого-либо файла компонента так же, как называется компонент и помещать его в той же иерархии относительно папки /lang/код_языка/, в которой файл распологается относительно папки компонента. Например, языковой файл с английскими фразами для файла /install/uninstall.php рекомендуется распологать по пути /lang/en/install/uninstall.php. Подпапка lang может отсутствовать, если в компоненте нет зависящих от языка фраз. |
|
Templates |
Здесь содержатся шаблоны вывода (отображения) компонента. Подпапка templates может отсутствовать, если у компонента нет шаблонов вывода. |
|
component.php |
Содержит логику (код) компонента. Этот файл должен всегда присутствовать в папке компонента. |
|
description.php |
Содержит название, описание компонента и его положение в дереве логического размещения (для визуального редактора). Этот файл должен всегда присутствовать в папке компонента. |
|
parameters.php |
Содержит описание дополнительных входных параметров компонента для визуального редактора. Если у компонента есть входные параметры, то этот файл должен присутствовать в папке компонента. |
В файле description.php содержится описание компонента. Это описание применяется для работы с компонентом из среды "Битрикс", а также при работе в режиме редактирования сайта. При работе самого компонента (при обращении к странице, на которой расположен компонент), описание не используется и файл .description.php не подключается.
Файл .description.php должен находиться в папке компонента. Языковой файл подключается автоматически (должен лежать в папке /lang/<язык>/.description.php относительно папки компонента).
В файле .parameters.php содержится описание входных параметров компонента. Это описание применяется для работы с компонентом из среды "Битиркс" (например, в визуальном редакторе), а так же при работе в режиме редактирования сайта. При работе самого компонента (при обращении к странице, на которой расположен компонент), описание не используется и файл .parameters.php не подключается.
Данные .parameters.php нужны исключительно для создания формы ввода свойств компонента в среде "Битрикс" (например, в визуальном редакторе).
Файл .parameters.php должен находиться в папке компонента. Языковой файл подключается автоматически (должен лежать в папке /lang/<язык>/.parameters.php, относительно папки компонента).
Шаблоны компонента делятся на системные и пользовательские. Системные шаблоны поставляются вместе с компонентом и лежат в подпапке templates папки компонента. Пользовательские шаблоны компонента - шаблоны, которые изменены под нужды конкретного сайта. Пользовательские шаблоны компонентов должны лежать в папках шаблонов сайтов (т.е. в /bitrix/templates/шаблон_сайта/). Шаблоны компонента определяются своими именами. Шаблон по умолчанию имеет имя .default. Если не указывается имя шаблона, вызывается шаблон по умолчанию. Остальные шаблоны могут называться произвольно, например table. Шаблоны компонента могут быть папками или файлами. Если шаблон представляет собой единственный файл и ему не требуется перевод на другие языки, собственные стили и прочие ресурсы, такой шаблон можно расположить в файле.
Создание компонента списка разделов аукционов
Компонент список разделов аукционов (kauction:kauction.section.list) выводит данные о разделах. Параметры для компонента описаны в фале .parameters.php.
Параметры компонента делятся на вкладки:
1. Шаблон компонента;
2. Управление адресами страниц;
3. Настройки кэширования;
4. Дополнительные настройки;
5. Основные параметры;
6. Настройки постраничной навигации.
Параметры компонента "Список разделов аукционов"
Компонент выбирает категории в зависимости от переданных ему параметров и подготавливает к выводу. Список разделов получает класс KauctionSection методом GetList(). Установка компонента осуществляется из визуально редактора страницы.
Список компонентов в визуальном редакторе
Стандартный шаблон для вывода информации использует Twitter Bootstrap. Для подключения Bootstrap отвечает функция KauctionMain::includeBootstrap(); Количество показываемы полей и информации можно изменить, создав новый шаблон. Шаблон по умолчанию выводит изображение анонса и ссылку на родительский раздел.
Шаблон компонента "Список разделов аукционов"
Также компонент разбивает разделы для постраничной навигации. Шаблоны постраничной навигации можно указать в параметрах компонента. Шаблон по умолчанию использует стандартный шаблон для постраничной навигации.
Стандартный шаблон постраничной навигации
Создание компонента списка лотов раздела
Компонент список лотов раздела (kauction:kauction.auction.section.list) выводи информацию о лотах раздела. Информацию о том, с какого раздела выводить лоты по умолчанию компонент получает из переменной $_REQEST['SECTION_ID']. Название переменной можно изменить в параметрах компонента либо указать ID раздела.
Компонент также отображается в списке компонентов раздела "Аукцион" в визуальном редакторе.
Параметры компонента также разбиты на подразделы. В параметрах указывается такая информация как поддержка ЧПУ, постраничная навигация и т. п.
Параметры компонента Список лотов раздела
Компонент выбирает лоты в зависимости от переданных ему параметров. За выборку лотов отвечает метод GetList() класса KauctionLot.
Список лотов также содержит постраничную навигацию и использует стандартный шаблон для ее вывода. Параметры компонента позволяют менять шаблон навигации на любой имеющийся в системе.
Визуальный редактор с установленным компонентом
В шаблоне по умолчанию выводится следующая информация о лотах:
1. Текущая цена лота;
2. Цена лота с учетом всех ставок на данный момент;
3. Изображение привью;
4. Название лота;
5. Описание анонса;
6. Возможность установки автоброкера;
7. Дата завершения аукциона;
8. Количество ставок.
Для визуального оформления также используется Twitter Bootstrap.
Стандартный шаблон для компонента "Список лотов раздела"
Кнопка "Подробнее" в компоненте ведет на страницу с детальным просмотром лота. Также название и картинка анонса являются ссылками на страницу детального просмотра лота.
Создание компонента детально просмотра лота
Компонент выбирает информацию о лоте в зависимости от параметров, которые ему переданы.
По умолчанию компонент получает информацию о лоте из переменной $_REQUEST['ID']. Также можно передавать в переменную значение поля "Код". Если элемент найден, то компонент подготовит данные и передаст их в шаблон компонента для дальнейшего вывода. Если же компонент не найдет лот то существует параметр "Устанавливать статус 404, если не найдены элемент или раздел". Если параметр активен и элемент не удалось найти, то компонент установит статус 404 в ответе HTTP запроса. Дальше в зависимости от настроек CMS будет выполнен либо переход на страницу с ошибкой либо показ пустой страницы. Такой параметр необходим для поисковых роботов.
Параметры компонента детального просмотра лота
Шаблон по умолчанию выводит информацию о лоте более детально, чем в компоненте "Список лотов раздела". Будет показана следующая информация:
1. Детальное изображение;
2. Детальное описание;
3. Дата начала аукциона;
4. Дата окончания аукциона;
5. Текущая цена;
6. Минимальная ставка(если установлена);
7. Начальная цена;
8. Автопродление.
Шаблон компонента детального просмотра лота
В зависимости от того авторизован текущий пользователь или нет будет показана панель возможных действий для лота. Панель включает в себя возможность совершить следующие действия:
1. Установить/Удалить автоброкер;
2. Сделать ставку;
3. Купить по фиксированной цене.
Если аукцион завершен, то панель не будет показана.
Панель действий для компонента детального просмотра лота
Для того чтобы установить автоброкер необходимо указать значение автоброкера и нажать на кнопку "Автоброкер". Компонент обработает данные и выведет результат операции сразу после панели действий.
Установка автоброкера
Если автоброкер для текущего лота от текущего пользователя уже установлен то действие будет изменено на возможность удалить автоброкер с указанием его величины.
Удаление автоброкера
Результат обработки данных
Для того чтобы добавить ставку необходимо указать величину ставки и нажать на кнопку "Сделать ставку". По умолчанию величина ставки подставляется как текущая цена плюс минимальная ставка.
Добавление ставки
Ставка будет обработана и компонент выведет уведомление либо о успешном добавлении ставки либо об ошибки.
Ошибка добавления ставки
Если в у лота установлена фиксированная цена то в панели действий будет отображена возможность совершить покупку за фиксированную цену. При этом аукцион будет завершен. Аукцион будет помечен как завершенный. Код компонента находится в приложении 7.
Фиксированная цена
Покупка по фиксированной цене
Создание компонента списка ставок для лота
Для отображения списка также используется компонент. Логику отображения ставок можно было бы добавить в компонент отображения лота детально, так как на первый взгляд список ставок не используется нигде кроме как совместно с лотом, но с помощью компонента также можно вывести статистику ставок за определенный период. Поэтому было решено разделить логику на два компонента.
Компонент выводит ставки в виде списка в зависимости от переданных в него параметров.
Параметры компонента "Список ставок для лота"
Шаблон по умолчанию выводит информацию в виде таблицы. Компонент учитывает тип лота. И в зависимости от установленного типа выводит таблицу со ставками и авторами ставок. Если лот имеет "Открытый" тип то логин автора ставки не скрывается. Если же тип "Закрытый" то логин будет выглядеть как "******".
Ставки для лота с открытым типом
Ставки для лота с закрытым типом
В компоненте присутствует постраничная навигация. По умолчанию она скрыта и показывается последние десять ставок. Код компонента списка ставок находится в приложении 8.
ЗАКЛЮЧЕНИЕ
В ходе выполнения дипломной работы был получен модуль для CMS "1С-Битрикс", готовый к применению. Данный модуль ориентирован на создание интернет аукционов. С его помощью люди могут устраивать аукционы на свою продукцию или услуги. Гибкий процесс ставок с помощью автоброкеров позволят пользователям не находится постоянно в сети и отслеживать ставки. Благодаря фиксированной цене пользователи смогут приобретать лоты не дожидаясь завершения аукциона. Аукционы можно ограничивать минимальными и максимальными ставками, что позволит выбрать наилучшее увеличение цены лота. Различные типы позволят настроить отображение под любые необходимости. Привязка к лотам и знакомый всем интерфейс CMS "Битрикс" позволит быстро разобраться с работой аукциона даже новичку.
При разработке модуля были проанализированы современные бесплатные и платные CMS, позволяющие создавать различные виды аукционов. Наиболее подходящей для выполнения поставленных задач оказалась CMS "Битрикс", для которой мы разработали модуль, с помощью языка программирования PHP и визуального оформления Twitter Bootstrap.
Перед созданием модуля были проведены маркетинговые исследования, результат которых помог выяснить, какой спрос в Интернете на предлагаемый модуль, анализ разработок у конкурентов, извлечь дополнительную информацию о товарах продаваемых через аукционы, статьях, представляющей интерес для потенциального покупателя.
Благодаря существованию таких площадок как "1C-Битрикс: Маркетплэйс" существует возможность неоднократной продажи данного модуля. Объем роста таких площадок показал, что отрасль в этом направлении только развивается, но уже достигает отличных результатов, отсутствие конкуренции на подобные решения позволяет полагать что модуль, станет популярным среди малого и среднего бизнеса, среди компаний, которые не могут потратить большие суммы денег для развития аукционов, а также свободных фрилансеров, либо художников. Степень риска для реализации аукциона с помощью данного модуля минимальна, так как нет необходимости платить деньги за разработку.
На языке программирования PHP были написаны важные для модуля элементы, такие как классы работы с модулем, административные разделы и скрипты, внешняя часть сайта в виде компонентов и шаблонов по умолчанию для них.
Таким образом, для разработки модуля "Аукцион" были выбраны эффективные технологии его создания, найдено решение поставленных задач, а именно простой и понятный интерфейс в рамках CMS "Битрикс", возможность создавать составные лоты из нескольких элементов, связывание элементов и лотов дает большую гибкость для работы с любым видом аукционов, не меняя системные файлы CMS и также упрощает дальнейшую поддержку или обновление модуля.
Выпускная квалификационная работа выполнена полностью в соответствии с предъявляемыми требованиями, и заслуживает оценки "отлично".
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Основные возможности Bitrix Framework. http://dev.1c-bitrix.ru/api_help/index.php.
Учебный курс Контент-менеджер. http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=34
Учебник по PHP. Самоучитель, справочник PHP. http://www.softtime.ru/bookphp/ (5 апр.2010)
Bootstrap - Простой и легко настраиваемый HTML, CSS, и Javascript инструментарий. http://bootstrap.veliovgroup.com/
Боровой А.С. Базовый экспресс по созданию сайтов. СПб.: БХВ - Петербург, 2009. - 896 с.
Боровой А.С. Все для создания сайта своими руками. СПб.: БХВ - Петербург, 2008. - 352 с.
Вэлайд Д. PHP для чайников. Изд.: Диалектика, 2009. - 320 с.
Гутман С., Бакен И., Ретанс А. PHP профессиональное программирование. Изд.: Символ - Плюс,2008. - 704 с.
Дранов В.А. PHP, Mysql и Dreamweaver MX 2004, разработка интерактивных сайтов. СПб.: БХВ - Петербург, 2009. - 448 с.
Дунаев В.В. сценарий для веб - сайтов, php и Javascript/ Изд.: BHV - СПб, 2008. - 576 с.
Колиниченко Д.Н. Движок для вашего сайта. Изд.: Диалектика, 2008. - 368 с.
Кузняцов И., Симдянов И., Голышев С. PHP на примерах. СПб.: БХВ - Петербург, 2009. - 576 с.
Марсен Е., Кент П., Новицки П. PHP для начинающих. Изд.: Диалектика,2008. - 507 с.
Мейер Э. CSS - каскадные таблицы стилей. Изд.: Символ - Плюс, 2008. - 876 с.
Новицки П. Создание веб - сайтов без посторонней помощи. Изд.: Триумф, 2009. - 464 с.
Сегаран Т. Программируем коллективный разум. Изд.: Символ - Плюс, 2008. - 368 с.
Симдянов И. Практика создания веб - сайтов. СПб.: БХВ - Петербург, 2008. - 1264 с.
Скляр Д. PHP сборник рецептов. Изд.: Символ - Плюс, 2009. - 1020 с.
Спольни Д. Джоэл о программировании. Изд.: Символ - Плюс, 2008. - 352 с.
Томсон Л., Веллинг М. Разработка веб - приложений на php и MYsql. Изд.: ООО "ДиаСофтЮП", 2010. - 672 с
Размещено на Allbest.ru
...Подобные документы
Обзор и сравнительный анализ современных методов и инструментов для разработки Web-сайтов. Разработка модели сайта, его структуры с использованием современных программных средств разработки. Определение экономической эффективности от его внедрения.
дипломная работа [1,4 M], добавлен 21.06.2013Значение и обзор современных средств веб-программирования на основе языков четвертого поколения. Технологические особенности разработки структуры сайта Интернет-магазина средств связи. Способы форматирования контента, систем навигации и дизайна сайта.
контрольная работа [3,2 M], добавлен 15.02.2011Аппаратные и программные средства для разработки веб-сайта. Ознакомление с характеристиками мобильных устройств фирмы Nexus. Установка логотипа сайта. Создание главной страницы. Активация слайдера и панели виджетов. Конфигурирование настроек слайдера.
дипломная работа [11,2 M], добавлен 10.10.2016Обзор средств программирования. Описание и свойства языка Delphi. Основания для разработки, ее назначение, предъявляемые требования, стадии разработки. Описание схемы основного модуля, процедур, программы. Используемые технические и программные средства.
курсовая работа [42,8 K], добавлен 25.02.2012Анализ существующего программно-аппаратного комплекса. Обоснование необходимости разработки интерактивного Интернет-сайта. Постановка комплекса задач разработки. Выбор инструментальных программных средств. Проектирование пользовательского интерфейса.
дипломная работа [2,0 M], добавлен 30.01.2017Проектирование книжного интернет-магазина для реализации книжной продукции через Интернет. Анализ и обоснование выбора языков программирования и средств разработки сайта. Затраты внедрение сайта, его программное обеспечение, тестирование и отладка.
дипломная работа [2,1 M], добавлен 06.06.2013Анализ функционирования интернет-сайтов по предоставлению услуг. Обзор методологий проектирования интернет-представительства. Инструментальные средства разработки и реализации системы управления сайтом. Разработка интерфейса пользователя и web-сайта.
дипломная работа [1,2 M], добавлен 03.08.2014Обоснование выбора средств разработки сайта. Программа Microsoft Office FrontPage 2003, характеристика и принцип работы. Разработка структуры сайта, его реализация и создание элементов дизайна. Наиболее употребляемые теги языка HTML. Листинг HTML-кода.
курсовая работа [1,7 M], добавлен 08.03.2011Исследование организационной структуры ООО "Трансэнергосервис". Обзор методологий проектирования интернет-представительства. Инструментальные средства разработки и реализации системы управления сайтом: разработка интерфейса пользователя и web-сайта.
дипломная работа [1,7 M], добавлен 10.08.2014Обоснование выбора средств разработки. Алгоритм загрузки изображения на сервер. Модуль авторизации в административной панели сайта. Хранение данных в базе данных. Работа с локальными и удалёнными файлами. Тестирование работы программного средства.
курсовая работа [1,3 M], добавлен 18.04.2018Обзор технологий и современного рынка облачных сервисов. Выбор средств разработки информационной системы. Создание базы данных и прототипа приложения. Обоснование экономической эффективности внедрения разработанной системы учета заказанных товаров.
курсовая работа [537,5 K], добавлен 23.08.2015Методы косвенного анализа структуры знаковых последовательностей на основе состава. Анализ строя цепей событий. Выравнивание аминокислотных и нуклеотидных последовательностей. Обоснование выбора средств разработки. Программные средства разработки.
дипломная работа [3,2 M], добавлен 21.06.2013Задачи, которые решают интернет-ресурсы. Классификация интернет-рекламы. Обзор существующих Web-технологий. Язык разработки сценариев PHP. Технология построения интерактивных документов DHTML. Средства и технологии для разработки интернет-ресурса.
дипломная работа [1,5 M], добавлен 22.11.2015Экономическая сущность создания Web-представительства, общая характеристика и этапы данного процесса. Выбор политики рекламы сайта при его размещении в интернет. Обоснование экономической эффективности разработки сайта центральной районной больницы.
дипломная работа [1,9 M], добавлен 27.08.2015Требования к функциональным характеристикам сайта. Готовые страницы с обработанной и представленной в удобном для пользователя виде входной информацией. Обоснование выбора среды разработки. Расчет себестоимости проектирования программы, виды затрат.
дипломная работа [872,9 K], добавлен 13.05.2017Психолого-педагогические основы формирования системно-деятельностного подхода обучения. Обзор существующих конструкторов сайтов, обоснование выбора сервиса Wix. Ознакомление обучающихся с правилами безопасности в сети Интернет. Технологии создания сайтов.
дипломная работа [428,9 K], добавлен 07.09.2017Технико-экономическое обоснование разработки Интернет-сайта адресно-телефонного справочника "Spravka.kz". Основные характеристики пакета "Денвер"; создание базы данных phones. Архитектура и интерфейс web-сайта. Размещение Google Maps на интернет-странице.
дипломная работа [2,0 M], добавлен 24.03.2014Основные технологии разработки ресурсов Интернет. Процесс разработки веб-сайта. Понятие Web-сайта и классификация Web-сайтов. Основные этапы разработки Web-сайта. Использование HTML, CSS, JavaScript, FLASH, PHP и реляционной базы данных MySQL.
презентация [1,3 M], добавлен 28.11.2015Особенности разработки кода программного модуля на современных языках программирования. Отладка и тестирование программы, оформление документации на программные средства. Применение инструментальных средств для автоматизации оформления документации.
отчет по практике [203,8 K], добавлен 12.04.2015Схема работы такси ОАО "Альянс". Логическая и физическая модель построения данных, обзор существующих аналогов. Порядок создания соответствующих форм, их основное содержание. Средства разработки и проектирования, принципы и обоснование их выбора.
презентация [1,7 M], добавлен 22.07.2014