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

Главные вкладки

Аватар пользователя roman-yrv roman-yrv 10 января 2015 в 14:47

Добрый день.

Где-то полгода назад решил разработать проект - сервис, посвященный покупке и продаже натуральных продуктов питания - http://edimnaturalnoe.ru.

В данный момент с помощью этого проекта пользователь может вносить продукты питания, которые он хочет продать, а также осуществлять поиск продуктов с помощью специальной формы (см. рис.).

Натуральные продукты питания

Контакты продавца и продукты питания реализованы с помощью концепции Organic Groups, где "группой" является торговая точка (там контактная информация о продавце), а "элементом группы" могут являться товары, заметки и т.д.
Такая концепция позволит подключить при необходимости к редактированию точки и товаров новых пользователей.

Данная форма реализована через Form API + Ajax Framework. По мере выбора элементов в "селекте" или двигания слайдера с ценами выборка продуктов перезагружается с помощью Ajax.

Для облегчения ввода информации для новых пользователей ввод информации по первому товару и ввод контактной информации объединены в одну форму (см. рис.)

Натуральные продукты питания. Размещение информации о продукте

Для облегчения работы нескольких пользователей на одном компьютере вместо "Моя учетная запись" отображается "%Имя пользователя% - учетная запись".

Для того, чтобы значения, отображаемые в таблице, можно было фильтровать по первым буквам, написал расширение (Extender). Как он работает - можно посмотреть здесь
http://edimnaturalnoe.ru/product-types/myaso-svezhee

А недавно обнаружилась следующая проблема. После того, как был размещен продукт "Черная икра" со стоимостью 10500 рублей, слайдером стало очень проблематично пользоваться. Потому что основная масса продуктов находятся в ценовом диапазоне от нескольких десятков до нескольких сотен рублей, и рабочая область для фильтрации представляла собой небольшой кусочек в левой части слайдера. Пришлось немного допилить свою форму и чуть-чуть код модуля Slider Field, чтобы шаг слайдера был переменным.

В принципе, получилось (см. рис).

Если кому интересно, потестировать работу слайдера можно на форме поиска натуральных продуктов.

Эксклюзивным дизайном для проекта пока я не занимался, сейчас тема проекта сделана на основе AdaptiveTheme + немного мной доработана (вот, цвета, отступы и т.д.).

Размещаю проект сейчас на облачном хостинге dualspace.ru, возможно, в будущем перейду на какой-нибудь VDS/VPS.

Сейчас делаю первоначальное наполнение данных, вылавливаю различные мелкие ошибки и недоработки.

В общем, вот такой проект.

Комментарии

Аватар пользователя Lotar Lotar 10 января 2015 в 15:13

Проще назвать продуктовая доска объявлений. И зачем на форуме темы связанные с производством сайта?

Аватар пользователя roman-yrv roman-yrv 10 января 2015 в 15:24

"Lotar" wrote:
И зачем на форуме темы связанные с производством сайта?

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

Аватар пользователя roman-yrv roman-yrv 12 января 2015 в 12:25

То есть, Вы имеете в виду, что пользователь, к примеру, регистрируется на сайте, далее вводит себе ноду типа "магазин", а далее про вводе нод типа "товар" у него для связи с его магазином будет поле типа "Entity reference", в котором можно будет задать один или несколько магазинов, которые он ввёл ранее ?

Аватар пользователя Stan.Ezersky Stan.Ezersky 12 января 2015 в 14:46

"roman-yrv" wrote:
То есть, Вы имеете в виду, что пользователь, к примеру, регистрируется на сайте, далее вводит себе ноду типа "магазин", а далее про вводе нод типа "товар" у него для связи с его магазином будет поле типа "Entity reference", в котором можно будет задать один или несколько магазинов, которые он ввёл ранее ?
К ноде (магазин) будут привязаны товары, которые могут быть в нескольких магазинах

Аватар пользователя roman-yrv roman-yrv 13 января 2015 в 13:41

Ну, во первых, связь через членство OG и связь через entity_reference - что там, что здесь для связи используется одна таблица в БД. Так что, не думаю, что OG в этом отношении более затратная.

А, во вторых, использование OG позволяет решать некоторые организационные вопросы по взаимодействию с клиентами.

Например, некто регистрируется на сайте под своим логином и e-mail, вводит торговую точку и несколько товаров. Через некоторое время этот человек увольняется с той организации, а доступ к аккаунту остается у него.
Если есть OG, то решается просто - владельцы регистрируются под новым логином и уже своим e-mail, мы их к этой точке привязываем и они продолжают работать - корректируют список товаров, ставят новые цены и т.д.

А без OG как такие вопросы решать, чтобы было и проще и правильнее, чем с OG ?

Я при работе со своим проектом http://palomniki.su (написанным на MODx) уже неоднократно сталкивался и сталкиваюсь с такой проблемой, когда сотрудник регистрируется под своими данными, вводит маршруты, контакты и т.д. Затем, через несколько месяцев мне уже с другого e-mail приходит письмо - "Мы служба такая-то, сотрудник, который работал с маршрутами, уволился, что нам делать ?". Если сотрудник регистрировался под своим личным аккаунтом со своим личным e-mail, то остается только попросить их зарегистироваться уже под своими аккаунтами и открыть им доступ к работе. Считай, та же концепция OG, только реализовано руками.

Ну и кроме всего прочего, у OG есть другие возможности, которые, возможно, будут полезны по мере развития проекта. Например, типы членства. Или еще что-нибудь.

Аватар пользователя roman-yrv roman-yrv 17 января 2015 в 10:32

Ну, сайт совместных покупок - это все-таки более сложный по структуре сайт, чем доска объявлений.
Там нужно и правила покупок продумать, и доли пользователей в покупке задавать и хранить.

Аватар пользователя Andruxa Andruxa 25 января 2015 в 3:54

"roman-yrv" wrote:
Данная форма реализована через Form API + Ajax Framework. По мере выбора элементов в "селекте" или двигания слайдера с ценами выборка продуктов перезагружается с помощью Ajax.

Чего только люди не придумают, лишь бы фасетами не пользоваться.

Аватар пользователя roman-yrv roman-yrv 27 января 2015 в 0:11

Ну, решил вот так сделать, классическим способом Smile

Скажу, что формирование SQL-запросов через db_select реализовал без особых проблем. Структура БД в Drupal довольно грамотная и прозрачная.

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