Электронная приемная/очередь на базе DLE. Разрабатывалась очередь для записи на прием к специалисту(врач, юрист, т.д.) обычного гражданина прошедшего регистрацию на сайте.
Требования к электронной очереди
1. Отображение расписания в виде 5-7 дней, пропуская выходные дни (субботу, воскресенье).
2. Показ в расписании количество свободных временных зон, для каждого дня приема (т.е. количество ячеек для записи на каждую дату в расписании).
3. Если человек уже записался, то при переходе в расписание выводить уведомление, о том на какую дату он записался и на какое время.
Если человек записался ошибочно он может аннулировать запись.
4. Граждане указывают ФИО, дату рождения и вопрос по которому они хотят обратиться к своему специалисту.
5. Создать ссылку на просмотр своей очереди для гражданина в профиле пользователя.
6. Создать ссылку на просмотр очереди для администратора/специалиста (отчет).
Подготовка движка DLE
1. Создаем категорию для записей «Категория для записи«.
В данную категорию будут добавляться новости, каждая новость это запись на прием к специалисту. Один пользователь может оставить только одну запись.
2.Разрешаем исполнение PHP кода в шаблоне DLE
Для этого в файле index.php меняем это:
[php] echo $tpl->result[‘main’];[/php]
на это:
[php] eval (‘ ?’ . ‘>’ . $tpl->result[‘main’] . ‘<' . '?php '); [/php]3. Создаем файл конфигурацией «config.php«
Файл «config.php» создаем в корне сайта, служит он для подключения к БД внутри нашего шаблона.
Вот его примерное содержание:
[/php]
Потом мы будем используя переменную $db1 получать доступ к базе.
3. Создаем дополнительные поля для категории и профиля пользователя.
Для категории «Категория для записи» созданы 4 дополнительных поля:
— time (тип поля:Список) Для хранения времени на которое человек записался.
— fio (тип поля:Одна строка) Для хранения ФИО человека. Т.к. прием вдется по записи, специалист сам будет вызывать гражданина на прием.
По этому пользователь будет заинтересован указать верные данные.
— dr (тип поля:Одна строка) Дата рождения пользователя.
— vopros (тип поля:Список) Список вопросов по которым пользователь может записаться. Это нужно для того чтобы специалист уже знал с каким вопросом к нему придет гражданин.
Он заранее подготовит информацию и документы для приема, что сократит время приема.
Для профиля пользователя созданы 4 дополнительных поля:
Думаю описывать их не стоит.
— familiya (тип поля:Одна строка) Фамилия
— imya (тип поля:Одна строка) Имя
— otchestvo (тип поля:Одна строка) Отчество
— datadr (тип поля:Одна строка) Дата рождения
4. Меняем стандартный вывод сообщений DLE.
После добавления новости/записи DLE выводит:
Новость добавлена.
Ваша статья была успешно добавлена в базу данных. Добавить еще или Вернуться назад.
Данный вывод нас не устраивает.
Меняем его в файле website.lng он находиться в папке: www\language\Russian\
Вот пример как можно изменить вывода текста:
Меняем:
[/php]
на:
[php] ‘add_ok_1’ => «Ваши данные успешно добавлены в базу данных.»,[/php]
Текст «Добавить еще или Вернуться назад.» меняется в addnews.php.
Меняем
else msgbox( $lang[‘add_ok’], «{$msg} $lang[add_noch] $lang[add_or] $lang[all_prev]» );
[/php]
на
[php] msgbox( ‘Спасибо.’, «{$msg} $lang[all_prev]» );[/php]
В итоге после добавления новости/записи получаем сообщение:
Спасибо.
Ваши данные успешно добавлены в базу данных. Вернуться назад
5. Меняем профиль пользователя.
В место имени которое вверху, надо вывести ФИО и дату рождения.
Все данные находятся в доп. полях {xfields}.
Переносим тег {xfields} наверх в файле userinfo.tpl.
А само поле имя скрываем чтобы не вводить пользователя в заблуждение.
[/html]
6. При регистрации пользователя выводим поля ФИО в самом верху.
Делается аналогично как и с профилем:
Переносим {xfields} в самое начало файла registration.tpl.
7. Строим расписание (самое сложное).
Делается это в другой категории допустим «Расписание«.
Для нее создается путем копирования и переименования файл шаблона короткой новости(short-story).
Назовем его «ss_raspisanie.tpl«. В нем будет php код для создания расписания.
Добавляем новость в данную категорию. (текст новости любой).
Примерная схема изменения шаблона:
Убираем все ненужные теги в нем.
Можно сделать это вот так:
Подключаем в самом начале наш файл конфига.
[/php]
Строим массив дат на 7 дней вперед.
Далее узнаем текущий день с помощью PHP.
Потом строим расписание. Для этого перебираем массив дат и делаем запрос, где указываем в качестве условия имя автора поста и дату для выборки из поля TITLE.
— Имя берем из массива $member_id;
примерно так:
[/php]
— Дату из ранее построенного массива дат например $date[0];
Если новости/посты/записи найдены то выводим их пользователю. (здесь вы можете сделать обработку для показа уже занятого времени/мест)
Дата при добавлении новости заносится в TITLE. Так проще делать выборку и перебирать новости/записи за какое либо число.
Примерный запрос на выборку может выглядить так:
[php] $res = mysql_query(«select * from `».$database.»`.`».$db_pefix.»post` where `category`=\»».$id_(котегории для записей).»\» and `title`=\»».$date.»\» and `autor`=\»».$member_id[‘name’].»\»;»,$db1);[/php]
Если пользователь еще не записался, даем ему такую возможность. (вы можете вывести сообщение о том что пользователь уже записался, и если он хочет, то может аннулировать запись.)
Если на какой либо день есть свободное время, то подсвечиваем URL для добавления новости/записи. (В моем случаи это просто знак плюс).
URL будет вести на страницу добавления новости в DLE. addnews.tpl.
В месте с URL /index.php?do=addnews мы будем передавать еще ряд параметров.
1. Дату на которую пользователь пожелал записаться(она пойдет в заголовок title новой записи)
2. ID категории для записи. Так мы сможем вывести только ту категорию которая нам нужна, а не весь список доступных категорий, как это зачастую видно при добавлении новостей в DLE.
Вот примерный URL для добавлении записи в расписание:
[/html]
8. Меняем страницу добавления новости/записи addnews.tpl
Подключаем в самом начале наш файл конфига.
[php] include ('raspisanie.php'); ?>[/php]
Переданные ранее параметры принимаем через $_GET[‘variable’] или POST, кому как нравится.
Убираем галочки при добавлении новости(Разрешить комментарии, Публиковать на главной,Опубликовать на сайте без модерации,Разрешить рейтинг статьи,Зафиксировать на сайте) Они просто не нужны.
Для этого просто скройте данные чекбоксы используя CSS style=»display: none;».
Для заполнения фамилии я использовал фунцию для выборки из поля xfields нужного мне значения. (она идет в виде бонуса к статье).
Как известно доп. поля имеют вид: field1|Value1||field2|Value2
Данная функция вынимает данные по имени поля.
Вот пример заполнения поля ФИО в форме добавления новости ADDNEWS.TPL
[html]» id=»xfield[fio_invite]» name=»xfield[fio_invite]»>
9. Делаем ссылку на свою электронную очередь в профиле.
Открываете файл Login.tpl и меняете:
[html]на
[html]Для отображения очереди пользователя, также создается категория в нее добавляется новость и назначается шаблон. В шаблоне в с помощью PHP,
Вы вынимаете данные из базы и отображаете пользователю дату(Title/заголовок новости которую он добавил) и время на которое он записался.
Примерно так:
[/php]
Показать можно так:
[php] echo get_values_from_xfields(res[‘xfields’],»time»);[/php]
10. Затем, если вам нужно анулировать какую либо запись.
Создаете категорию в ней добавляете новость. И назначаете шаблон.
В шаблоне используйте PHP код для удаления новостей для данного пользоваталя
Примерный код для удаления публикаций:
[/php]
не забыв добавить
[php] include ('raspisanie.php');?>[/php]
в начале шаблона.
11. Как построить отчет для админа.
Просто создать еще одну категорию. Добавить туда новость любую. А в шаблоне вывода новости сделать обработку вывода данных.
Например :
[/html]
Вот в принципе и все.
От автора(acid)
Пишу я это все для того, чтобы показать, что на движке DLE можно реализовать практичеки любую задачу.
Пишите, на все вопросы отвечу и проконсультирую. К сожалению не весь програмный код могу выложить. Но обьяснить где и что изменить или взять, подскажу.
Bonus: Это фунция для выборки значения поля по его имени.
[php] function get_values_from_xfields($xfields,$xfield_name){$array_xfields=array(); //определем массив
$array_x1=explode(«||»,$xfields); //режем поля на составные имя|знач||имя|знач
for ( $i=0; $i<=count($array_x1); $i++){ $array_x2=explode("|",$array_x1[$i]); //режем внутренние данные полей $array_xfields[$array_x2[0]]="".$array_x2[1].""; //асоциативный массив для выборки из него нужного поля по его наименовнаию } //проверяем нашли мы или нет поле if (!empty($array_xfields[$xfield_name])){ return $array_xfields[$xfield_name]; //возвращаем значение поля } else{ return null; } } [/php] Реализовывайте и делитесь впечатлениями. Данная разработка внедрена на сайте УСЗН города Серова.
PS:
Обсудить данную разработку можно на моем форуме acid.name
Заказ(покупка) электронной очереди
Данная эл. очередь может быть установлена на любую версию движка DLE так как она только делает выборку из базы данных, но не из меняет ее. В виде модуля или готовых исходных кодов она не поставляется.
Заказывайте, о цене всегда договоримся. Контакты есть верхнем в меню.
С уважением ACID.
Здравствуйте! Сколько будет стоить данный модуль в готовом виде? Нашел выше, но это давно было, может что поменялось по ценам. За ранее благодарен.
Ответил Вам на почту.
В данный момент внедряю очередь для записи в массовку на сайте http://hdtvband.ru/
Приблизительная стоимость от 5000р. Как такого модуля нет в принципе. Все делается в шаблоне. И не затрагивает файлов DLE. Это удобно потому что не требуется вносить изменения при обновлении движка.
Опишите Ваш функционал, что Вы планируете реализовать.
Hi! I ned some help of us. Sory from by bad inglish, but ruussian i know very bad…
In what way do to help?»
Нужна эта очередь мне сайт? отзовись)
8 марта все отмечают ))
Написал на почту !
Сделаешь как здесь цены ему не будет
http://www.er63.ru/possibilities/onlinereg/
есть деньги оплатить работу
Я могу сделать. Но теперь только по предоплате буду работать. Меня уже 2 раза кидали. Начинал делать потом заказчик пропадал.
Спасибо за ссылку.
Цена и сроки
Сроки от 3 месяцев. Минимум 30 000р
Скиньте ваши контакты мне на емэйл. ikaimanov@bk.ru
Скинул !
Здравствуйте!
Возможно понадобится подобный модуль, скиньте мне на мыло ваши контакты, как только определюсь с ТЗ, напишу подробнее.
Отправил.
Можно осуществить электронную очередь для сайта под Детский садик, где родители детей смогут видеть на сайте на какой они очереди на данный момент находятся? + чтобы было удобно добавлять новые новости для админа. Сделать все отдельно.
Да можно.
Только надо конкретно описать сам функционал. Как и что должно выглядеть. Для мамы и для админа. Идея хорошая.
Если, есть интерес, я могу накинут идею, я форму, как бы уже создал, есть личные идей, как сделать вывод на отображения, но не могу со стыковать ((( может ты сможешь помочь?
Попробую. Скидывай ссылки и описание на admin@serovweb.ru
напишите пожалуйста мне на электронку вашу электронку или асю и я с вами свяжусь
Отправил на электронку сообщение.
А сколько будет стоить данный модуль если Вы мне вышлите его готовым?
3000р
Вам только надо будет добавить категории для его работы. Т.е. категории где аккумулируются новости в виде записи граждан на прием.
Консультации по настройке бесплатны.
Ого, целое руководство! Ничего подобного до сих пор не видела в инете. Спасибо огромное! :grin:
Пользуйтесь. Надеюсь вам поможет.
Давольнотаки ёмкая статья))не сколька не жаль что ты потратил 5 часов на создание этойфункции для ДЛЕ))это того стоило не правдали?)огромное спасибо!) :roll:
Дак я ее делал на работе, там постоянно отвлекают. Так что с перерывами на чай, это нормально. Меня же никто не торопил.