Opencart устанавливает настройки магазина

В Opencart у нас есть следующие типы продуктов.

Печатные книги (печатные копии), которые будут отправлены заказчику.

Для того же у нас есть цифровые загрузки.

Мы хотим, чтобы на уровне магазина была установлена ​​опция, хочет ли пользователь видеть загрузки или печатные копии.

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

Когда пользователь выбирает Печатные копии, он должен отображать только печатные продукты в каждой из категорий.

Приветствуются любые предложения по реализации этой функциональности.

Спасибо


person user2288522    schedule 07.06.2015    source источник
comment
мое предложение состояло бы в том, чтобы сначала попробовать написать код. тогда вы можете прийти сюда за помощью, когда застрянете.   -  person billynoah    schedule 07.06.2015


Ответы (1)


"Любые предложения по реализации этой функции"

С моей точки зрения (которая может быть не оптимальной) нам нужно:

  • Постоянное хранилище для пользовательской настройки [5 % выполнено]
    добавить в таблицу столбец <DB_PREFIX>customer с типом INT и значением 0, если пользователь заинтересованы во всех продуктах, 1 для цифровых загрузок и так далее..., если есть вероятность, что вы добавите новые настройки позже, то лучше хранить сериализованную версию всех пользовательских настроек в столбце типа TEXT
  • Способ получения пользовательских настроек [25 % выполнено]
    вы можете просто получать их из базы данных каждый раз, когда они вам нужны, лучше сохранить их в сеансе точно так же хранятся пользовательские данные (например, адрес, телефон) в классе User
  • Способ изменить пользовательские настройки [40 % сделано]
    установить флажок на странице пользовательских настроек, также желательно (с точки зрения UX), чтобы пользовательские настройки отображается в шапке рядом с его именем и может быть отредактировано прямо оттуда
  • And finally, displaying products based on that preference [100 % done :D]
    you will need to change some code in the controller of the category page, best seller module, latest products .... (any module that involves displaying products)
    • Simple, naive and ugly solution:
      you will notice that there is a code segment that copies products data to the view data, it looks like
      $data['products'][] = array( in OC 2.X and $this->data['products'][] = array( for versions prior to OC 2, a simple if condition here will be enough, just check for the user preference and decide accordingly whether to copy the product to the view data or not
    • Лучшее решение:
      отфильтровать продукты на основе предпочтений пользователя с самого начала в функциях модели, добавить дополнительный необязательный параметр ко всем функциям модели, которые извлекают продукты (не забывайте о тех функциях, которые извлекает количество продуктов), которое указывает на предпочтения пользователя, проверьте внутри функций модели, если параметр установлен, то работаете ли вы в запросе
person Abdo Adel    schedule 07.06.2015