Magento速度优化——异步加载
Magento的这个速度优化,之前有讲到过了Magento加速利器——lazyload,其实就是异步加载。这次我讲的是在protype下的lazyload,效果是和淘宝的一样,不过淘宝用的是YUI的。不想加载jQUery的可以用这个protype下的lazyload,同样是减少http请求,但是他会先遍历一遍所有的预选的img类型。我就不详细解释了,我直接放js地址了http://www.bram.us/projects/js_bramus/lazierload/
Magento的加速要一点一点的坐上去, 最近为magento的速度事情纠结了很久。希望大家对于magento的速度优化有什么妙招,可以告诉我,嘿嘿
Magento进入插件管理报错解决方法
今天在安装magento插件的时候碰到的问题,报错信息是:
Fatal error: require_once() [function.require]: Failed opening required ‘System.php’。这个是因为后台编译打开的原因,关掉即可。
另外还碰到个下载插件后无效的解决方法(仅限于转移服务器后),进入magento文件夹downloader\pearlib,里面有个pear.ini,删除就可以了。把安装无效的那个插件卸载了重新安装就可以了。
以上是水水友情协助,并强迫我给他的magento博客加链接http://blog.csdn.net/shuishui8310,强大的博客啊 ,可惜被百度惩罚了。magento开发人员去那寻宝吧。
Magneto功能强大的分页
Magento分页功能基本包含了常用的分页功能。之前没有去挖掘分页的功能,以为只有默认的一种,还在纠结默认的太简单了,准备换个。水水最近研究了下那东西,我就直接把他的劳动成果拿出来分享了,嘿嘿……
这里只是简单的介绍下,让大家知道有这个功能,配置什么的都很简单。进入magento后台system->Configuration->Design有个Pagination栏,设置都在里面了,可以实现一般的分页功能了。有需要的可以慢慢玩了,如果有更好的,希望大家推荐下。
去掉链接、按钮的虚框
链接和按钮在点击的时候会默认出现虚框,有时候因为美观我们需要去掉,最近就被这个小折腾了下,总结了下往上发的一些方法。
1、a{outline:none} 这个是针对Firefox的,但是IE下无效。
2、jQuery(“a”).each(function(){this.onmouseup = this.blur();})如果网站中已经加入jQuery,可以用这个方法。
3、< a href="#" hidefocus="true">…… a>,在a标签中加入hidefocus=”true”,这个在IE下可用,但是通不过W3C验证。
4、< input type="button" border=0 onFocus="this.blur()" name="……"> button按钮标签中加入onFocus=”this.blur()”,这个同样无法通过w3c验证。
5、input{blr:expression(this.onFocus=this.blur());}给按钮加入这个样式,往上评论说这个东西不能多用,会影响性能,我也没验证,我只在一个地方用到。
上面的方法都可行,在使用时须看实际情况针对使用。
Magento获取分类的销售排行
Magento有个热门商品的插件,但是那个插件不显示产品的销售数量,现在分享下能够指定分类,显示销售数量的方法。
新建一个block,内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | $totalPerPage = ($this->show_total) ? $this->show_total : 8; $counter = 1; $catalogid = Mage::getSingleton('catalog/layer')->getCurrentCategory()->getId(); $catalogid=($catalogid) ? $catalogid : 2; $_featcategory = Mage::getModel('catalog/category')->load($catalogid); $visibility = array( Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH, Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG ); $storeId = Mage::app()->getStore()->getId(); $_productCollection = Mage::getResourceModel('reports/product_collection') ->addAttributeToSelect('*') ->addOrderedQty() ->addAttributeToFilter('visibility', $visibility) ->addCategoryFilter($_featcategory) //全部产品的排行 ->setOrder('ordered_qty', 'desc'); ?> <ul> <?php foreach($_productCollection as $product): ?> <?php if($counter <= $totalPerPage): ?> <?php $productUrl = $product->getProductUrl() ?> <li class="l"> <a onclick="this.target='_blank'" class="hotimg" href="<?php echo $productUrl ?>" title="View <?php echo $product->name ?>"> <img src="<?php echo $this->helper('catalog/image')->init($product, 'image')->resize(77); ?>" alt="<?php echo $product->name ?>" /> </a> <h2><a onclick="this.target='_blank'" href="<?php echo $productUrl ?>" title="View <?php echo $product->name ?>"> <?php echo Mage::helper("core/string")->truncate($product->name,6,'') ;?> </a> </h2> <span class="price-label"><?php echo $this->__('Special Price:') ?></span> <span class="bestprice"> <?php echo $this->helper('core')->currency($product->getFinalPrice(),true,false) ?></span> <span class="selled">已售出: <?php echo (int)$product->ordered_qty ?></span> </li> <?php endif; $counter++; ?> <?php endforeach; ?> </ul> |
然后在magento中需要的地方插入即可,这个我在一个商城中已经用上,没有问题。
Magento中新建添加了special price的产品模块
在Magneto中新建special price页面这个功能模块用到的应该不多,现在的商城基本都是所有的产品的会加上special price。国外有些商城可能会用到这个功能,放假的时候查了些资料,现在分享下这个功能模块。
在app/design/frontend/default/你的主题/template/catalog/product中新建special.phtml,加入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php include_once 'app/Mage.php'; Mage::app(); Mage::getSingleton('core/session', array('name' => 'frontend')); $_productCollection = Mage::getResourceModel('catalogsearch/advanced_collection') ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()) ->addMinimalPrice() ->addStoreFilter(); Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($_productCollection); Mage::getSingleton('catalog/product_visibility')->addVisibleInSearchFilterToCollection($_productCollection); $todayDate = date('m/d/y'); $tomorrow = mktime(0, 0, 0, date('m'), date('d')+1, date('y')); $tomorrowDate = date('m/d/y', $tomorrow); $_productCollection->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate)) ->addAttributeToFilter('special_to_date', array('or'=> array( 0 => array('date' => true, 'from' => $tomorrowDate), 1 => array('is' => new Zend_Db_Expr('null'))) ), 'left'); foreach($_productCollection as $_product){ if($_product->getData('special_price')!=null){ echo '<img src="'.$this->helper('catalog/image')->init($_product, 'thumbnail')->resize(75).'" alt="'.$_product->getName().'" /><br />'; echo $_product->getName().'<br />'; $specialPrice = $_product->getData('special_price'); $orignalPrice = $_product->getData('price'); echo number_format($specialPrice, 2)."<br/>"; echo number_format($orignalPrice, 2)."<br/>"; echo '<a href="http://www.yourwebsite.com/magento/checkout/cart/add?product='.$_product->getId().'&qty;=1">Add To Cart</a><br />'; } } ?> |
这个只是实现了基本功能,样式布局方面还需要修改。有什么问题欢迎一起探讨。
在Magneto中使用一个xml文件更新布局
Magento有很多的xml布局文件,我们在修改更新布局文件时,就要去找相对应的.xml文件。我分享下通过一个local.xml文件就可以修改整个Magento网站的布局。
在app/frontend/default/你的主题/layout下新建一个local.xml,在里面写你需要更新的布局就可以了。记得在 头部加入
1 2 | < ?xml version="1.0"?> <layout version="0.1.0"></layout> |
可能一些朋友不懂magento如何布局,我接下来简单的介绍下:
1.更新添加block
1 2 3 | <reference name="left"> <block type="catalog/navigation" name="catalog.leftnav" after="currency" template="catalog/navigation/left.phtml"/> </reference> |
2.删除block
1 | <remove name="catalog.leftnavr" /> |
3.添加删除js
1 2 3 4 5 6 7 | <!-- 删除JS--> <reference name="head"> <action method="removeItem"><type>js</type><name>lib/ds-sleight.js</name></action> </reference> <!-- 添加JS --> <action method="addItem"><type>skin_js</type><name>lib/ds-sleight.js</name></action> |
关于布局更新还有其他问题,可留言联系我。
紫月蓝骋