Magento2.0,我们在等待你

特色

文章前面我要说明,Magento2.0和1.X是完全不同的两个版本.简单来说,magento2.0完全是重构的.完全的不同,彻底的不同.记住哦,这是magento贰

git获得magento2源码:https://github.com/magento/magento2

magento2官方wiki页面:http://mage2.magentocommerce.com/wiki

以下介绍来自Magento俄罗斯开发大会的PDF资料(俄文和英文)和其他相关blog.

一.完全不同的文件结构

简化了Magento的文件结构,pub下面把可访问文件都包含了进去.增强了安全性.文件结构也更加的简洁.

二.Only jquery

还记得那可恶的protype么?一直觉得magento连js库都要使用全面向对象的.现在Magento2.0使用了jquery,开发更简单.html页面file size更小.

爱死你了Magento……………….贰

三.支持多更的database.

哥哥泪牛满面啊..终于不支mysql一个选择了.空了可以试试magento跑在oracle和postgreSQL上的感觉了

四.更多的API支持.

用magento1.X在本度读取一条数据如果需要1秒,使用soap就要5秒..现在支持这么多格式了..不知道api速度慢的问题能解决不.

五.更好的多语言支持

每种语言可以导入录入,前后台翻译完全分离.

要使用之后才能发现比现在的翻译功能强在哪里,虽然现在的多语言翻译功能已经非常的强了.

六.更强的开发文档

七.更简单的模板设计

这尼玛,搞得和QQ空间一样了.你让做模板的人怎么混啊.

八.更简洁的namespace.

php5.3都这么久了.终于不用看magento那杯具的namespace了.

九.autoloading更简单,更强大了.

没有绝对路径,没有代码池(code pools)开销…再也不需要编译了.

十.可以随意关闭模块了

你可以把catelog,sale,log这些模块都关掉.让magento变成一个纯粹的CMS或者一个框架.

十一.更强大的debug.

magento和firebug双贱合璧…简称牛壁.

本来我还想继续介绍下去的,但是我发现我的膝盖中箭了.真的不好意思.推荐大家看下alan的blog

ps.欢迎转载,but请留下一个链接.

Magento的颜色选择插件和团购插件

color swatches

很多人需要颜色选择插件和团购插件,官网的插件市场Magento Connect中提供了大量的这些插件,大家可以时刻关注下是否有自己需要的插件。

Magento商品颜色选择插件:http://www.magentocommerce.com/magento-connect/catalogsearch/result/?id=&s=1&pl=0&te=0&q=Color+Swatch&t=0&p=1

Magento团购插件: http://www.magentocommerce.com/magento-connect/catalogsearch/result/?q=Groupon&pl=0

转载表明出处:www.hellokeykey.com

 

 

Magento的生成商品XML CSV利器Data Feed Manager

data feed manager

data feed manager

google shopping需要将商品导出为指定的XML格式,用 Data Feed Manager 这个工具就非常的方便来组织数据。官网网址 http://wyomind.com/ ,他们的说明文档很清楚,基本可以熟悉如何定制自己的数据。

如果你只想向google shopping提交商品数据,那么你使用其它免费的Magento插件即可,如果你的数据需要按照其它规则进行定制,那么这个插件也许就是你想要的。

插件中你可以设置属于你自己的过滤规则,比如将某些商品屏蔽掉。你可以按照商品的各个属性来过滤商品,可以按照分类来过滤商品。

如果过滤插件内置的输出内容不能满足你的要求,你甚至可以直接插入 PHP 代码来获得你想输出的内容,如果插入php见插件的说明文档。

简单介绍下两款插件:

Simple Google Shopping: 30欧元,看名字就知道是只可以生成适用google shopping格式的商品数据。适合一般店家使用。

Data Feed Manager: 80欧元,可以生成XML CSV等格式的商品数据。适合对magento比较熟,功能需求多的用户。

转载标明出处:www.hellokeykey.com

使用SKU过滤Magento的google sitemap

四惠地铁站

四惠地铁站

有些商品不想让进入google的sitemap,我们来看下如何根据sku来过滤Magento的google sitemap。

感谢松泰帮我查了下代码。

1.Magento在前台页面有sitemap页面,页面会显示magento的分类和所有商品,主要是给搜索引擎爬虫来爬的,如果你某些商品不想被抓到,那么不能在这个页面显示出发来。

需要修改的核心文件路径:Mage\Catalog\Block\Seo\Sitemap\Product.php

当然你不能直接修改核心文件,放到code的local文件夹吧。

如下代码,屏蔽sku中带 cus001 的商品

 

    protected function _prepareLayout()
    {
        $collection = Mage::getModel('catalog/product')->getCollection();
        /* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */

        $collection->addAttributeToSelect('name');
        $collection->addAttributeToSelect('url_key');
        $collection->addStoreFilter();

        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
		$collection->addAttributeToFilter('sku',array("nlike"=>'%cus001%'));
        $this->setCollection($collection);

        return $this;
    }

如上的 $collection 添加了 去掉sku中包含 cus001 的商品。

2.需要屏蔽的第二个地方在网站声称的google sitemap的xml文件,此文件也是让搜索引擎抓取的,所以需要屏蔽。

需要的修改的核心文件路径为:Mage\Sitemap\Model\Resource\Catalog\Product.php

    public function getCollection($storeId)
    {
        $products = array();

        $store = Mage::app()->getStore($storeId);
        /* @var $store Mage_Core_Model_Store */

        if (!$store) {
            return false;
        }

        $urCondions = array(
            'e.entity_id=ur.product_id',
            'ur.category_id IS NULL',
            $this->_getWriteAdapter()->quoteInto('ur.store_id=?', $store->getId()),
            $this->_getWriteAdapter()->quoteInto('ur.is_system=?', 1),
        );
        $this->_select = $this->_getWriteAdapter()->select()
            ->from(array('e' => $this->getMainTable()), array($this->getIdFieldName()))
            ->join(
                array('w' => $this->getTable('catalog/product_website')),
                'e.entity_id=w.product_id',
                array()
            )
            ->where('w.website_id=?', $store->getWebsiteId())
            ->joinLeft(
                array('ur' => $this->getTable('core/url_rewrite')),
                join(' AND ', $urCondions),
                array('url' => 'request_path')
            );

        $this->_addFilter($storeId, 'visibility', Mage::getSingleton('catalog/product_visibility')->getVisibleInSiteIds(), 'in');
        $this->_addFilter($storeId, 'status', Mage::getSingleton('catalog/product_status')->getVisibleStatusIds(), 'in');
		$this->_select->where("e.sku not like '%cus001%'");
        $query = $this->_getWriteAdapter()->query($this->_select);
        while ($row = $query->fetch()) {
            $product = $this->_prepareProduct($row);
            $products[$product->getId()] = $product;
        }

        return $products;
    }

上面代码也屏蔽掉了sku中带 cus001 的商品。

转载表明出处:www.hellokeykey.com

在centos上安装Magento1.7和zendServer

前言:
曾经写过《在centos上安装Magento和zend server》的博文.但是在后面的留言中,网友已经提示方法已经过期.
所以有了本文.这次会像上文一样记录详细的经过,帮助linux不太熟悉的朋友快速在自己的服务器上快速安装Magento.

  • 1.为什么使用zend server?
  •      zend server是一款Lamp套件,可以快速稳定的让自己搭建起Magento环境.
  • 2.为什么使用vps?
  •      说实话,使用虚拟空间.magento的很多功能不能或者不容易实现.我们建议大家在实际商用过程中使用vps或者独立服务器.
  • 3.为什么使用centos?
  •       首先是建议大家在实际使用中,一定要选linux环境.稳定性,安全性和速度都会让你的Magento有一个全面的提升.

先说下环境:

  • 1.这次我们用的是VPSIOVPSIO是国内一家性能十分优秀的VPS,服务器在美国.这次拿的512那款来测试跑Magento
  • 2.系统CentOS 5.7 x86
  • 3.内存:512M
  • 4.swap:1G
  • Magento版本:Magento CE 1.7.0.0 beta1 下载
  • zendServer for linux版本:5.6.0 SP1 下载

一.安装zend server.
1.首先使用putty连接到自己的服务器.
2.下载RPM安装包,我们安装的是zendServer5.6.如果你也是安装这个版本.可以直接在本Blog下载.如果你需要其他版本或者非linux环境.请去zend官方网站下载:
http://www.zend.com/en/products/server/downloads


3.解压缩上面下载的文件到一个临时目录.
tar -zxvf 压缩文件名.tar.gz /tmp


/tmp这个参数是让这个压缩文件解压缩到tmp这个文件夹下.更多的安装帮助其实可以查看解压缩之后的README文件.
4.更改目前的目录,到安装脚本文件目录下
cd ZendServer-RepositoryInstaller-linux


5.下面就可以直接直接运行sh文件,进行安装.
./install_zs.sh 5.3


意思是安装php 5.3这个版本.鉴于我们需要安装的是magento 1.7.所以我们也推荐安装php 5.3


6.安装完成后,就可以使用http://localhost:10081/ZendServer访问你的zend server后台管理界面了.为了安全.建议使用ssl访问你的zend server后台https://localhost:10082/ZendServer

经过一系列设置之后,你的vps就可以安全的运行Mangento了.

注意:以上方法最好是用Root权限和有yum命令扩展情况下使用.

 

二.创建一个空数据库给Magento用.

zend server是没有安装mysql数据库的直接yum下来就可以

yum install mysql-server mysql php-mysql

service mysqld start/stop/restart 开启/停止/重启mysql

mysqladmin -u root password ‘****’ //设置root密码

mysql CREATE DATABASE mgdb; //创建一个库名为mgdb給Magento用

 

三.安装Magento1.7.0.0

在安装Magento之前,最好先把你的zend server设置修改下。。因为Magento在安装的时候.需要大量的服务器资源,如果资源不够就容易白屏或者内存溢出.

需要修改的有两个地方.一个是max_execution_time和memory_limit 。max_execution_time修改成84600,memory_limit 请修改为256M+,我修改的是512M

好了,下面是我们的Magento在centos和zend server上的安装步骤:

1.首先cd到var/www/下,并创建自己的文件夹,比如创建magento这个文件夹:

mkdir magento

2.cd到新建的文件夹下,然后下载.

wget http://www.magentocommerce.com/downloads/assets/1.7.0.0-beta1/magento-1.7.0.0-beta1.tar.gz

3.解压缩文件,并把文件移动到/var/www/magento下

tar -zxvf 文件名
mv magento/* magento/.htaccess .

4.更改文件夹及文件权限

chmod -R o+w media var
chmod o+w app/etc

5.修改zendserver配置(conf文件)。并使用域名访问自己的magento

建议在/etc/httpd/conf.d/下面创建一个自己的conf文件方便管理.
NameVirtualHost vps.magentochina.org

DocumentRoot /var/www/magento
ErrorLog /usr/local/zend/var/log/magento_vhost_error.log
CustomLog /usr/local/zend/var/log/magento_vhost_access.log combined

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
allow from all


改好之后就可以直接通过浏览器访问你的Magento了.

 

 

下面是拍死说Magento速度慢的人:

这个是国内访问的速度,vps在美国…就算跑phpinfo()页面.也至少300ms

下面是并发测试:

 

不要说慢.你达到这个流量,买几台独立服务器都没问题了.而且这个只是512vps下的速度.

下面是这个美国512M vps开启缓存情况下跑并发的结果。。拍死说慢的家伙:

还慢么?  在最后感谢VPSIO提供VPS进行测试

在Magento上实现高级定制

Magento实现高级定制

Magento实现高级定制

 

什么是本文讲的高级定制?

如上图,用户可以通过下拉菜单选择颜色和尺码来购买商品。但是用户发现自己的身材和商品提供的尺码表不一样(比如用户选了M码的尺寸,但是一对应尺码表发现,肩宽合适,但是腰围不合适),需要按照自己的尺寸来定制,就要手动输入,往往我们就叫这个定制功能为高级定制。

那么如何来实现高级定制呢?下面我来说下。

商品A信息:

SKU编号:AAAA

颜色(下拉菜单dropdown):红 黄 蓝

尺码(下拉菜单dropdown):X,L,M

商品B信息:

SKU编号:AAAA-CUS

颜色(下拉菜单dropdown):红 黄 蓝

尺码1(输入框input):

尺码2(输入框input):

尺码3(输入框input):

尺码4(输入框input):

…………..

尺码N(输入框input):

 

通过对比上面的数据,可以发现我在SKU上做了文章,B商品的SKU是A商品的SKU后面增加“-CUS”。B商品的尺码是用户可以自己输入的。

实现原理:

1.如果A商品需要高级定制功能,那么必须有与之对应的B商品存在,两者在SKU上必须存在上面所说的规律。B商品建议设置为前台不可见,搜索不可见。

2.在A商品页面的时候,用程序获取A商品的SKU。比如获取A商品的sku是”123″,那么就通过程序来判断sku“123-CUS”的商品是否存在,如果存在就说明A商品可以进行高级定制。

3.通过SKU获取B商品的数据,生成输入框和加入购物车按钮构建<form>,可以去看下B商品的form是如何写的。

4.当用户下单后其实购买的是B商品,所以在购物车定地方点击商品的链接会返回B商品的页面,请保持B商品信息的完整。

5.如果定制商品要用户付额外费用,无论你B商品是从后台添加的还是靠CSV批量添加的,都要做相应的处理,你可以直接增加B商品的价格,也可以在自定义选项(custom options)上做文章。

在自定义选项上你可以设置增加10元,也可以设置减少10元,你做一些促销活动,互动活动就会非常的方便,只需要程序上处理下即可实现价格增减。所以建议将价格设置到自定义选项中。

 

代码片段:在view.phtml文件中如何通过A商品的sku获取B到商品

$s = $_product->getSku().'-CUS';
$p_ID = Mage::getModel('catalog/product')->getIdBySku($s);
$product = Mage::getModel("catalog/product")->load($p_ID);

如何输出B商品的form

<?php

	foreach ($product->getOptions() as $option) {
		$values = $option->getValues();
		if($option->getTitle() != 'free')
		{
			echo '<dt><label>'.$option->getTitle().'</label></dt>';
			}
		if($option->getType() == 'drop_down')
		{
			echo '<dd><select name="options['.$option->getOptionId().']">';
			$values = $option->getValues();
			foreach ($values as $v) {

			$option_value = $v->getData();
			echo '<option value ="'.$option_value[option_type_id].'">'.$option_value[default_title].'</option>';
			}
			echo '</select></dd>';
		}

		if($option->getType() == 'field' && $option->getTitle() != 'free')
		{
			echo '<dd><input class="input-text required-entry  validate-zero-or-greater" type="text" name="options['.$option->getOptionId().']" /></dd>';
		}
		if($option->getType() == 'field' && $option->getTitle() == 'free')
		{
			echo '<dd class="no-display"><input value="" class="input-text validate-alphanum" type="text" name="options['.$option->getOptionId().']" /></dd>';
		}

	}
?>

上面是一个例子,你不必非要这样来写。这段代码中,我将有的输入框给隐藏掉了,是为了做价格上的调整,比如用户需要高级定制,我就会在原价上增加一定的价格。就可以用这个隐藏的输入框来实现。 – – ! 那些用firebug的用户来买东西就管不了了。

商品如果是批量上传的,实现本文的方法,是非常方便的。

补充:

当然还有别的方法可以实现这个高级定制,比如不需要B商品,直接给A商品增加一个input的custom options,然后用js的方式将各个尺寸存到这个input中即可。但是那样做的话会对模板修改很大。可以说各有利弊。如果大家方便批量上传B商品,使用本文的方法还是不错的。

转载标明出处:www.hellokeykey.com

Magento批量导入输入框

Magento批量导入输入框

Magento批量导入输入框

我博客之前讲到了Magento如何批量导入图片,批量导入下拉菜单,那么如何批量导入输入框呢?如上图

对于批量导入不熟悉,可以参看我博客的批量导入文章:

3.Magento导入多图,自定义选项 (3)

下面我们来看下CSV的关键字段应该如何写,如下图

magento批量导入输入框CSV文件

magento批量导入输入框CSV文件

我们可以看字段中到Size和Color为前台显示的输入框标题,如本文开始处的图片所示。field表示这是输入框,1表示此处为必填项。

他们的值 :fixed:-5::35 第一个分号前面留空,此处值不重要所以留空,fixed:-5 表示填写此项减少5元,fixed:10表示填写此项增加5元金额,这也如文章开始出的图片所示。35表示此输入框最多可以输入35个单位的字。如果大家有更多输入框,可以照此格式继续添加。

注意书写CSV的时候使用UTF8编码,英文字符。

相关文章参考:http://sourceforge.net/apps/mediawiki/magmi/index.php?title=Custom_Options

转载表明出处:www.hellokeykey.com

在Magento的描述中显示当前商品图片

magento move more views to description

magento move more views to description

 

如何在商品的描述中添加商品的图片呢?当然可以。修改后效果如上图。

本例使用magento 1.6来进行举例,其它版本可能稍有不同。

打开你的当前模板文件中的:template\catalog\product\view\ description.phtml

添加显示图片的代码,修改后代码如下:

<?php $_description = $this->getProduct()->getDescription(); ?>
<?php if ($_description): ?>
        <?php echo $this->helper('catalog/output')->productAttribute($this->getProduct(), $_description, 'description') ?>
		<?php if (count($this->getProduct()->getMediaGalleryImages()) > 0): ?>

				<ul>
				<?php foreach ($this->getProduct()->getMediaGalleryImages() as $_image): ?>
					<li>
						<img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->resize(500); ?>" alt="<?php echo $this->htmlEscape($_image->getLabel()) ?>" />
					</li>
				<?php endforeach; ?>
				</ul>

		<?php endif; ?>
<?php endif; ?>

你可以修改图片的尺寸以配合你的页面宽度。

转载表明出处:www.hellokeykey.com
 

Magento 使用Api将Sku添加到Url中

Magento api add sku to url

Magento api add sku to url

使用Magento Api修改商品Url路径的测试程序,希望对大家理解Api有帮助.

主要目的是通过Api去将商品的sku编号加到商品Url的后面,批量来更新Url,代码如下。

<?php
$proxy = new SoapClient('http://www.yourdomain.com/api/soap/?wsdl');
$session = $proxy->login('username', 'abc1234');

//获取全部商品
$products = $proxy->call($session, 'product.list');
//print_r($products);
echo count($products);
$i = 0;
foreach($products as $product)
{
$i++;
if($i>249 && $i<300)
{
echo $product[sku]."-Start<br />";
//获取商品url
$product_one = $proxy->call($session, 'product.info', $product[sku]);
//print_r($proxy->call($session, 'product.info', $product[sku]));
$new_url = $product_one[url_path].'-'.strtolower($product[sku]);
echo $proxy->call($session, 'catalog_product.update', array($product[sku], array('url_path'=> $new_url)));
echo $proxy->call($session, 'catalog_product.update', array($product[sku], array('url_key'=> $new_url)));

//print_r($proxy->call($session, 'product.info', $product[sku]));
//echo $new_url;
echo $product[sku]."-OK-".$i."<br />";
}
//break;
}

//获取商品sku
//$proxy->call($session, 'product.info', 'sku');

转载标明出处:www.hellokeykey.com

Magento给商品页面的tabs添加tab

magento商品页面添加tab

magento商品页面添加tab

Magento的modern模板的商品详情页面有个Tabs,既然是原生的,那拿到别的模板去用就很方便,那么如何向这个tab中添加新的tab项目呢,如上图。

我来演示下我的添加步骤的,大家照猫画虎即可,添加多少个也木有关系。

第一步:修改模板layout/catalog.xml文件,代码片段如下

<block type="catalog/product_view_tabs" name="product.info.tabs" as="info_tabs" template="catalog/product/view/tabs.phtml" >
	<action method="addTab" translate="title" module="catalog"><alias>description</alias><title>Product Description</title><block>catalog/product_view_description</block><template>catalog/product/view/description.phtml</template></action>
	<action method="addTab" translate="title" module="catalog"><alias>upsell_products</alias><title>We Also Recommend</title><block>catalog/product_list_upsell</block><template>catalog/product/list/upsell.phtml</template></action>
	<action method="addTab" translate="title" module="catalog"><alias>new</alias><title>New tab</title><block>catalog/product_view_new</block><template>catalog/product/view/new.phtml</template></action>
</block>

最后一行我添加了名字为 new 的新tab。

第二步:创建文件路径app\code\local\Mage\Catalog\Block\Product\View\,在此路径新建文件New.php ,文件内容为

<?php
class Mage_Catalog_Block_Product_View_new extends Mage_Core_Block_Template
{
    protected $_product = null;

    function getProduct()
    {
        if (!$this->_product) {
            $this->_product = Mage::registry('product');
        }
        return $this->_product;
    }
}

注意class的名称是Mage_Catalog_Block_Product_View_new,最后是new结尾。

第三步:在模板文件路径template\catalog\product\view\ 下新建 new.phtml文件,文件内容为tab的内容

<h1>这个是新加的内容</h1>

结果如本文开始处的图片,这样添加一个tab的过程就完成了。

小白们注意啦!你们首先要保证你在用modern模板或者其它的模板中有modern中的找个tabs才行,不然本文对你用处不大。至于如何将modern模板中的tabs引入你的自己的模板中google下吧,教程也很多的。

 

转载表明出处:www.hellokeykey.com

Magento导入多图,自定义选项(3)

magento批量导入

magento批量导入

如果你没有看前两篇介绍批量导入的文章,请先阅读前两篇文章。
Magento导入多图,自定义选项
Magento导入多图,自定义选项 (2)

在使用这个插件导入自定义选项的时候,我们发现导入的自定义选项的顺序,是按照字母顺序排列的。

比如,我们导入颜色下拉菜单,我们csv文件中的属性顺序是:  red,blue,white。但是导入后我们发现他们的顺序已经变成了:blue,red,white。也就是会按照字母的顺序来排列。

我们需要修改其插件代码,来fix这个问题。

需要修改的插件文件路径: app\code\community\CapacityWebSolutions\ImportProduct\Model\Convert\Adapter\product.php

代码片段说明:在大概132行的位置,添加 $i 变量,在大概210行位置,将sort_order的值换为$i++,这样就会按照导入顺序给导入值设置排序的权重。

	$i = 0;
        foreach ($importData as $field => $value) {
            if (in_array($field, $this->_inventoryFields)) {
                continue;
            }
            if (in_array($field, $this->_imageFields)) {
                continue;
            }
            $attribute = $this->getAttribute($field);
          	if (!$attribute) {

				if(strpos($field,':')!==FALSE && strlen($value)) {
				   $values=explode('|',$value);
				   if(count($values)>0) {
					  @list($title,$type,$is_required,$sort_order) = explode(':',$field);
					  $title = ucfirst(str_replace('_',' ',$title));
					  $custom_options[] = array(
						 'is_delete'=>0,
						 'title'=>$title,
						 'previous_group'=>'',
						 'previous_type'=>'',
						 'type'=>$type,
						 'is_require'=>$is_required,
						 'sort_order'=>$sort_order,
						 'values'=>array()
					  );
					  foreach($values as $v) {
						 $parts = explode(':',$v);
						 $title = $parts[0];
						 if(count($parts)>1) {
							$price_type = $parts[1];
						 } else {
							$price_type = 'fixed';
						 }
						 if(count($parts)>2) {
							$price = $parts[2];
						 } else {
							$price =0;
						 }
						 if(count($parts)>3) {
							$sku = $parts[3];
						 } else {
							$sku='';
						 }
						 if(count($parts)>4) {
							$sort_order = $parts[4];
						 } else {
							$sort_order = 0;
						 }
						 switch($type) {
							case 'file':
							     break;

							case 'field':
							case 'area':
							   $custom_options[count($custom_options) - 1]['max_characters'] = $sort_order;

							case 'date':
							case 'date_time':
							case 'time':
							   $custom_options[count($custom_options) - 1]['price_type'] = $price_type;
							   $custom_options[count($custom_options) - 1]['price'] = $price;
							   $custom_options[count($custom_options) - 1]['sku'] = $sku;
							   break;

							case 'drop_down':
							case 'radio':
							case 'checkbox':
							case 'multiple':
							default:
							   $custom_options[count($custom_options) - 1]['values'][]=array(
								  'is_delete'=>0,
								  'title'=>$title,
								  'option_type_id'=>-1,
								  'price_type'=>$price_type,
								  'price'=>$price,
								  'sku'=>$sku,
								  'sort_order'=>$i++,
							   );
							   break;
						 }
					  }
				   }
				}

                continue;
            }

 

 

修改后文件下载:Product.php

转载标明出处:www.hellokeykey.com