跳转到主要内容

购物车

项目描述

https://img.shields.io/badge/code%20style-black-000000.svg https://travis-ci.org/bluedynamics/bda.plone.shop.svg?branch=master

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_itemadd_cart_item,并将节点作为参数传递。[jensens]

  • cart.js 中,也允许选择数量。[jensens. agitator]

  • 在购物车中添加显示购物车商品折扣的支持。[rnix]

  • 添加 get_item_shippingcart_item_free_shipping 工具。[rnix]

  • 修复拼写错误。将剩余的 card_item_tempate 重命名为 cart_item_tempate。这已经在摘要和概览(在 bda.plone.checkout)中更改,但在 cart.jstile.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 现在返回一个具有属性 uidcountcomment 的 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不再为currencycart_urlshow_to_cartshow_checkoutshow_currency提供默认值。[rnix]

  • 添加一个浏览器视图,渲染一个用于购物车JS翻译的JS片段。购物车翻译现在通过消息目录处理。[rnix]

  • 修复购物车JS中评论字符的验证。[rnix]

0.5

  • ICartItemDataProvider访问器接口添加一个标题属性,以允许自定义购物车项目标题。这可以用来为购物车项目提供更多上下文,例如,对于另一个内容项目内的可购买项。[thet]

0.4

  • 购物车验证考虑错误中的update标志。[rnix]

  • 引入remove_item_from_cart实用函数。[rnix]

  • CartDataProviderBasevalidate_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_enableddiscount_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 (69.1 kB 查看哈希值)

上传时间 源代码

构建分发

bda.plone.cart-2.0b1-py3-none-any.whl (85.4 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面