在工作中,我们正在为客户开发一个网站,使用的是 Magento 电子商务软件。 这是我第一次使用它,我发现它非常棒(而且它是免费的!)。 它有很多优点,我们可能在以后再讨论,但它使用 Prototype 作为 JavaScript 库。 现在我确信 Prototype 很棒,但是我对它一无所知。 我宁愿使用我熟悉的并喜欢的库,即 jQuery。 但是 Prototype 和 jQuery notoriouly 不兼容。 这就是处理这种情况的方法。
- 最新版本的 Magento 带有一个过时的 script.aculo.us effects 文件,这是问题的一部分。 获取最新版本(目前为 1.8.2)。 您可能想在末尾加上版本号重命名它,例如effects-1.8.1.js
- 将文件上传到 [Magento]/js/scriptaculous
- 打开文件page.xml位于 [Magento]/app/design/frontend/default/default/layout/page.xml
- 在大约第 41 行,将会有这样的行
<action method="addJs"><script>scriptaculous/effects.js</script></action>
将文件名更改为您的新文件
- 布局文件通常会被缓存,因此您需要清除缓存才能看到效果。 登录后端并转到系统 > 缓存管理
- 从所有缓存菜单中选择“刷新”并保存(这应该会清除您的缓存)
- 重新加载商店页面并查看源代码,以确保加载的是您的新文件
- 现在您需要在页面上包含 jQuery。 您可以在 page.xml 文件中添加一行,也可以打开位于 [Magneto]/app/design/frontend/default/default/template/page/html/head.phtml 的 common head.phtml 文件,并在其中添加 jQuery 的 <script> 代码
- 最后一步是确保 jQuery 处于 .noConflict(); 模式。 这是确保它与 Prototype 相安无事,以防止冲突的最后一步
- 现在您需要设置 noConflict 并以该模式编写代码。 基本上,您用新的简写(在本例中为 $j)替换正常的“$”。
var $j = jQuery.noConflict(); $j(document).ready(function(){ $j("#test").css("padding","10px"); });
请注意,我并没有发明这个解决方案,我只是想整合我在研究这个问题时找到的信息。 大部分内容来自 维基百科 和 此主题,您可以参考以了解更多信息。
Chris,这是否也是一个 CMS? 你可以用它创建静态页面,比如关于我们页面或其他类似的页面吗? 如果不能,你能分享一下你是如何使用它以及你用什么 CMS 与它一起使用吗? 但说真的,这个软件看起来很棒! 谢谢
我不是 Chris,但它确实是一个非常酷的 CMS,它允许你创建静态页面,它实际上带有一个关于我们页面。 它还包含在有人购买、注册帐户以及其他许多事情时发送的自动电子邮件。 你可以连接到 UPS、DHL、FedEx 和 USPS。 它内置了 Google Analytics 和 Google Checkout……还有 PayPal。 它有一个你可以发送给客户的新闻稿功能。 你可以根据客户类型向他们发送新闻稿。
他们最近发布了一个允许数字下载的版本。
你可以为某些商品设置促销活动,持续时间由你指定。 你可以设置促销代码。 针对不同目标市场的不同商店,比如语言、货币、产品或其他任何东西。
我还可以继续说下去。
抱歉评论写得不好。 但它确实很酷。
在标题和文章中你写的是“Magneto”,我认为应该是 Magento。
太搞笑了。 怪不得每次我在 Google 上搜索它时都会看到 X 战警中的反派角色的照片!
哈哈……我只是以为你在玩文字游戏,“Mag” + “Neat-o”
hahah,太棒了
我也把它叫做 Magneto 很长时间了。
hahaha。 我也是。
你的链接仍然不正确;)
如果有人通过 Google 搜索……它会跳转到某个地方……因为拼写错误
此致
Allan
嗨 Chris,信息很棒!
我现在正在玩 Magento,它似乎相当复杂。
有没有办法永远删除 scriptaculous&co JS 文件并只使用 jQuery?
我的 Firebug 报告所有 scriptaculous 文件需要 4-12 秒才能加载。 这对于某些我根本不会使用的文件来说太长了。
我尝试过这样做,结果出现了错误。
尽管如此,还是要感谢你的教程!
非常棒的开源购物车……现在我有了一个除了 oscommerce 之外的其他选择 :) 谢谢 Chris!
非常棒。 我之前从未听说过 Magento,我刚刚花了几分钟时间查看了一下。 看起来很正规,所以我打算使用它。
我们还没有将其投入生产,而且这是我的第一次体验,但到目前为止我的体验是它非常出色。
我们大约有 1500 个 Magento 网站安装,它对我们来说运行良好。 你可以做一些优化来加快 Magento 的速度,比如将你的 var 缓存和会话放在 /dev/shm 中。 在 Magento 论坛上四处看看,会有一些随机主题,比如上面的这个主题。
嘿 Chris! 我也是第一次在工作中使用 Magento。 而且我也计划在任何时候都切换到 jQuery。 所以你刚刚为我节省了大量的工作。 谢谢!
这里的问题不是你正在加载 Prototype 和 jQuery 吗? 对于一个空的缓存访问者来说,加载这么多 JavaScript 库是不是太多了?
有人知道如何完全替换 Prototype 依赖,就像 jrails 在 Ruby on Rails 中做的那样吗?
时机太好了,Chris。 我在 2 月份开始一个 Magento 项目。 对于 Chad:我目前发现最好用于集成 Magento 的 CMS 是 typo3。 它有一个专门的扩展……我没有手头的链接,但稍后可以发布……
Chris:我想我们中的一些人想在这里看到更多 Magento 的内容;)
干杯!
tobi”
我注意到你的解决方案中有一个小问题。 严格来说,你修改的文件在更新 Magento 时可能会被覆盖。 最好的做法是创建一个新主题,然后对新主题进行更改。
这里有一些关于创建新主题的信息。 基本上,你复制默认主题文件夹(有几个),并将它们重命名为你的新主题。 这将确保你更改的文件与任何 Magento 更新完全分离,因此你无需担心更改会被覆盖。
嗨,Chris
我去年测试了 Magento,发现它的主题设置有点古怪,而且与 Zen Cart 相比,它速度非常慢,我通常使用 Zen Cart。
关于 Magento 主题的视频播客会很棒。
你觉得它的速度怎么样?
Ross
有人有将 Magento 集成到 WordPress 的经验吗?
我做了一些调查,找到了这个 信息。
在你的 Magento 安装目录下安装名为 wordpress 的文件夹。
在 block 文件夹下的 Noroute.php 文件中
更改此行
$uri = Mage::getBaseUrl() . ‘ee’ . $this->getRequest()->getRequestString();
为
$uri = Mage::getBaseUrl() . ‘wordpress’ . $this->getRequest()->getRequestString();
在你的 .htaccess 文件中使用这些代码
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
此外,Chris,如果你做了一个关于 Magento 主题的 3 部分系列,那将是一个非常有价值的资源。 会获得很多点击量。
顺便说一下,我总是把 Magento 写成 Magneto。
@Ross
我用 Magento 做过几个项目,它比 Zen Cart 和 OS Commerce(我之前都用过)好太多。Magento 的速度取决于你的服务器配置。幕后有很多东西(Zend Framework 非常复杂,但很可靠)。我现在有两个 Magento 安装。一个是放在我的台式电脑上用于开发,另一个是专门为 Magento 配置的服务器上(Simple Helix)。服务器上的安装非常快。
总之,如果你认真对待一个很棒的电子商务解决方案,那就多花点钱购买一个能让 Magento 飞起来的托管计划。
我正在用 Magento 建立我的新网站,已经尝试了几天才搞明白!就是关于更新效果文件的那一部分让我成功了。干杯!
我必须提醒大家…
首先,为 Magento 设计和创建你自己的主题不是一项简单的小任务!到处都是文件,成千上万。我没有夸张。
其次,当你遇到如何更改或修改某些内容的问题时,祝你在论坛中好运。我在 Magento 论坛几乎没有得到任何帮助。
第三,如果你不懂或不想处理 PHP,那就别看了。
我想好处是我正在提高我的 PHP 调试技能…
嗨,Chris。波特兰的老读者,第一次评论…你也可以通过使用来处理 prototype/jquery
jQuery.noConflict();
(function($) {
// 你的 jquery 代码在这里,仍然使用 $
})(jQuery);
通过将 jQuery 传递给将参数定义为 $ 的函数,$ 保证在函数体内引用 jQuery。这将允许你在示例中继续使用 jquery $ 而不是 $j。
mootools 怎么样,伙计们
Chris 在他的屏幕录制中也说的是 Magneto =)
一定要创建自己的主题,因为 Magento 更新会覆盖默认主题。
你也可以使用 Google 托管文件来节省带宽和页面加载时间。
很棒的技巧,Chris。关于 Magento 和开发主题时出现的一些设计问题,你可以做个屏幕录制吗?
很棒的技巧。现在我有了更多使用 AJAX 的选择。而且你说得对,Magento 是一个很棒的平台。起初我认为它只是为了与众不同而不同,但在第二个或第三个网站左右,我开始理解它的一些特性。关键是不假设现状是唯一的途径。
是的,它有效!谢谢。