sherlockode/sylius-wishlist-bundle

Sylius电子商务平台的愿望单组件。

v0.2 2018-08-07 07:48 UTC

This package is auto-updated.

Last update: 2024-09-21 01:47:11 UTC


README

此组件为Sylius电子商务平台添加愿望单功能。它可以配置为每个用户使用单个或多个愿望单,这些愿望单可以是公开的或私有的。

安装

  1. 使用Composer要求组件
$ composer require sherlockode/sylius-wishlist-bundle
  1. app/AppKernel.php中启用组件
public function registerBundles()
{
  $bundles = [
    // ...
    new \Sherlockode\Sylius\WishlistBundle\SherlockodeSyliusWishlistBundle(),
    // ...
  ];
}
  1. 将配置添加到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
  1. 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),创建新的愿望单,标记为公开/私有等...

  1. 组件现在应该完全集成,但仍需要创建数据库表。为此,我们建议使用迁移。
$ bin/console doctrine:migrations:diff
$ bin/console doctrine:migrations:migrate

或者如果您不使用迁移,可以直接更新数据库模式。

  $ bin/console doctrine:schema:update
  1. 如果您将此组件集成到现有项目中,您的现有用户将不会与任何愿望单相关联。这不是问题,因为需要时愿望单会自动创建。所有新用户从开始都会自动为他们创建愿望单。

如果您想确保所有用户都有愿望单,您可以运行一个命令来为所有现有用户创建初始愿望单(如果他们还没有的话)。

$ bin/console sherlockode:sylius-wishlist-bundle:create-initial

商店页面的集成

现在您已经安装并集成了组件,用户可以根据组件配置查看他们的愿望单、创建新的愿望单等,但他们仍然没有方法将产品添加到愿望单中。由于每个项目都会有自定义的产品页面,这种实现取决于您。有两种方式可以实现。

  1. 简单

由于“添加到愿望单”功能几乎与添加到购物车相同,最简单的方式是将新的“添加到愿望单”按钮添加到现有的“添加到购物车”按钮旁边。

打开包含您的“添加到购物车”表单的模板,很可能是: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' %}

这将包含“添加到愿望单”按钮和所有必需的功能。它还将具有下拉菜单,如果用户有多个愿望单,用户可以选择将项目添加到哪个愿望单。

下拉菜单仅会在用户有多个愿望单时渲染。

  1. 自定义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许可证

待办事项

  • 测试