把Zen-Cart或OsCommerce数据迁移到Magento的方法

下面是关于如何将ZenCart或OsCommerce的客户,订单,目录,产品和图像导入到Magento的方法

 

1)安装osCommerce迁移工具

ZenCart和OsCommerce数据库是一样的的,因为ZenCart是一个OsCommerce子项目。

osCommerce迁移工具是由Magento核心团队开发,您可以安装它从MagentoConnect这里:

http://www.magentocommerce.com/magento-connect/Magento+Core/extension/114/os-commerce-import


2)更新Run.php文件:

根据不同版本,将以下链接中的内容替换到/app/code/core/Mage/Oscommerce/Block/Adminhtml/Import/Run.php
的Magento 1.5.x的:
http://svn.magentocommerce.com/source/branches/1.5-trunk/app/code/core/Mage/Oscommerce/Block/Adminhtml/Import/Run.php

的Magento 1.4.x的:
http://svn.magentocommerce.com/source/branches/1.4-trunk/app/code/core/Mage/Oscommerce/Block/Adminhtml/Import/Run.php

的Magento 1.3.x的:
http://svn.magentocommerce.com/source/branches/1.3-trunk/app/code/core/Mage/Oscommerce/Block/Adminhtml/Import/Run.php


3)复制产品图像

通过FTP复制您的目录和产品图片到MAGENTO的media/Import目录中,启用所有复制文件夹和文件的写入权限。


4)备份sCommerce或ZenCart数据库,同时备份Magento的数据库

使用phpMyAdmin或MySQL控制台工具,将OsCommerce或ZenCart数据库复制magento所在的主机中(其实只要开启OsCommerce或ZenCart数据库远程访问权限即可)。不要忘记做Magento的数据库的备份。


5)建立osCommerce(ZenCart)在Magento导入配置文件

 


填写表格:

– Name: name of the import profile

– IP or Hostname of the OsCommerce/ZenCart database

– DB name: name of the OsCommerce/ZenCart database

– DB username and password: password for login access to osCommerce/ZenCart database

– Prefix: prefix tables in osCommerce/ZenCart



6)运行导入配置文件

– 点击检查是否能访问osCommerce / ZenCart数据库(如果成功,您现在应该看到基本的资料和导入选项)。

– 下拉菜单选择现有的Magento website(Magento会为您创建针对每一个osCommerce语言对应的store view)。

– 目录:检查所有将倒入的ZenCart/osCommerce目录树结构

– 客户:检查所有的客户信息导入(osCommerce / ZenCart客户的登录名和密码将同时倒入到Magento中)

– 订单:订单记录将被单独保存到Magento中,并可通过客户的My account section > Order history或通过Magento的后台管理中查看。


点击“Start Running”按钮,开始导入(如果成功的话,你应该看到一个总的记录发现,成功和失败的相应数据)。


7)刷新缓存,并查看您的Magento中的Magento osCommerce目录!


关于zen-cart前台如何判断手机浏览器自动切换模板的思路

zen-cart不支持同一语言下的多模板前台切换,如何想根据不同的浏览器或不同的需要在前台切换模板,就比较为难,查到不官方资料.
我自己找了一下zen-cart的模板数据库中模板路径字段是 template_dir,找到引用这个字段的代码分别在
/includes/init_includes/init_templates.php
/includes/modules/payment/paypal/ipn_application_top.php
代码结构是
 $template_dir = "";
  $sql = "select template_dir
            from " . TABLE_TEMPLATE_SELECT . "
            where template_language = 0";
  $template_query = $db->Execute($sql);
  $template_dir = $template_query->fields['template_dir'];

  $sql = "select template_dir
            from " . TABLE_TEMPLATE_SELECT . "
            where template_language = '" . $_SESSION['languages_id'] . "'";
  $template_query = $db->Execute($sql);
  if ($template_query->RecordCount() > 0) {
    $template_dir = $template_query->fields['template_dir'];
  }

如果在这里增加一个判断手机浏览器或要求切换浏览器的代码,即可更换$template_dir中关于模板的变量,即可实现模板的动态更换.
那如何判断目前的浏览器是手机呢,以下给出示范代码.
function checkmobile(){
    if(isset($_SERVER["HTTP_X_WAP_PROFILE"])) return true;
    if(preg_match("/wap\.|\.wap/i",$_SERVER["HTTP_ACCEPT"])) return true;
    if(isset($_SERVER["HTTP_USER_AGENT"])){
        if(preg_match("/Creative\ AutoUpdate/i",$_SERVER["HTTP_USER_AGENT"])) return false;
       
        $uamatches = array("midp", "j2me", "avantg", "docomo", "novarra", "palmos", "palmsource", "240×320", "opwv", "chtml", "pda", "windows\ ce", "mmp\/", "blackberry", "mib\/", "symbian", "wireless", "nokia", "hand", "mobi", "phone", "cdm", "up\.b", "audio", "SIE\-", "SEC\-", "samsung", "HTC", "mot\-", "mitsu", "sagem", "sony", "alcatel", "lg", "erics", "vx", "NEC", "philips", "mmm", "xx", "panasonic", "sharp", "wap", "sch", "rover", "pocket", "benq", "java", "pt", "pg", "vox", "amoi", "bird", "compal", "kg", "voda", "sany", "kdd", "dbt", "sendo", "sgh", "gradi", "jb", "\d\d\di", "moto");
       
        foreach($uamatches as $uastring){
            if(preg_match("/".$uastring."/i",$_SERVER["HTTP_USER_AGENT"])) return true;
        }
       
    }
    return false;

大家可以试试!

开始joomla的旅途

这里做一个总结!
从两眼一摸黑,到会了zen-cart一年半,很熟练了,自己定义了一套zen-cart的高级版本,来做为这个阶段的收尾,然后移交给其它人使用.
感觉zen-cart有局限性,于是目标对准magento,学了4-5个月的magento,开始觉得无处入门,现在会熟练的修改和新开发模板,修改移植插件,有时还会自己做一些小插件,基本上够用了而且算中等略高的层次,再深入,就得搞mvc结构,这可不是一般的费劲.
会一两个商城平台,这期间也偶尔接触bbs平台,可惜没认真用上,但期间遇到很多cms的建站需求,可惜还不会csm的平台,这次再开始学习joomla,完成一般企业级网站商城和cms的平台应用!

zen-cart产品导出出现空白的处理流程和办法

zen-cart产品导出出现空白,只好调试了
第一步
打开文件 \admin\includes\application_top.php,找到
error_reporting(E_ALL & ~E_NOTICE);
修改为
@ini_set(‘display_errors’, ‘1’);
error_reporting(E_ALL);
第二步
重新刷新链接
/admin/easypopulate.php?download=stream&dltype=full
看到错误
Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 2101 bytes) in /home/romancearound/public_html/admin/easypopulate.php on line 932
发现可能是产品说明太大或者有一些特殊字符引起的
第三步
解决办法是
admin\easypopulate.php
第一行加入以下代码
@ini_set(“memory_limit”,-1);

再运行可以了!

用.net c#正式完成对magento zen-cart订单,客户资料混合同步到erp的功能

用.net c#正式完成对magento zen-cart订单,客户资料混合同步到erp的功能.
为什么叫混合同步呢?
zen-cart同步用的是对mysql中指定的数据库增量查询方式同步到本地的ms sql server中,然后到按指定格式进入勤哲excel的erp中.
magento主要用的是magento v2 soap webserver api的方式,将magento的相应数据按指定格式组织本地的ms sql server中,然后到按指定格式进入勤哲excel的erp中,同时也支持对magento使用的数据库按增量查询方式同步到本地.
同时用到两种同步渠道,对两种网店进行同步,所以说是混合同步.
既然能支持两种网店的同步,当然就有可能支持第三种,第四种.可惜我没那么多精力用这么网店,除了zen-cart,magento,其它就暂时不考虑了.不过其它网店只要用数据库增量查询方式同步就可以了.

zen-cart多语言提交Merchant Center或google base的注意事项

以日语为例,zencart的google base插件,会将产品说明,标题进行字符序列化,如果是英文就没事,还会给这些数据加上cdata标签,其实这些不是很必要,于是我自己该写了class\google_base.php的相应函数,如

function google_base_sanita($str, $rt=false) {
           	  $str = str_replace(array("\t" , "\n", "\r"), ' ', $str);
	  $str = strip_tags($str);
 $str = str_replace(array("\t" , "\n", "\r", "&nbsp;", "<li>", "</li>", "<p>", "</p>", "<br />", "<blockquote>", "</blockquote>", "<tr>", "</tr>"), ' ', $str);
$str = preg_replace('/\s\s+/', ' ', $str);
 $str = str_replace("&quot;", "\"", $str);
$str = str_replace(array("&amp;", "&"), "AMPERSAN", $str);
$str = preg_replace('/AMPERSAN[A-Za-z0-9#]{1,10};/', '', $str);
 $str = str_replace("AMPERSAN", "&", $str);

      $in = $out = array();
      $in[] = "&reg;"; $out[] = '(r)';
      $in[] = "&copy;"; $out[] = '(c)';
      $in[] = "&trade;"; $out[] = '(tm)';
      if($rt) {
        $str = str_replace(" ", "&nbsp;", $str);
        $str = str_replace("&nbsp;", "", $str);
      }
      $str = str_replace(array("&lt;", "&gt;"), array("<", ">"), $str);
      $str = trim($str);
      return $str;
    }

    // sanitizes code for XML
    function google_base_xml_sanitizer($str, $cdata = false) {
       $str = $this->google_base_sanita($str);

      $str = trim($str);
      return $str;
    }

这样生成的xml文件,就可以直接看到google base 或Merchant Center能接受的格式,并且我们直接看xml也能看到相应的文字信息
这里提醒一下,google base 或Merchant Center支持的国家多了几个,有日本和中国,还有其它一些。
这里还要提醒一下,google base 或Merchant Center上提交数据,最好是在有做这个网站广告的adwords的帐户上操作,不然google会提示因政策原因,提交失败。我搞了半天才知道这个“秘密”。
即使最终生成xml文件,里面依然会有很多问题,在向google base 或Merchant Center提交后,根据提示,逐个进行解决!
google base 或Merchant Center发布的最长有效期是30天,这个要注意,zencart上默认设置是365天,要改掉,不然会被google base 或Merchant Center提示有问题。

Zen-Cart安全建站的几个措施和步骤

Zen-Cart安全建站的几个措施和步骤的总结:

1、后台地址一定要改掉。
zen-cart 出的漏洞基本都是后台目录下的。改掉后台地址后,就算你的网站部打补丁也不容易被黑下来。这里尤其提醒用lightinthebox 那个系统的用户。不改掉后台地址简直是找死【这里鄙视那些用这套模板骗新手的业务员】。
修改方法:
假如我把后台目录地址admin 改成admin改。
找到文件admin 改\includes\configure.php ,修改如下:

后台目录建议用随机字符。【简单点的就是自己都不知道什么意思,在键盘上随机按几下。】
2、控制images文件夹权限。
很多任意文件上传漏洞所上传的文件都把文件上传到了这里。控制好了images 文件夹权限,网站就不容易死的很难看。一旦被人拿到了网站的WebShell【?这个等效于FTP ++】,那么你的网站的产品数据,zen-cart 数据库,模板都可以被别人拿下来。
控制images 的权限方法变态点的可以设为不可写,但这样自己的网站后台里也上传不了图片。推荐的方法
【也是官方的】是用.htaccess 文件控制权限。
.htaccess 文件的内容为:
# deny *everything*
<FilesMatch ".*">
Order Allow,Deny
Deny from all
</FilesMatch>
# but now allow just *certain* necessary files:
<FilesMatch ".*\.(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG|swf|SWF)$" >
Order Allow,Deny
Allow from all
</FilesMatch>
IndexIgnore */*
添加index.html空文件【这个是防止images 文件夹被遍历。
总结:在images 文件夹下添加.htaccess 文件和index.html 空文件。最高权限,Chmod 754 images -R
3、后台编辑的页
/public_html/includes/languages/english/html_includes
Chmod 755 * -R   最高权限
Chmod 444 * -R   最低权限
4、删除存在隐患的目录并禁止下载商品
rm docs -fr
rm extras -fr
rm zc_install -fr
rm install.txt -fr
rm download -fr
rm media -fr
rm pub -fr
删除了download目录,需再执行这条代码,禁止下载
update  `zen_configuration` set  configuration_value='false'  where 'DOWNLOAD_ENABLED'=configuration_key

5、打好补丁【漏洞信息请看下面附录】
明知有漏洞而不处理,那只能是等死或者你很失败,你的网站估计就你自己访问过了。也没必要看这份文件了。
6、尽量不要开启MySQL的远程连接
一般的虚拟主机都不会开启这个的。不开启这个功能是有好处的。即使你的数据库资料暴露,别人也连部上你的数据库。
7、不要采用弱密码。
曾经无聊,一个站用尽了办法黑不进去,准备放弃,随手输入admin888,结果后台就进去了,然后毫不客气地把数据删光,这种用户需要在代价中成长。
这里的弱密码主要是:后台密码、数据库密码、FTP 密码。
8、同空间的网站安全。
很多用户是一个虚拟主机里安装了N 个站的。很多时候其实自己就维护一两个网站,其他的网站就不在意了。
很多网站就死在了【旁注入侵】下。所以提醒,你空间里的网站都需要维护,都要注意安全。
9、第三方插件程序漏洞。
插件跟其他程序也是可能存在漏洞的,用的比较多的WordPress blog 程序也要注意打补丁。
总结:
一般的网站做好1 2 3 4  5点就没事了。要是还是被黑了。那恭喜你了,你的网站起码有被别人黑的价值,继续努力。

附上zen-cart 漏洞:
1zen cart 1.38a Fckeditor 编辑器漏洞【主要集中在国内的中文版】
Fckeditor 上传漏洞
此漏洞早期造成被黑的网站很多,可以将php 文件上传到images/目录
解决:
1、直接删除FCK 编辑器文件editors/fckeditor/ 。
或者只删除editors/fckeditor/editor/filemanager/upload/php/upload.php
2、升级Fckeditor 编辑器,下载最新版http://ckeditor.com/download 注意:不懂配置FCK 的话也可能造成
新的漏洞。
3、控制images 文件夹权限,在images 目录加一个空内容的index.html 文件和一个.htaccess 文件。
复制代码控制好了images 的权限,不让php 等的脚步文件运行的话前面1 2 点可以不搭理。
2Zen Cart 1.38 本地文件泄露【/extras/ 文件夹下的】
漏洞信息:
得到网页所在路径
/extras/ipn_test_return.php
得到网站配置信息
/extras/curltest.php?url=file:///网站地址/includes/configure.php
读取linux 服务器passwd
/extras/curltest.php?url=file:///etc/passwd
此漏洞可以读取includes/configure.php 文件。里面的数据库信息完全暴露。
解决:升级zen-cart 临时解决办法是直接删掉/extras/目录
3Zen Cart 1.38 record_company.php模块远程代码执行漏洞
漏洞分析:
Zen Cart 没有对admin/record_company.php 模块强制管理认证,远程攻击者可以通过record_company_image和PATH_INFO 参数上传.php 文件,并通过直接请求images/中的文件来访问上传的文件,导致执行任意指
令。
解决:
1、打补丁。临时办法直接删除admin/record_company.php 文件。【record_company.php 功能没几个人用上】
2、更改后台管理的目录。
3、控制images 文件夹权限,在images 目录加一个空内容的index.html 文件和一个.htaccess 文件,
4Zen Cart admin/sqlpatch.php SQL注入漏洞
漏洞分析:
Zen Cart 没有对admin/sqlpatch.php 模块强制管理认证,这允许远程攻击者在请求中通过query_string 和PATH_INFO 参数执行SQL 注入攻击。
用的最多的就是给你注入一个管理员账号,结果可想而知。
解决方案:
1、打补丁。临时方法,直接删除admin/sqlpatch.php 文件。
2、更改后台管理的目录。
5Zen Cart v1.3.9f (typefilter) 本地文件包含漏洞
解决:
升级最新版。这个一般不用太担心。估计很少人用到这个版本的

怎么去掉ceon_uri_mapping的链接中的cPath参数?

我安装了ceon_uri_mapping插件,为什么有部分的产品url后面带cPath呢?怎么去掉?
以下给出正确的方法:
在html_output.php中将

            if ($cpath_being_linked_to == zen_get_product_path($product_id)) {
改成
            if (!is_null($cpath_being_linked_to)) {

即可.
原始的必须判断当前产品的目录id等于cpath中的值才可,在有些情况下会不等.
大家试试

zen-cart非英文版无法生成html邮件的解决办法

zen-cart非英文版无法生成html邮件,在后台admin/工具/欢迎邮件  中只能看到text的邮件格式,html的邮件格式只有头部标题,当然前提是在 admin/配置/邮件格式 中要将 是否充许html邮件,设置成充许。
经排查,发现根目录的email中,虽然有一些html邮件对应的文件,但需在其目录下建立指定语言的目录,并包含这个文件。
如日语版,就在email目录下新建一个 ja的文件夹,然后将email目录下的文件全部拷到ja目录下,即可恢复正常。