购物车
项目描述
Plone的购物车。
基础包安装
根据您的实例依赖bda.plone.cart,并在Plone控制面板中将其作为插件安装。
提供合同
此包提供了渲染购物车所需组件。它期望在
bda.plone.cart.interfaces.ICartDataProvider
bda.plone.cart.interfaces.ICartItemDataProvider
bda.plone.cart.interfaces.ICartItemStock
bda.plone.cart.interfaces.ICartItemPreviewImage
bda.plone.cart.interfaces.ICartItemAvailability
bda.plone.cart.interfaces.ICartItemState
bda.plone.cart.interfaces.ICartDiscount
bda.plone.cart.interfaces.ICartItemDiscount
中定义了几个合同。此外,在bda.plone.cart.__init__中还有一些抽象基类实现可供使用,可作为具体实现的基类。
购物车可见性
购物车可以以组件或门户头部视图的形式呈现。同一页面上不能呈现两次购物车。因此,如果发现购物车组件分配,视图将自动跳过。另外,如果呈现了购物车摘要、结账、订单确认或门户工厂,常规购物车呈现也将被跳过。
可以定义自定义模式,这些模式将与最近的浏览器URL进行比较,以确定是否跳过购物车渲染。这对于自定义支付实现等非常有用。
from bda.plone.cart.browser.portlet import SKIP_RENDER_CART_PATTERNS
SKIP_RENDER_CART_PATTERNS.append('@@my_payment')
一个可用的实现
对于Archetypes和Dexterity,期望的合同的具体实现已在 bda.plone.shop 中存在。请参阅 https://github.com/bluedynamics/bda.plone.shop 以获取更多详细信息。
标记
查看 bda.plone.cart.browser:tile.pt 了解添加商品到购物车的HTML标记可能的样子。
基本上一件商店商品由一个容器DOM元素组成,其中包含一个具有CSS类 cart_item_uid 的元素,其中商品UID是从
<span class="cart_item_uid" style="display: none;">12345678</span>
一个具有CSS类 cart_item_count 的文本输入字段读取的,用于读取项目数量
<input type="text" size="2" value="1" class="cart_item_count" />
数量单位
<span class="cart_item_quantity_unit">Quantity</span>
如果数量单位可以是浮点数,请添加 quantity_unit_float CSS类
<input type="text" size="2" value="1"
class="cart_item_count quantity_unit_float" />
“添加到购物车”操作
<a href="" class="add_cart_item">add to cart</a>
和“更新购物车”操作
<a href="" class="update_cart_item">update cart</a>
可选的,如果使用购物车视图,则在添加或更新购物车项时可以显示状态消息。如果用户应该清楚地了解购物车数据是否已更改,这非常有用。要显示状态消息,请将CSS类 show_status_message 添加到“添加到购物车”和“更新购物车”操作
<a href="" class="update_cart_item show_status_message">update cart</a>
以及可选的用于定义注释或输入注释的元素
<input type="text" size="16" value="" class="cart_item_comment" />
如果需要注释,请在注释输入中添加CSS类 required。如果注释为空,则在尝试添加或更新购物车项时,将向用户显示错误消息
<input type="text" size="16" value="" class="cart_item_comment required" />
创建翻译
$ cd src/bda/plone/cart/ $ ./i18n.sh
开发CSS样式
CSS样式是用Sass编写的,并通过 npm 编译
$ npm install $ npm run build # to build the resources or $ npm run watch # to watch changes during development
贡献者
罗伯特·尼德雷特(作者)
斯文·普拉格
彼得·霍尔泽
哈拉德·弗里森纳格
彼得·马蒂斯
埃斯彭·莫-尼森
约翰内斯·拉加姆
朱尔·切拉克
图标由famfamfam提供
变更日志
2.0b1 (2024-04-17)
将LESS资源重写为SASS并移除Grunt以支持npm/sass [petschki]
使用bs弹出标记显示购物车状态消息。[rnix]
移除decimal_converter并依赖于plone.restapi>=6.13.7 [agitator]
在摘要和组件中标记购物车项,如果启用了注释或未启用注释。[jensens]
修复摘要中损坏的从购物车中删除。[jensens]
处理计数数字本地化。[jensens]
不再支持z3c.autoinclude。[jensens]
购物车上的更多CSS类[jensens]
修复当在输入商品时移除商品时移除购物车项值的问题。[jensens]
修复当在列表中要添加的数字更改时立即添加到购物车的问题。[jensens]
将运输代码移到这里。[jensens]
重构大量代码,从init模块中移出,以更语义化的模块。[jensens]
添加RESTAPI [jensens]
代码风格黑色。[jensens]
Python 2/3兼容性[agitator]
更新版本和分类器 - 2.x针对Plone 5.1/5.2而没有Archetypes[agitator]
意大利翻译[ale-rt]
切换到Plone 6图标解析器[petschki]
1.0a1 (未发布)
在自动更新后保持购物车项计数焦点。[rnix]
如果项目数量更改,则自动更新购物车。[rnix]
用untittest替换unittest2。[llisa123]
引入 bda.plone.cart.browser.portlet.SKIP_RENDER_CART_PATTERNS,可用于定义要检查是否跳过购物车渲染的实际浏览器URL的模式。[rnix]
在 cart.js 中,使处理添加和更新点击事件的代码块可供第三方代码使用。将两个匿名函数移动到自己的命名函数中,命名为 update_cart_item 和 add_cart_item,并将节点作为参数传递。[jensens]
在 cart.js 中,也允许选择数量。[jensens. agitator]
在购物车中添加显示购物车商品折扣的支持。[rnix]
添加 get_item_shipping 和 cart_item_free_shipping 工具。[rnix]
修复拼写错误。将剩余的 card_item_tempate 重命名为 cart_item_tempate。这已经在摘要和概览(在 bda.plone.checkout)中更改,但在 cart.js 和 tile.pt 中缺少修复 #31。请确保在所有与购物车相关的自定义模板中修复此问题![rnix]
在 cart.js 中对购物车项目模板、购物车摘要折扣和购物车摘要运输使用更精确的选择器。[rnix]
对于 get_object_by_uid 也使用安全的 uid 代码,并使用 plone.api。[jensens]
修复选择器拼写错误 #cart_viewlet_summery 到 #cart_viewlet_summary [agitator]
从添加/更新购物车到服务器端验证传递 JS 注释。[jensens]
在德语中使用 MwSt. 而不是 Ust. [agitator]
添加了 Plone 5 上的 data-context-url,用于 saner cartData 和 validate_cart_item 调用。[agitator]
Plone 5 更新 [agitator]
extractitems 现在返回一个具有属性 uid、count 和 comment 的 namedtuple。[jensens]
0.10.dev2
解决 JSHint 错误和警告。[thet]
修复如果需要注释则无法删除购物车项目的问题。修复 #17、修复 #12。[thet]
移除小部件的 cartWrapper div 节点。它根本未使用,并且仅引入了非标准的 HTML 小部件标记。[thet]
默认情况下,购物车小部件是隐藏的,并在获取购物车项目后显示。[rnix]
考虑购物车小部件上的 hide cart if empty 设置。[rnix]
隐藏购物车项目的未设置预览图像。[rnix]
如果购物车数据被修改,购物车可以显示状态消息。[rnix]
购物车可以渲染为门户标题中的小部件,而不是作为小部件。[rnix]
不要期望 IShippingItem 被实现。另请参阅 https://github.com/bluedynamics/bda.plone.shop/issues/31 [jensens]
不要缓存/合并 cart.translations.js [agitator]
0.9
仅在购物车cookie中的购物车项目注释中使用引号/取消引号特殊字符。这样我们就可以在注释中拥有任何字符。不再需要“无效注释字符”验证和错误消息。[rnix]
0.8
在 cart.js 中使用 decodeURIComponent 而不是已弃用的 unescape。[rnix]
如果在 get_catalog_brain 中给定的 uid 值不是有效的 uuid.UUID 字符串,则捕获 ValueError。[rnix]
让 get_catalog_brain 和因此 get_object_by_uid 处理 uuid.UUID 对象、类似于 '8de81513431752d5f32c680db93dda0c' 的十六进制字符串以及类似于 '8de81513-4317-52d5-f32c-680db93dda0c' 的 UUID 对象表示字符串。[thet]
在购物车项目注释中编码重音符号字符。[rnix]
0.7
在购物车摘要模板中添加注释标签。[rnix]
0.6
如果数据相应更改,通过 JS 隐藏购物车中的折扣和运输信息。[rnix]
从 CartView 中删除 include_shipping_costs 属性。[rnix]
始终为购物车提供运输标记,使用 JS 控制是否显示运输成本。[rnix]
将 bda.plone.cart.browser.CURRENCY_LITERALS 移动到 bda.plone.cart.CURRENCY_LITERALS。[rnix]
添加 ICartDataProvider.max_artice_count 属性并在 CartDataProviderBase 中实现。[rnix]
添加 bda.plone.cart.cart_item_shippable 工具。[rnix]
在CartDataProviderBase上实现ICartDataProvider.include_shipping_costs,使用bda.plone.shipping.interfaces.IShippingItem.shipping标志进行计算。[rnix]
添加ICartDataProvider.total属性并在CartDataProviderBase中实现。[rnix]
在CartDataProviderBase.data中使用readcookie而不是期望的items请求参数。[rnix]
不要将最近的购物车items参数传递给@@cartData视图,因为包含的值已经作为cartcookie包含在内。[rnix]
采用bda.plone.shipping >= 0.4的运输处理。[rnix]
CartDataProviderBase不再为currency、cart_url、show_to_cart、show_checkout和show_currency提供默认值。[rnix]
添加一个浏览器视图,渲染一个用于购物车JS翻译的JS片段。购物车翻译现在通过消息目录处理。[rnix]
修复购物车JS中评论字符的验证。[rnix]
0.5
向ICartItemDataProvider访问器接口添加一个标题属性,以允许自定义购物车项目标题。这可以用来为购物车项目提供更多上下文,例如,对于另一个内容项目内的可购买项。[thet]
0.4
购物车验证考虑错误中的update标志。[rnix]
引入remove_item_from_cart实用函数。[rnix]
CartDataProviderBase的validate_set引发NotImplementedError。[rnix]
在服务器端处理article_limit_reached消息。[rnix]
通过cart_count_limit扩展bda.plone.cart.interfaces.ICartItemDataProvider。[rnix]
修复和重构购物车最大文章计数。[rnix]
向bda.plone.cart.interfaces.ICartDataProvider添加hide_cart_if_empty属性,集成到bda.plone.cart.CartDataProviderBase并考虑在购物车JS中。[rnix]
向bda.plone.cart.interfaces.ICartItemStock添加display属性,并通过bda.plone.cart.CartItemAvailabilityBase公开它。[rnix]
添加bda.plone.cart.CartItemDataProviderBase类。[rnix]
通过discount_enabled和discount_net扩展bda.plone.cart.interfaces.ICartItemDataProvider。[rnix]
引入bda.plone.cart.interfaces.ICartDiscount。[rnix]
引入bda.plone.cart.interfaces.ICartItemDiscount。[rnix]
修复浏览器层顺序优先级。[thet]
0.3
添加用于查找IItemDelivery适配器的get_item_delivery辅助函数。[rnix]
0.2
引入bda.plone.cart.interfaces.ICartItemState。[rnix]
引入bda.plone.cart.interfaces.ICartItemAvailability。[rnix]
引入bda.plone.cart.interfaces.ICartItemStock。[rnix]
允许在左侧列中也将购物车面板。[fRiSi]
添加购物车项目预览图像的适配器。[petschki]
0.1
初期工作 [rnix]
许可
版权所有 (c) 2012-2019,BlueDynamics Alliance,奥地利。保留所有权利。
在满足以下条件的情况下,允许重新分发和使用源代码和二进制形式,无论是否修改:
源代码的重新分发必须保留上述版权声明、本许可列表和以下免责声明。
二进制形式的再分发必须复制上述版权声明、本许可列表以及随分发提供的文档中的以下免责声明。
未经事先书面许可,不得使用BlueDynamics Alliance的名称或其贡献者的姓名来推广或认可由此软件派生的产品。
本软件由BlueDynamics Alliance“按现状”提供,并且任何明示或暗示的保证,包括但不限于适销性和特定用途的适用性保证均予以排除。在任何情况下,BlueDynamics Alliance不对任何直接、间接、偶然、特殊、示范性或后续的损害(包括但不限于替代货物或服务的采购;使用、数据或利润的丧失;或业务中断)承担责任,即使BlueDynamics Alliance已被告知此类损害的可能。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
bda.plone.cart-2.0b1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 30f9ed514e0ad4649eb3262370a3a724250fac656508dabe768dc0a733105ab0 |
|
MD5 | 27addea5a8224642b50134d071b15d97 |
|
BLAKE2b-256 | a801a5f6b1f8b880b6d49c60bfdfb87ca2f580365ee24b56406c0e7e986db38f |
bda.plone.cart-2.0b1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 638b18734b701649754303839f6f66120cbf45272a1958f35791cf3c72b22ff6 |
|
MD5 | 18561924d24ec679dac723b8e20d87f4 |
|
BLAKE2b-256 | ee05d44a8f56a8ffd314c0ac054a5c1b0e10af6d7a0a3f5fc6e17a393e07e0ad |