问题标签 [e-commerce]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 用于销售服务的电子商务工具
我正在寻找一个好的电子商务 CMS。
我需要能够销售服务和产品,它必须是开源的,可以在任何需要的地方进行定制。
我对 PHP 和 Mysql 非常熟悉,对 python 和 ruby 也比较熟悉,所以首选 PHP 解决方案。
database-design - 处理可变类别层次结构
我遇到的问题如下:我公司的供应商为我们提供了一个 Access 数据库(我将其导入 SQL Server),其中包含他们的产品信息(替代方法是使用 XML),我正在尝试将其转换为更可用的格式用于电子商务网站。
我遇到的问题,也许我只是没有想清楚,是他们的类别信息可以是 3-6 个子类别的深度;总是至少有 2 个类别(顶级父类别和更具体的子类别),但根据项目最多可以有 6 个。
他们的数据以下表结构提供给我:
在大多数情况下,我可以忽略 SEQ_ID,因为它没有被使用;PFX_NUM 和 STK_NUM 连接在一起形成产品的 SKU,但这不是问题。我需要能够从站点动态遍历类别。例如,给定以下行:
SEQ_ID: 364867 (ignored)
PFX_NUM: AMP
STK_NUM: 73121
ECDB2_LVL_1: Office Supplies
ECDB2_LVL_1_ID 11
ECDB2_LVL_2: Envelopes, Mailers & Shipping Supplies
ECBD2_LVL_2_ID: 26
ECDB2_LVL_3: Envelopes
ECDB2_LVL_3_ID: 195
ECDB2_LVL_4: Business Letter Envelopes
ECDB2_LVL_4_ID: 795
ECDB2_LVL_5: (empty)
ECDB2_LVL_5_ID: 0
ECDB2_LVL_6: (empty)
ECDB2_LVL_6_ID: 0
用户应该能够浏览各个级别,但让我失望的是提供数据的示例网站(见下文)以随机间隔显示子类别下的所有项目......看起来它处于第 3 级(ecdb2_lvl_3 ) 但对于没有第 3 级的项目,它从第 2 级开始显示。正如您从架构中看到的那样,它们将所有内容放在一个表中,该表列出了产品及其所属的所有类别,而不是像自引用类别表和连接产品表之类的东西。
问题是有些项目只有 2 个级别,有些像这个有多达 4 个,还有一些有全部 6 个 - 供应商的示例网站,可在http://www.biggestbook.com很好地完成了我想要的工作,但我无法访问他们的代码,所以我对他们究竟是如何拉回类别并遍历它们感到摸不着头脑。我假设他们有某种全局标志来指示您当前所处的级别(例如,办公用品为 1,信封为 2,等等),因此他们可以跟踪您当前的深度,并且然后检查每个子级别,看看是否有更多的子类别要显示,但是当我想到如何有效地处理这个问题时,我是在画一个空白。他们的命名方案也有很多不足之处,但如果需要,我可以稍后解决。
有人对如何解决这个问题有建议吗?我计划在 C#/ASP.NET 中存储(可能是 MVC,可能不是),所以 C# 示例将是最有用的,但我可以很容易地遵循大多数语言来弄清楚。
scripting - 阻止脚本编写者抨击您的网站
我已经接受了一个答案,但遗憾的是,我相信我们陷入了最初的最坏情况:CAPTCHA 每个人都在购买废话。简短说明:缓存/网络农场无法跟踪点击,任何解决方法(发送非缓存网络信标、写入统一表等)都会比机器人更慢地降低网站速度。可能有来自 Cisco 或类似公司的一些昂贵的硬件可以提供高水平的帮助,但如果每个人都可以进行 CAPTCHA 验证,则很难证明其成本是合理的。稍后我将尝试更完整的解释,并为将来的搜索者清理它(尽管欢迎其他人尝试,因为它是社区 wiki)。
情况
这是关于 woot.com 上的垃圾袋销售。我是 Woot Workshop 的总裁,Woot 的子公司负责设计、撰写产品描述、播客、博客文章并主持论坛。我使用 CSS/HTML,对其他技术几乎不熟悉。我与开发人员密切合作,并讨论了这里的所有答案(以及我们拥有的许多其他想法)。
可用性是我工作的重要组成部分,而让网站变得令人兴奋和有趣是剩下的大部分内容。这就是下面三个目标的来源。CAPTCHA 损害了可用性,机器人从我们的垃圾销售中窃取了乐趣和兴奋。
机器人会在第二次屏幕抓取(和/或扫描我们的 RSS)中猛烈抨击我们的首页数十次,以进行 Random Crap 销售。当他们看到这一点时,它会触发程序的第二阶段登录,点击我想要一个,填写表格,然后购买垃圾。
评估
lc:在使用此方法的 stackoverflow 和其他站点上,它们几乎总是与经过身份验证(登录)的用户打交道,因为正在尝试的任务需要这样做。
在 Woot 上,匿名(未登录)用户可以查看我们的主页。换句话说,slamming 机器人可以是未经身份验证的(并且除了 IP 地址之外基本上是不可追踪的)。
所以我们回到扫描IP,a)在这个云网络和垃圾邮件僵尸时代相当无用,b)考虑到来自一个IP地址的企业数量,它捕获了太多的无辜者(更不用说问题了)非静态 IP ISP 和试图跟踪此问题的潜在性能损失)。
哦,让人们打电话给我们将是最糟糕的情况。我们可以让他们给你打电话吗?
BradC:Ned Batchelder 的方法看起来很酷,但它们的设计非常牢固,可以击败为网站网络构建的机器人。我们的问题是机器人是专门为击败我们的网站而构建的。其中一些方法可能会在短时间内起作用,直到脚本编写者将他们的机器人进化为忽略蜜罐,屏幕抓取附近的标签名称而不是表单 ID,并使用支持 javascript 的浏览器控件。
lc 再次:“当然,除非炒作是你营销计划的一部分。” 是的,绝对是。物品出现时的惊喜,以及如果你设法得到一件的兴奋,可能与你最终得到的废话一样重要或更重要。任何消除先到先得的行为都会损害“赢得”垃圾的快感。
novatrust:首先,我欢迎我们的新机器人霸主。实际上,我们确实提供 RSSfeeds 以允许 3rd 方应用程序扫描我们的站点以获取产品信息,但不会在主站点 HTML 之前。如果我的解释是正确的,那么您的解决方案确实通过完全牺牲目标 1 来帮助目标 2(性能问题),并且只是放弃机器人将购买大部分废话的事实。我对你的回答投了赞成票,因为你最后一段的悲观主义对我来说是准确的。这里似乎没有灵丹妙药。
其余的响应通常依赖于 IP 跟踪,这似乎既无用(僵尸网络/僵尸/云网络)又有害(捕获许多来自相同 IP 目的地的无辜者)。
还有其他方法/想法吗?我的开发人员一直在说“让我们做 CAPTCHA”,但我希望对于所有想要我们的废话的实际人类来说,有更少的侵入性方法。
原始问题
假设您正在销售具有很高感知价值的廉价商品,而您的数量非常有限。没有人确切知道您何时会出售此商品。超过 100 万人定期来看看你在卖什么。
您最终会遇到脚本编写者和机器人试图以编程方式 [a] 找出您何时出售所述物品,并 [b] 确保他们是第一批购买它的人。这很糟糕有两个原因:
- 您的网站遭到非人类的猛烈抨击,使所有人的一切都变慢了。
- 脚本编写者最终“赢得”了产品,导致常客感到受骗。
一个看似显而易见的解决方案是在下订单之前为您的用户创建一些跳线,但这至少存在三个问题:
- 用户体验对人类来说很糟糕,因为他们必须破译验证码、挑选猫或解决数学问题。
- 如果感知到的好处足够高,并且人群足够多,那么一些群体会找到解决任何调整的方法,从而导致军备竞赛。(更简单的调整尤其如此;隐藏的“评论”表单、重新排列表单元素、错误标记它们、隐藏的“陷阱”文本都将工作一次,然后需要进行更改以对抗针对此特定表单.)
- 即使脚本编写者无法“解决”您的调整,也不会阻止他们猛击您的首页,然后发出警报让脚本编写者手动填写订单。鉴于他们从解决 [a] 中获得了优势,他们可能仍然会赢得 [b],因为他们将是第一个到达订单页面的人。此外,1. 仍然会发生,导致服务器错误和每个人的性能下降。
另一种解决方案是监视 IP 访问频率过高,阻止它们进入防火墙,或者以其他方式阻止它们排序。这可以解决 2. 并防止 [b] 但扫描 IP 对性能的影响是巨大的,并且可能会导致像 1. 这样的问题,而不是脚本编写者自己造成的问题。此外,云网络和垃圾邮件僵尸的可能性使得 IP 检查毫无用处。
第三个想法,强制加载订单表格一段时间(比如半秒)可能会减慢快速订单的进度,但同样,脚本编写者仍然是第一个进入的人,只要速度不损害实际用户。
目标
- 将项目出售给非脚本人员。
- 保持网站以不被机器人减慢的速度运行。
- 不要让“普通”用户完成任何任务来证明他们是人类。
c# - 现成的现场搜索 asp.net 网站
我开发了一个结合电子商务网站的商业索引。(在asp.net2.0+c#中)
我正在寻找一个已经处理索引、速度和质量等问题的站内搜索引擎。
有没有这样做的著名解决方案?
我需要在我的设计中自定义搜索结果,因此不能选择谷歌搜索引擎。
谢谢, 伊坦
seo - 数据库驱动的产品页面和 SEO 的影响
电子商务网站显示从数据库驱动的产品/项目信息(相对于每个产品都有自己的 HTML 页面)对 SEO 有什么影响。
SE会找到物品信息吗?如果没有,你如何克服这个问题?
php - 如何在 Magento 中制作“标签”页面 SEO?
在 magento 中,我启用了 SEO url 重写,它工作正常 - 除了:
- 标签(显示为 site/tag/product/list/tagId/1/)
- 评论(显示为,例如站点/评论/产品/列表/id/1/)
- RSS 提要(显示为 site/rss/catalog/category/cid/3/sid/1/)
为什么这不是SEO?这个问题的解决方案是什么。我更关心我的标签。请帮忙
谢谢
python - django-cart 还是 Satchmo?
我正在寻找实现一个非常基本的购物车。 Satchmo似乎安装了很多我不需要的应用程序和额外的东西。我听说其他人提到django-cart。有没有人尝试过这个 Django 应用程序(django-cart)?有什么要注意的或有其他经验吗?
ruby-on-rails - 验证用户的 API 凭证 - Rails、ActiveMerchant 和 PayPal Express Gateway
我正在构建一个使用 PayPal Express 的市场应用程序。我有一个表格供卖家输入他们的 PayPal API 凭据,但我需要一种方法来通过对 PayPal 进行某种调用来验证它们。
我在 ActiveMerchant 中使用 PaypalExpressGateway,除了标准的购买控制之外,我什么也没看到。是否可以使用任何类型的空操作?
任何帮助将不胜感激!
design-patterns - 如何灵活存储一个产品的多个价格?
我想建立一个商店,其中的产品有一个小向导,然后通过它来确定价格。在这种情况下,我说的是印刷产品。
因此,对于(一个小)示例,当您来到商店并想要打印名片时,您可以决定是否要打印黑白或彩色,如果您想选择厚纸还是薄纸,如果您愿意打印 100、200、500 或 1000 件等。
毕竟会有一个价格让我们说:黑白,厚纸,200张=> 40,-$
实际上,您有更多选择可供选择。因此,您可以认为有很多价格,没有公式。
所以我的问题是:我该如何处理价格?
我的第一个想法:装饰器模式。
但是当我想到它时,这不是一个好主意。正如我所说,没有真正的公式,我还必须生成向导(如果您想打印贺卡,可能会有所不同)。此外,我希望能够通过管理界面更改价格或添加产品或添加新的“决定”,例如“你想要光面纸吗?” 到产品或删除一个(并且仍然保持价格不变)。
所以现在我正在考虑为每个产品使用一棵树,我可以在其中添加一个级别(一个新的决定)、度假村级别等等。
另一个想法是通过决策构建某种关键对象并在价格表中查找价格。有点像字典,我在其中添加决策,毕竟我从中生成一个键来查找价格表中的价格。
所以在原型设计之前,我想知道我是否只是盲人,我没有看到明显的解决方案,或者也许还有另一种我不知道的更优雅的方法?