在Opencart中,我们有以下类型的产品。
印刷书籍(硬拷贝),将被运送给客户。
同样,我们有数字下载。
我们希望在存储层设置一个选项,用户是想看到下载还是打印副本。
当用户选择下载选项时,它应该只显示所有类别中可下载的产品。
当用户选择打印副本时,它应该只显示每个类别中的打印产品。
任何实现此功能的建议都是欢迎的。
谢谢
"有什么建议来实现这个功能"
从我的观点来看(这可能不是最佳的),我们需要:
-
用户偏好的永久存储[5% done]
在表<DB_PREFIX>customer
中添加一列,如果用户对所有产品感兴趣,则该列的类型为INT
,值为0
,如果用户对数字下载感兴趣,则为1
,以此类推……,如果以后有可能添加新的首选项,那么最好将所有用户首选项的序列化版本存储在类型为TEXT
的列中。 - 一种检索用户偏好的方法[25% done]
您可以在每次需要时从数据库中检索它,更好的方法是将它保存在会话中,就像在类User
中保存用户数据(如地址,电话)一样。 - 一种改变用户偏好的方法[40% done]
在用户设置页面的某个复选框中,也更可取(UX明智),用户偏好显示在他的名字旁边的标题中,可以直接从那里编辑 - 最后,显示基于该偏好的产品[100%完成:D]
您将需要在类别页面,最畅销模块,最新产品....的控制器更改一些代码(任何涉及展示产品的模块)- 简单,幼稚和丑陋的解决方案:
你会注意到有一个代码段将产品数据复制到视图数据,它看起来像$data['products'][] = array(
在oc2中。X和$this->data['products'][] = array(
对于oc2之前的版本,这里一个简单的if条件就足够了,只需检查用户偏好并相应地决定是否将产品复制到视图数据 - 更好的解决方案:
在模型函数中从一开始就根据用户偏好过滤产品,在所有检索产品的模型函数中添加一个额外的可选参数(不要忘记那些检索产品计数的函数),表明用户偏好,检查模型函数内部是否设置了参数,然后在查询 中工作
- 简单,幼稚和丑陋的解决方案: