2015-06-07 3 views
1

В Opencart у нас есть следующие виды продукции.Opencart set Настройки магазина

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

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

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

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

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

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

Благодарности

+1

Мое предложение было бы первым tr y и напишите некоторый код. то вы можете прийти сюда за помощью, когда застрянете. – billynoah

ответ

0

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

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

  • Постоянный хранение для предпочтений пользователя [5% сделано]
    добавить столбец в таблицу <DB_PREFIX>customer с типом INT и значением 0, если пользователь заинтересован во всех товарах, 1 для цифровых загрузок и т. Д., Если есть вероятность, что вы добавите новые настройки позже, то лучше хранить упорядоченный версии всех пользовательских предпочтений в колонке типа TEXT
  • способ извлекать пользовательские предпочтения [25% сделано]
    вы можете просто извлечь его из базы данных каждый время, в котором вы нуждаетесь, лучший способ - сохранить его в сеансе таким же образом, как пользовательские данные (например, адрес, телефон) в классе User держал
  • способа изменить предпочтения пользователя [40% Выполнены]
    некоторый флажок на странице настроек пользователя, это также предпочтительно (UX мудры), что предпочтение пользователя отображаются в заголовке рядом с его имя и может быть отредактирован непосредственно оттуда
  • и, наконец, отображаются продукты на основе этого предпочтения [100% сделано: D]
    вам нужно будет изменить код в контроллере страницы категории, бестселлера модуль, новейшие продукты .... (любой модуль, который включает отображение продуктов)
    • Простое, наивное и некрасиво решение:
      вы заметите, что есть сегмент кода, который копирует данные продукты в окне просмотра данных, он выглядит как
      $data['products'][] = array( в OC 2.X и $this->data['products'][] = array( для версий до OC 2, достаточно простого условия для этого, просто проверьте предпочтения пользователя и решите, нужно ли копировать продукт в данные просмотра или нет
    • Лучшее решение:
      Фильтры основываясь на предпочтениях пользователя с самого начала в функциях модели, добавьте дополнительный необязательный параметр ко всем функциям модели, которые извлекают продукты (не забудьте те функции, которые извлекают количество продуктов), которые указывают предпочтения пользователя, проверяют внутри функций модели, если параметр задан, тогда вы работаете в запросе
Смежные вопросы