月度归档:2016年01月

Magento后台生成google sitemap/sitemap.xml

介绍下关于Magento的seo,对与谷歌来说,生成sitemap.xml对与收录是很有帮助的,而Magento在生成sitemap.xml方面是不需要第三方插件就可以生成的。
Magento生成sitemap.xml文件
sitemap.xml是大多数搜索引擎,如百度,雅虎,必应都支持的。通过相应的提交网址,将网站地图提交给搜索引擎,以帮助网站被尽快的收录。
1.首先进入后台catalog/google sitemap,添加一个新的sitemap;
2.filename文本框中输入文件名,如:sitemap.xml;
3.path是输入文件名的地址这里只需填“/”就可以了;
store view就是sitemap要生成的商店。
填写完之后点击”save&create”(这里要注意:如果是点击“save”将不会生成sitemap,所以这里要点击”save&create”,可能新的版本中需要generate就会在网站根目录生成sitemap.xml);
然后进入前台输入“网址+sitemap.xml”,就会看到xml文件;
我是直接输入了两个信息: 一个是filename 为sitemap.xml,一个是path为/;
然后save&generate就生成了sitemap。

Magento多级分类URL去掉父目录

在开发中,有时候需要将多级分类的url简化,Magento的URL默认是显示多级分类的
http://www.china-hf.net/分类1/分类2/分类3
现在需要简化为:

分类2的URL为:http://www.china-hf.net/分类2
分类3的URL为:http://www.china-hf.net/分类3
具体修改方法如下:
打开app/code/core/Mage/Catalog/Model/Url.php这个php文件,找到
if (null === $parentPath) {
$parentPath = $this->getResource()->getCategoryParentPath($category);
}
elseif ($parentPath == ‘/’) {
$parentPath = ”;
}
把上面的代码修改为:
//if (null === $parentPath) {
//$parentPath = $this->getResource()->getCategoryParentPath($category);
/

如何使用Magento优惠券Coupon Code

Magento创建购物车价格规则,点击Promotions -> Shopping Cart Price Rule 然后选择 Add New Rule(增加新规则)。(这里便是创建使用Magento优惠券的地方)
比如创建减%10的优惠券:
在Rule Information :
首先输入规则名Rule Name 和描述Description 。然后选择启用它Status。
然后选择该优惠在哪些页面 上启用。假设给所有店铺的顾客都可以享受10%的优惠。因此我们把所有商店Websites 所有的使用者和顾客类别Customer Groups 都选上。选择的时候按住Ctrl键可以多选。
然后设定此优惠券需要输入优惠码激活,比如Coupon code 设置10Off ,那在购物车页面输入编码10Off 就可以使用了。对“Uses Per Coupon ”和“Uses Per Customer ”进行设定。 “Uses Per Coupon”设定为100,即优惠券只能被使用100次。“Users Per Customer”设定为1,每位顾客只能使用一次优惠。
然后输入优惠券的有效期以及优惠券的优先数值Priority 。设定优先数值为0,即最高优先权。这样当有两个规则同时作用于同一产品的时候,优先权便起作用了。另外From Date 和To Date 是用于设置优惠券的有效期。
Public In RSS Feed 这个是设置是否把此个价格规则公布在RSS feed上。
在Conditions :
选择“Percent of Product Price discount ”( 其他的选择是针对整个购物车或者买x物品可以免费得到y商品两种类别的固定数额的折扣),然后选择你想要设定的折扣额Discount amount 。设定为10 即为%10。
然后我们设定折扣应用于同一商品的最大数Maximum Qty Discount is Applied to 。输入5,也就是说,同一商品只能有5件享受折扣优惠,第6件要按照原价支付了。
接下来是应用折扣所需达到的商品数Discount Qty Step (Buy X) 。如果我们输入3,那么购物车中必需有3样 以上的商品才能享受价格优惠。如果我们对这个要限定的话留空就可以。
接下来你还可以为你的优惠设定免费附送品。附送品可以设定为优惠指定的某些产品,也可以设定为购物车中包括某件商品便可以自由选择的任何产品。这边我们不设置留空。
这样下来整个Magento使用优惠券 购买物品打九折的需求就达到啦。
在前台checkout/cart/页面的Discount Codes里通过输入刚才设定的优惠码10Off 就能打折使用啦。

magento简化url多级分类去掉父目录

在开发中,有时候需要将多级分类的url简化,Magento的URL默认是显示多级分类的
/分类1/分类2/分类3
现在需要简化为:
分类2的URL为:http://www.china-hf.net/分类2
分类3的URL为:http://www.china-hf.net/分类3

具体修改方法如下:
打开app/code/core/Mage/Catalog/Model/Url.php这个php文件,找到
if (null === $parentPath) {
$parentPath = $this->getResource()->getCategoryParentPath($category);
}
elseif ($parentPath == ‘/’) {
$parentPath = ”;
}
将上面这段代码注释掉。

$parentPath = $this->getResource()->getCategoryParentPath($category);
是获取分类的父级分类,下面将父级分类设置为空则在生成的URL中屏蔽掉父级
仔细观察core_url_rewrite表里面的数据就会发现。

Magento根据用户浏览器信息自动选择相应语言

很多大型的国际性B2C站点都能自动根据用户的IP地址以及浏览器信息来获取用户的国家及语言,从而自动为客户显示相应的语言及货币。Magento默认支持多语言、多货币的功能,但是并没有根据来访用户的信息自动切换语言、货币设置的功能。

这里会给大家一个大概的思路,让Magento实现根据用户的浏览器语言自动切换用户当前所用语言的功能。在Magento根目录下的index.php文件中,我们可以在最下面看到如下代码。

Mage::run($mageRunCode, $mageRunType);
该行代码用于实例化Magento的店铺,参数一即我们需要关注的切换语言的最主要的参数,为店铺视图的code。也就是说,我们可以通过类似如下的代码,来让Magento运行当前系统中已经创建的不同的Store View。

//运行德语视图
Mage::run(‘de’)

//运行法语视图
Mage::run(‘fr’)
当然,能够通过这种方式切换的前提之一,是你已经在系统中创建了de和fr两个不同的Store View。如果你已经安装了德语和法语的语言包,通过修改该段代码,你会发现,系统初始化的视图已经由默认的英文视图变成了修改后的德语或法语视图了。

magento URL大小写404解决

把magento默认地址是:http://www.***.com/abc.html
现在要求:http://www.china-hf.net/ABC.html,也能访问。

在这种情况下Magento默认是不支持的。那怎么办?

首先找到:app/code/core/Mage/Core/Model/Resource/Url/Rewrite.php,这个文件的public function loadByRequestPath(Mage_Core_Model_Url_Rewrite $object, $path)方法,大概在134行。
修改这个方法里面的一行代码就可以了。

在158行的样子,找到:if (!array_key_exists($item[‘request_path’], $mapPenalty))改成

if (!array_key_exists(strtolower($item[‘request_path’]), array_change_key_case($mapPenalty)))就可以了。

解决Magento网站Paypal付款失败返回购物车产品被清

Magento网站paypal支付会遇到这个问题,当我们使用第三方支付工具paypal支付的时候,用户付款不成功或者取消了订单再返回网站时,发现购物车里面的产品已经被清空了,如果是客户主动cancel的还好,但是如果是操作失误的原因而未能付款,客户会非常不满意。
VCPHP网站模板下面通过这个方法帮大家解决这个问题,Magento通常的方法是如果判定为第三方的gateway作为支付工具的话直接save quote
$this->getOnepage()->getQuote()->save();
我们解决的方法是,判定如果页面转向第三方支付gateway 如 paypal则不保存 quote,这样就不会清空shopping cart
app/code/core/Mage/Checkout/controllers/OnepageController.php
找到这段代码
$this->getOnepage()->getQuote()->save();

if (isset($redirectUrl)) {
$result[‘redirect’] = $redirectUrl;
}
改成
//$this->getOnepage()->getQuote()->save();

if (isset($redirectUrl)) {
$result[‘redirect’] = $redirectUrl;
}
else {
$this->getOnepage()->getQuote()->save();
}
替换原来的文件即可

magento水印设置

magento水印设置,首先进入后台system/configuration/design->products imagewatermarks
将这个页面的信息填上就ok了。
Base image watermark defaultsize:表示基本的图片水印默认大小
Base image watermark opacitypercent:表示基本图片水印的透明度,是以百分比填写
Base image watermark:表示基本图片水印,
Base image watermark position表示基本图片水印显示的位置
Small image watermark defaultsize表示最小图片水印默认大小
Small image watermark opacitypercent表示最小图片水印的透明度,是以百分比填写
Small image watermark:表示最小图片水印,
Thumbnail image watermarkposition表示缩略图片水印显示的位置
Thumbnail image watermark defaultsize表示缩略图片水印默认大小
Thumbnail image watermark opacitypercent表示缩略图片水印的透明度,是以百分比填写
Thumbnail image watermark:表示缩略图片水印,
Thumbnail image watermarkposition表示缩略图片水印显示的位置
当以上信息填完时,记得去magento\media\catalog\product\cache目录下的文件删除和刷新缓存

magento删除产品时删除产品图片

原本的magento程序在删除一个产品的时候是不会把产品相关的图片也删除。这样造成两个问题
一是:这样长时间下来,会导致空间里有太多的没用的产品图片,占用太多资源。
二是:在批量倒入时,如果产品图片库有有新导入的产品图片,造成新导入的产品图片会更名,造成一个产品多个一样的图片

解决办法:
将app/code/core/Mage/Catalog/Model/Product.php
拷到
app/code/local/Mage/Catalog/Model/Product.php
然后在delete函数中的第一行加入以下代码:
foreach ($this->getMediaGallery(‘images’) as $image){
$image_path = $this->getMediaConfig()->getMediaPath($image[‘file’]);
if(file_exists($image_path)){
@unlink($image_path);
}
}