在 Magento 中动态计算属性

Posted

技术标签:

【中文标题】在 Magento 中动态计算属性【英文标题】:Calculate attribute dynamically in Magento 【发布时间】:2015-07-29 15:11:11 【问题描述】:

我正在尝试确定是否可以将基于位置的过滤集成到 Magento 目录和搜索页面中。

为了将上述内容放在上下文中,我的用例如下:产品具有纬度和经度属性,因为它们位于全国各地。我希望客户能够做的是按相对于他们自己位置的位置过滤产品。

我已经成功地实现了一个自定义搜索页面来实现位置搜索,但是它缺少 Magento 中的所有其他过滤器/搜索功能。理想的情况是位置是一个动态计算的变量,但是我不确定如何去做,或者它在 Magento 中是否可行。

提前感谢您的任何建议!

【问题讨论】:

【参考方案1】:

对于初学者,您可以尝试以下方法:

    创建产品属性distance_from_customer,默认值为0,可在分层导航中过滤 为事件catalog_product_collection_load_after 创建一个观察者,这将在每次加载产品集合时根据客户的位置更改每个产品的distance_from_customer 属性在加载的集合中(例如在类别视图中) 如果只有一个默认值 (0),则扩展分层导航以禁用基于 distance_from_customer 的排序/过滤

在此解决方案中,distance_from_customer 在数据库中始终为 0,只会在产品集合对象中更改,然后才会显示在前端,并且如果应用程序无法获取客户位置数据,则排序/过滤选项将被隐藏。

【讨论】:

这当然会有点昂贵,因为您必须每次加载产品集合两次而不是一次 + 重新计算每个产品的所有距离并应用它们。 谢谢,对我来说似乎很可靠,我会试一试并发布我想出的任何反馈!

以上是关于在 Magento 中动态计算属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 中执行动态/计算属性

typescript 计算属性允许您使用在运行时动态计算的名称在对象上定义属性。

我可以动态地将计算属性插入到 Vue 组件中吗

重新计算动态布局属性

Vue.js 3 html 动态类基于计算属性传递参数

VueJS 动态获取计算属性