Month: December 2012

  • Favicon Controller in Msdk

    昨晚在 Magento 里写了个 FaviconController.php,是为了解决 Magento 根目录下的 favicon.ico 静态文件无法根据多网店不同的 favicon.ico 而变化。

    Magento 有支持多网店多 favicon.ico,但直接访问 example1.com/favicon.ico 和 example2.com/favicon.ico 怎么回应不同的 favicon.ico?我是把静态文件删了,由 FaviconController.php 读取 SystemConfig 从 media 或 skin 目录里读出相应的 favicon.ico,响应 /favicon.ico 的请求。

    逻辑很简单,我调试好了以后决定把这个功能归于我的 Msdk 模块,可是天黑眼花,竟然塞错进了另一个不相干的 Misc 模块,于是怎么看 /favicon.ico 都是 404 Error。这事折腾了有2个小时才发现错误所在。我痛下决心,要把 Misc 模块改个名。

    P.S. Msdk 模块是免费的。下次发布新版大家就会看到 FaviconController.php 了。

  • Using Nivo Slider with Prototype

    我想要一个 jQuery slider plugin 用在 Magento 上。jQuery slider 类不乏优秀的程序。我不及精挑细选,用了 Nivo Slider。

    虽然 slider 能运行,但 FireBug 停止响应。查错发现 too much recursion occured in prototype.js 1132 行。自然想到了 jQuery 和 Prototype 的 conflict,但我有做 noConflict.js,而且 jquery.nivo.slider.js 也没有在全局使用 $,看上去挺规范的呀。

    我让 Magento 暂不加载 prototype.js,too much recursion 错误就没有了,但 Magento 不能没有 prototype.js (盼望 Magento 哪天自动放弃 prototype,用 jQuery 重写)。

    我有意放弃 Nivo Slider,无意中又发现别人竟做过同样的事情——把 Nivo Slider 用在Magento 下,而且没有 javascript 错误。

    我以为是我那段 slider 的 html 写得不好,全盘拷了别人的来用,还是出错。然后我认为是版本问题,可是用别人的 jQuery 库,放在我这里,还是出错。

    最后,直到最后,我意识到一点不同之处,我用不带任何参数启动 Nivo Slider,即

    $('#slider').nivoSlider();
    

    而别人用

    	$('#slider').nivoSlider({
            effect: 'sliceDown', 
            slices: 15, 
           
            animSpeed: 500, 
            pauseTime: 3000, 
            startSlide: 0, 
    		 
            directionNav: true, 
    		        directionNavHide: true, 
    		        controlNav: true, 
                    keyboardNav: true, 
    		        pauseOnHover: true, 
                    captionOpacity: 1, 
            prevText: 'Prev', 
            nextText: 'Next' 
           
        });
    

    就这点造成了 too much recursion。