sherlockode / sylius-wishlist-bundle
Sylius电子商务平台的愿望单组件。
Requires
- php: ^7.1
- sylius/core: ^1.0
This package is auto-updated.
Last update: 2024-09-21 01:47:11 UTC
README
此组件为Sylius电子商务平台添加愿望单功能。它可以配置为每个用户使用单个或多个愿望单,这些愿望单可以是公开的或私有的。
安装
- 使用Composer要求组件
$ composer require sherlockode/sylius-wishlist-bundle
- 在
app/AppKernel.php中启用组件
public function registerBundles() { $bundles = [ // ... new \Sherlockode\Sylius\WishlistBundle\SherlockodeSyliusWishlistBundle(), // ... ]; }
- 将配置添加到
app/config/config.yml顶部
imports: - { resource: "@SherlockodeSyliusWishlistBundle/Resources/config/config.yml" }
其中包括其他配置条目,可以在您的app的config.yml中进行覆盖。
sherlockode_sylius_wishlist:
multiple: true # multiple wishlist mode
default_public: false # used for automatically created wishlists
- 在
app/config/routing.yml中注册路由
sherlockode_wishlist: resource: "@SherlockodeSyliusWishlistBundle/Resources/config/routing.yml" sherlockode_wishlist_front: resource: "@SherlockodeSyliusWishlistBundle/Resources/config/routingFront.yml" prefix: /wishlist sherlockode_wishlist_account: resource: "@SherlockodeSyliusWishlistBundle/Resources/config/routingAccount.yml" prefix: /account/wishlists
如您所见,有三个路由组,主要资源(管理)路由,前端路由和用户账户路由,用户可以管理他们的愿望单(s),创建新的愿望单,标记为公开/私有等...
- 组件现在应该完全集成,但仍需要创建数据库表。为此,我们建议使用迁移。
$ bin/console doctrine:migrations:diff $ bin/console doctrine:migrations:migrate
或者如果您不使用迁移,可以直接更新数据库模式。
$ bin/console doctrine:schema:update
- 如果您将此组件集成到现有项目中,您的现有用户将不会与任何愿望单相关联。这不是问题,因为需要时愿望单会自动创建。所有新用户从开始都会自动为他们创建愿望单。
如果您想确保所有用户都有愿望单,您可以运行一个命令来为所有现有用户创建初始愿望单(如果他们还没有的话)。
$ bin/console sherlockode:sylius-wishlist-bundle:create-initial
商店页面的集成
现在您已经安装并集成了组件,用户可以根据组件配置查看他们的愿望单、创建新的愿望单等,但他们仍然没有方法将产品添加到愿望单中。由于每个项目都会有自定义的产品页面,这种实现取决于您。有两种方式可以实现。
- 简单
由于“添加到愿望单”功能几乎与添加到购物车相同,最简单的方式是将新的“添加到愿望单”按钮添加到现有的“添加到购物车”按钮旁边。
打开包含您的“添加到购物车”表单的模板,很可能是:app/Resources/SyliusShopBundle/Resources/views/Product/Show/_addToCart.html.twig
找到默认的“添加到购物车”按钮
<button type="submit" class="ui huge primary icon labeled button"><i class="cart icon"></i> {{ 'sylius.ui.add_to_cart'|trans }}</button>
并在其下方添加以下行。
{% include '@SherlockodeSyliusWishlist/Frontend/Shop/_addToWishlist.html.twig' %}
这将包含“添加到愿望单”按钮和所有必需的功能。它还将具有下拉菜单,如果用户有多个愿望单,用户可以选择将项目添加到哪个愿望单。
下拉菜单仅会在用户有多个愿望单时渲染。
- 自定义AJAX实现
另一种选择是实现您自己的完全定制的“添加到愿望单”功能。为此,提交数据到sherlockode_wishlist_frontend_add_item路由。
$.ajax({
url: '/wishlist/item/',
type: 'POST',
data: {
productVariantId: 123,
wishlistId: 456 // optional
},
success: // ...
});
您也可以使用与第一个示例相同的格式提交数据(“添加到购物车”表单),两个示例都使用相同的路由,并且都接受需要解析的变体数据(第一个示例)或已解析的产品变体ID。
愿望单徽章
您可能还想在页眉中添加一个徽章,该徽章链接到愿望单并显示当前已添加的项目数量,类似于现有的购物车徽章。
为此,只需将此行添加到同一文件的底部app/Resources/SyliusShopBundle/Resources/views/Cart/_widget.html.twig
{% include '@SherlockodeSyliusWishlist/Frontend/Shop/_badge.html.twig' %}
翻译和命名
该组件支持多语言,语言文件可以通过在app/Resources/SherlockodeSyliusWishlistBundle/translations目录中创建翻译文件来覆盖,就像任何其他组件一样。
开始使用前,请检查包的主要语言文件,位置在:Resources/translations/messages.en.yml
许可证
此包遵循MIT许可证。
待办事项
- 测试