Best place to put module installation scripts in Magento

Magento module 中,在哪里放置安装脚本比较好? 当然,把它放在 sql/$resourceName 目录下 $resModel.’-‘.$actionType.’-(.*)\.(sql|php) 文件里是不错的。安装脚本通常是修改数据库结构,所以放在.sql文件理所当然。但如果安装脚本跟数据库无关,放在.sql略显勉强,为此,我找了一个更好的地方。 首先在 config.xml 声明一个 setup 类: 这个类只要 extends Mage_Core_Model_Abstract,不一定得 extends Mage_Core_Model_Resource_Setup。 然后在该类里放置 applyUpdates() 方法,把安装脚本都写到这个方法里就可以了。模块在安装时就是执行这个方法,而且是在 .sql 执行之前。

Problemic boc.cn

今天上中行的网站,本来是找信息的,却发现了很多大问题,比如: DNS 只解析 www.boc.cn,不解析 boc.cn 供下载的申请表竟然用 rar 打包,是不是在考验申请人的计算机操作能力? 网银操作依赖于 IE 安全增强依赖于 ActiveX SSL 证书只是基本型的,而不是银行业界普及的增强型 网页用 gb2312 编码,而非最适合国际公司的 utf-8 网页申明为 xhtml,但显然不知 xhtml 为何物 table 布局 小问题肯定数都数不过来,我也没心情帮他们去纠错。

1and1 waste me two days

订了一个 1&1 Cloud Server,两天了还没法用。在 1&1 control panel 里一点那个 cloud server,就抛给我一个 500 Internal Server Error。这是在 1&1 control panel 里的错误,不是我订的 cloud server 上的错误。 一开始我还以为下订单时某个环节没做到,我拼命发 email,拼命打电话(电话很长时间才有人接,接了也会被掐,还是email support 好一些),辗转了 N 个来回以后被告知,1&1 的程序有个错误,让我耐心等。晕啊,浪费我两天时间。

What if I change the EAV attribute backend type in Magento?

The question is raised because in my catalog_category, I have a user attribute originally 255 length varchar. Now I am told by users it was not long enough for block text. I want to change it to text type in mysql to solve the problem. I know EAV attributes use different tables for different type.… Continue reading What if I change the EAV attribute backend type in Magento?

Discovery: PhProxy & CHtml

我认为突破访问限制的终级方案是 VPN,可是设置 VPN 的技术含量有点高,到现在我还搞不掂 OpenVPN,只能徘徊于 PPTP。今天发现可爱的 php 也有了 proxy(或许早就有了,我不知道罢了),虽然我用不着,但对国内的朋友们确实是天大的福音。简单易行,一分钟就能搭一个! 我只发现 phproxy 三个不大的缺陷: 无法代理流文件(比如无法看 youtube 上的 video,但访问 youtube 没问题) 因为 phproxy 工具栏在网页顶部,如果代理网页在相同位置绝对定位,则会重叠在一起(比如 wikipedia,我想修改一下 style.css 就好了,或者做一个自动隐藏的工具栏) 有些被代理的网页自检而跳出代理,重定向到原来的 url(比如 google spreadsheet) 牛人真不少,还有一个 CHtml,竟然用 recaptcha 去实现突破,构思非常巧妙。

AmazonPayments is removed from Magento 1.4

最近留意到一件奇怪的事:Magento 1.3 里还在的 AmazonPayments module 整个儿从 1.4 版拿掉了。 虽然 AmazonPayments 跟大部分英国公司没关系,但它还是造成一点小麻烦。因为它在 Magento 1.3 出现过,所以数据库里 system config 里留有 AmazonPayments 的一些配置信息;但是 Magento 1.3 升级到 1.4 时,为了减少麻烦,我把整个 1.3 源码目录删掉后再替换入 1.4 源码(而不是通常的 merge and replace),这样一来的现状是:数据库里有 AmazonPayments config data,但源码里没有 AmazonPayment module。这时,如果要新建一条基于 payment method 的 promotion rule (比如想鼓励大家使用 GoogleCheckout,给 GoogleCheckout 用户额外 10% 折扣),一点选择 payment method 就出错。 定位了一下出错的语句,原来是 getAllMethods() 不妥,因为它会根据 config data… Continue reading AmazonPayments is removed from Magento 1.4

Magento 1.4.1.0 is released

经历了好几个月沉寂之后,今天终于看到 Magento 一个新版 1.4.1.0。虽然我没去试用新版,但还是在第一时间关心了一下 Release Notes。我第一次逐行读完了 Release Notes,以前最多 scam it,这就是亲身体验者和旁观者的区别。 Improvements * Added ability to use static URLs for media in WYSIWYG or image browser. Added ability to enable parsing store, skin and media directives on catalog frontend. (这个功能我已经实现了,就是在 description output 上再套一个cms filter,我称之为 text engine。当然 magento core 实现得肯定比我好,以后我就删了我的 text engine) * URL rewrites history: ability… Continue reading Magento 1.4.1.0 is released

How to improve Magento speed

用 How to improve Magento speed 作标题,似乎合适又不合适。因为大凡讨论 Magento 速度优化,总是谈怎么配置数据库、apc、缓存、负载之类,今天我想谈点别的。 目前我碰到的实际情况是:启用各种缓存并尽可能地将缓存数据保存在内存中,访问cms page / category page / product page 的速度都很理想,但 shopping cart page 是瓶颈,cart item 越多越慢,生成时间超过 2 秒都是不可接受的。所以我一直在想怎么让 shopping cart 生成得快一些。 上周无意中发现,如果 after add product to cart, redirect to shopping cart,那么 shopping cart 其实在 add to cart 时已经生成了一次,然后 redirect to checkout/cart/index 又生成了一次。生成 shopping cart,最耗时间的是针对每个 cart item,去检验每条 sale… Continue reading How to improve Magento speed