淘宝、亚马逊、京东商城、Magento系统在商品多属性、多价格、多语言、多库存、多供应商研究

研究一下业界几大在线的商城对于多属性、多价格、多语言、多库存、多供应商的应用情况,以及业界功能最为强大的开源商城系统Magento的应用也拿出来做比较。

1.淘宝网
多属性-价格

淘宝对于每一个影响到价格的属性采用乘积方式进行设置价格。如果颜色有10种,尺码有8种,那么淘宝会给出80个框来输入价格,以保证促销价格的精确性和灵活性。
缺点在于当属性和属性值比较多的时候,因为乘积效应,用户的操作会比较繁琐。

多属性-库存
淘宝属性和库存的对应关系和价格类似,因为库存的变动,在计算上会比价格复杂一些。
淘宝对于每一个影响到库存的属性采用乘积方式进行设置价格。如果颜色有10种,尺码有8种,那么淘宝会给出80个框来输入价格,以保证促销价格的精确性和灵活性。
缺点在于当属性和属性值比较多的时候,因为乘积效应,用户的操作会比较繁琐。

商品-供应商
在淘宝上,商品不支持多供应商,每个商品仅隶属于一个网店。

多语言
淘宝商品不支持多语言,仅支持中文。

2.亚马逊
多属性-价格

对于自营商品,亚马逊可以根据不同的属性设置不同的价格,从一些采样的数据来对比,该部分功能比淘宝要弱一些。貌似只能支持单个属性的价格不同设置。
对于第三方供应商的商品,从采样的数据来看,亚马逊不支持属性价格功能,即不能根据库存情况灵活的调整价格。

多属性-库存
亚马逊属性和库存的对应关系和价格类似,因为库存的变动,在计算上会比价格复杂一些。对于自营商品,亚马逊可以根据不同的属性设置不同的库存。
对于第三方供应商的商品,从采样的数据来看,亚马逊不支持属性设置库存功能,实际上不支持第三方供应商库存功能。

商品-供应商
亚马逊对于供应商提供的商品,属性可以多个,但是不同的属性不能影响价格,也无法对应其库存情况。实际购物时候会出现没货的情况,此时由供应商和用户自行商量退款等事宜。
商品链接:

http://www.amazon.cn/SERENE-%E8%A5%BF%E7%91%9E-%E7%94%B7%E5%A3%AB%E9%AB%98%E5%B8%AE%E9%9E%8B%E9%9F%A9%E7%89%88%E4%BC%91%E9%97%B2%E6%BD%AE%E6%B5%81-%E8%88%92%E9%80%82%E4%BF%9D%E6%9A%96%E5%86%9B%E9%9D%B4%E9%A9%AC%E4%B8%81%E9%9D%B4-3107-%E9%BB%91%E8%89%B2-40/dp/B00ASGHS7Y/ref=sr_1_1?m=A1GR41FJPYGAAW&s=shoes&ie=UTF8&qid=1361429486&sr=1-1

多语言
亚马逊中国amazon.cn商品不支持多语言,仅支持中文,amazon.com仅有英文,两个网站为互相独立的网站。

3.京东商城
多属性-价格

京东支持多属性-价格的方式和淘宝、亚马逊的方式不同,新建多个简单商品,然后进行编组,以其中一个为主商品出现在列表当中,在前端可以感觉得实现了多属性价格,但是在后端的实现上是通过新建许多商品,每个商品不同的sku,如果有颜色有10种,尺码有8种,那么需要在后端新建80个商品。
缺点是运营上比较繁琐,需要新建众多商品。优点是在前端扩展方便,可以实现一些特别的数据,价格可以灵活配置。

多属性-库存
京东多属性-库存的实现方式上和价格类似,针对每个商品下面不同的sku有不同的库存,缺点也是运营繁琐,优点是灵活扩展方便。

商品-供应商
因为京东采用多sku伪属性的方式,可以精确匹配供应商的库存信息。
商品链接:

http://www.360buy.com/product/1013758681.html

多语言
京东不支持多语言,京东的中文站和英文站为独立的两个网站。

4.开源商城系统——Magento
在开源商城系统中,Magento是最为灵活和复杂的系统,我们了解一下magento系统的实现方式。

多属性-价格
Magento支持多属性-价格的方式和淘宝、Ecshop的方式不同,新建多个简单商品,最后新建一个可配置商品代表这些简单商品,在前端可以感觉得实现了多属性价格,但是在后端的实现上是通过新建许多商品,每个商品不同的sku,如果有颜色有10种,尺码有8种,那么需要在后端新建80个商品。
缺点是运营上比较繁琐,需要新建众多商品。优点是在前端扩展方便,可以实现一些特别的数据计算展示。

多属性-库存
Magento多属性-库存的实现方式上和价格类似,针对每个商品下面不同的sku有不同的库存,缺点也是运营繁琐,优点是扩展方便。

商品-供应商
Magento系统不支持商品多供应商。

多语言
Magento支持多语言,通过语言包实现通用文字的多语言,通过后台单独配置实现属性的名称和值都可以支持多语言。
缺点是配置多语言的操作上有些繁琐。

5.总结
对于以上这些商城和系统,各自的优劣点总结如下表所示:

在实现方式上,多属性可以有商品单SKU多属性和商品多SKU伪多属性两种,后者在运营复杂程度上比前者要复杂不少,但是后者灵活性以及扩展性强于前者。两者只能选择其一。


原文链接:http://www.ahuasheng.com/multi-attribute-b2c-c2c.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Magento 2中发送多个附件的电子邮件,您需要对`Magento\Framework\Mail\Template\TransportBuilder`类进行扩展。 下面是一个示例代码,它可以让您在Magento 2中发送多个附件的电子邮件: 1. 创建 `Vendor\Module\Model\Mail\Template\TransportBuilder.php` 文件并添加以下代码: ```php <?php namespace Vendor\Module\Model\Mail\Template; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Exception\MailException; use Magento\Framework\Mail\Template\TransportBuilder as MagentoTransportBuilder; use Magento\Framework\Mail\TransportInterfaceFactory; use Magento\Framework\Translate\Inline\StateInterface; use Magento\Store\Model\StoreManagerInterface; class TransportBuilder extends MagentoTransportBuilder { /** * @var array */ protected $attachments = []; /** * @param array $attachments * @return $this */ public function addMultipleAttachment($attachments = []) { foreach ($attachments as $attachment) { if (file_exists($attachment['path'])) { $this->attachments[] = [ 'type' => $attachment['type'], 'name' => $attachment['name'], 'path' => $attachment['path'] ]; } } return $this; } /** * @param null|string|array $to * @param array $templateVars * @param null|string $templateOptions * @param null|string $transportOptions * * @throws MailException * * @return TransportInterfaceFactory */ public function getTransport( $to = null, array $templateVars = [], $templateOptions = null, $transportOptions = null ) { if (!empty($this->attachments)) { foreach ($this->attachments as $attachment) { $this->message->createAttachment( file_get_contents($attachment['path']), $attachment['type'], \Zend_Mime::DISPOSITION_ATTACHMENT, \Zend_Mime::ENCODING_BASE64, $attachment['name'] ); } } return parent::getTransport($to, $templateVars, $templateOptions, $transportOptions); } } ``` 2. 创建 `Vendor_Module` 模块的 `di.xml` 文件并添加以下代码: ```xml <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="Magento\Framework\Mail\Template\TransportBuilder" type="Vendor\Module\Model\Mail\Template\TransportBuilder" /> </config> ``` 3. 在您的模块中使用以下代码发送多个附件的电子邮件: ```php <?php namespace Vendor\Module\Controller\Index; use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context; use Magento\Framework\Mail\Template\TransportBuilder; use Magento\Framework\Translate\Inline\StateInterface; use Magento\Store\Model\StoreManagerInterface; class SendEmail extends Action { /** * @var TransportBuilder */ protected $transportBuilder; /** * @var StateInterface */ protected $inlineTranslation; /** * @var StoreManagerInterface */ protected $storeManager; /** * @param Context $context * @param TransportBuilder $transportBuilder * @param StateInterface $inlineTranslation * @param StoreManagerInterface $storeManager */ public function __construct( Context $context, TransportBuilder $transportBuilder, StateInterface $inlineTranslation, StoreManagerInterface $storeManager ) { $this->transportBuilder = $transportBuilder; $this->inlineTranslation = $inlineTranslation; $this->storeManager = $storeManager; parent::__construct($context); } /** * @return void */ public function execute() { $attachmentOne = [ 'name' => 'Attachment One', 'path' => 'path/to/attachment/one.pdf', 'type' => 'application/pdf' ]; $attachmentTwo = [ 'name' => 'Attachment Two', 'path' => 'path/to/attachment/two.pdf', 'type' => 'application/pdf' ]; try { $this->inlineTranslation->suspend(); $this->transportBuilder->setTemplateIdentifier('your_email_template_id') ->setTemplateOptions([ 'area' => 'frontend', 'store' => $this->storeManager->getStore()->getId() ]) ->setTemplateVars([]) ->setFrom([ 'email' => 'sender@example.com', 'name' => 'Sender Name' ]) ->addTo('recipient@example.com', 'Recipient Name') ->addMultipleAttachment([$attachmentOne, $attachmentTwo]) ->getTransport() ->sendMessage(); $this->inlineTranslation->resume(); $this->messageManager->addSuccess(__('Your email was sent successfully.')); } catch (\Exception $e) { $this->inlineTranslation->resume(); $this->messageManager->addError(__('There was an error sending your email. Please try again later.')); } return $this->_redirect('*/*/index'); } } ``` 以上代码将会发送带有两个附件的电子邮件。您可以根据自己的需要更改附件的数量和详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值