• Magento 不同浏览器后台登录及下单问题笔记

    最近N个站都出现了 IE  谷歌浏览器正常但是火狐不行,或者另外的可以 ie不行, 而且之前这种问题都没出现,网站都可以正常运行。

    但是碰到这个就得想办法去解决咯,最开始是直接修改了Session的控制代码,类似于最早解决本地安装环境的方法,修改app/code/core/Mage/Core/Model/Session/Abstract/Varian.php文件

    session_set_cookie_params(
    $this->getCookie()->getLifetime(),
    $this->getCookie()->getPath()
    $this->getCookie()->getDomain(),
    $this->getCookie()->isSecure(),
    $this->getCookie()->getHttponly()
    );
     
    To this part:
    session_set_cookie_params(
    $this->getCookie()->getLifetime(),
    $this->getCookie()->getPath()
    //$this->getCookie()->getDomain(),
    //$this->getCookie()->isSecure(),
    //$this->getCookie()->getHttponly()

    );

     

    部分网站经过此修改就没什么问题了。但是三两天之后发现这个修改过的也无效了。再找其他的突破口,将后台有效时间无限扩大,终于在设置成 186400之后  所有浏览器又恢复常态,可以登录了。

    但是还是不清楚问题究竟出在什么地方,检查过服务器的时间,也没发现什么端倪。。。  菜鸟又悲哀了。。。

    如有高人路过还请指点一二 :-)

  • PHP页面跳转后传值编码问题

    网站分页或进行属性筛选时,如果没有使用Ajax动态刷新模块,而是采用post或get的模式传参,经常会碰到中文属性乱码的问题。 至于urlencode  urldecode 在传值前及值接收时的操作,就不用说了

    中文网站,是用浏览器访问时,站点代码采用utf8进行编码, 跳转所传的中文却被转换成了GBK的编码,这个时候就需要进行一些特别处理了,就是转码。

    当然转码之前首先要判断一下字符串是否已经是utf8的编码了,功能函数如下

    // Returns true if $string is valid UTF-8 and false otherwise.
    function is_utf8($word)
    {
    if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true)
    {
    return true;
    }
    else
    {
    return false;
    }
    } // function is_utf8

    如果不是,就使用 iconvmb_convert_encodingutf8_encode  对此参数进行转码,至于这几个转码函数   php手册中有详细介绍,这边就不赘述了,不同的服务器环境 可能需要不同的函数,不然可能还会出问题

    好了就记到这边  :-)

  • CanPHP在模板文件中调用模块方法

    默认在模板文件中只能接受调用方法传过来的参数,需要调用模块(module)方法的话,对框架中的cpTemplate文件进行一些修改就很方便了,使用方法与开发文档中相同。
    修改 CanPHP/core/cpTemplate.class.php 添加模块调用方法,使前台模板中可以调用指定模块中的方法
    ///查看 CanPHP/lib/common.function.php

    //模块之间相互调用

    public function  module($module)
    {
        static $module_obj=array();
        static $config=array();
        if(isset($module_obj[$module]))
        {
            return $module_obj[$module];
        }
        if(!isset($config['MODULE_PATH']))
        {
            $config['MODULE_PATH']=cpConfig::get('MODULE_PATH');
            $config['MODULE_SUFFIX']=cpConfig::get('MODULE_SUFFIX');
            $suffix_arr=explode('.',$config['MODULE_SUFFIX'],2);
            $config['MODULE_CLASS_SUFFIX']=$suffix_arr[0];
        }
        if(file_exists($config['MODULE_PATH'].$module.$config['MODULE_SUFFIX']))
        {
                require_once($config['MODULE_PATH'].$module.$config['MODULE_SUFFIX']);//加载模型文件
                $classname=$module.$config['MODULE_CLASS_SUFFIX'];
                if(class_exists($classname))
                {
                    return  $module_obj[$module]=new $classname();
                }
        }
        return false;

    }

    ——————–补充——————————–
    修改cpTemplate 文件之后,导致其他方法重新加载是网站出现异常 状况记录
    。LANG::get()  多语言中的cookie 重设问题,修改lib/Lang.class.php 中85行附近的setcookie 代码,添加if 判断

    if($_COOKIE['cp_language'] != $lang) setcookie('cp_language',$lang,time()+3600*24*365,'/');

    ———————待完善———————–

  • 思考如何成为“10倍效率”开发者

    读了一下《如何成为10倍效率开发者》感觉受教颇多,其中提到的几点着实是经常纠结的问题。比如 过早的优化是一切罪恶的根源,经常在开始一个项目的时候,总考虑的太多(每个人都是完美主义者),集中注意力不要被 邮件  Twitter Facebook 等等打扰,国内虽说没有Twitter  Facebook 但是替代的是干扰度有过之而无不及的QQ   新浪微博  等等,现在才真正理解了 某些公司上班时间禁止上网,或者压根都不能访问广域网的做法。作为一个中小公司的员工,很多问题可能是无法回避的,但是针对这些  建议策略,我想对每个开发者都是有意义的 :-)

    以下原文转自:http://www.9ria.com/news/2011/1227/24017.html

    Brad Feld 的一篇文章 The Rise of Developeronomics 中 提到了“10倍效率的开发者(10x developer)”的概念(伟大的开发者的效率往往比一般的开发者高很多,而不只是一点点),Adam Loving 在读了之后受到启发,并向多位大牛(Ben Sharpe、Collin Watson 和 Jonathan Locke)询问如何成为“10倍效率的开发者”,最后得到了以下的答案。

    1. 只做需要做的工作
    使用敏捷方法;
    全心全意做 UX 设计;
    沟通第一;
    编码也许不是解决问题的办法;
    过早的优化是一切罪恶的根源;
    选择最简单的解决方案。

    2. 站在巨人的肩膀上
    使用开源框架;
    使用简洁语言(如 HAML、Jade、Coffeescript);
    不要做重复的事情(不要重新发明轮子);
    利用包管理器来进行公共和私有代码分配;
    不要任凭巨头(如微软)的摆布而修复库中的一个 Bug;
    不要让你的雇主逼你学习;
    自主学习并为自己设定新的目标。

    3. 了解数据结构和算法

    如果你不知道什么时候应该使用快速排序、不懂辨认O(n2)程序、不会写递归函数,你将无法成为 10 倍效率的开发者。使用多种语言你才能清楚不同的框架是如何解决相同问题的。尽可能去了解底层命令(plumbing),以便能够作出明智的决定(Web 框架是怎么存储 session 状态的?Cookie 到底是什么?)。

    4. 不要怕买工具,它可以节省你的时间

    Ben 说:“昨天我花 50 美元买了一个位图字体工具,它帮我节省的时间成本绝对超过 200 元。”

    5. 集中注意力

    不要整天开着你的电子邮件、Twitter、Facebook 等,在工作时将它们最小化或关掉它们,戴上耳机。Tiny hack 说:“即使不听音乐我也戴着耳机工作,这样便不会有人打扰到我。”

    6. 尽早并且经常性地进行代码重构

    有时,你不得不放弃漂亮的代码转而去寻找真正对项目有用的代码,但没关系,如果你的现有项目中有这样的代码,最好的方式便是不要看它,并重构。

    7. 只管去做

    将你的业余项目分享到 Startup Weekend 中。在我开始转到 Unix 和 Ruby on Rails 上之前,我买了一台 Mac,使用 Windows 虚拟机花了一年时间做 .NET 项目。

    8. 挑选一个编辑器,并掌握它

    高效开发者喜欢用文本编辑器胜过 IDE 编辑器,因为这样可以学到更多东西。无论什么情况,尽量使用键盘快捷键,因为熟练使用一件工具的前提是熟悉它。

    在选择编辑器时,认真考虑并挑选最好的(Emacs 或 Vim),因为它们是通用的。其次,挑选你的首选平台最支持的。使用宏,不断地写代码;使用 Mac 上的 TextExpander 为整个段落创建快捷方式;使用 Visual Studio 或 SublimeText 的自动补齐功能;使用支持按行/列分割窗口的编辑器,这样你便能同时看到单元测试和代码(或模型、视图)。

    一定要想清楚后再写代码。Adam 说,“我有朋友在一个大项目组里工作,他们组里最高效的程序员是一个高位截瘫用嘴叼着棍子敲代码的人,他总是在写代码之前想得很仔细且很少出错。”

    9. 整洁的代码胜过巧妙的代码

    要想让其他人能够读懂你的代码,尽量使用最少的代码来完成任务。遵循 DRY(Don’t repeat yourself)的原则,使用明确定义的对象和库,将任务分解成小而简单的代码段。

    10. 潜意识是强大的工具

    离开 10 分钟往往就可以解决一个问题。控制编程时间,给自己一个多姿多彩的生活,劳逸结合能让你在工作时更高效、更愉悦。当然,即便是上了年纪的程序员也知道,以最少的时间完成最高效的工作是成为 10 倍效率开发者的必要条件。

    作为一个程序员,我觉得在职业生涯中最好的一件事儿就是从电脑前站起来,去拜访那些在某一领域有所建树的人们。

    11. 推动自身和团队进步

    重视批评,以包容的态度接受批评并提升自己是非常重要的事情。没有这个基础,你不可能成为一个高效的开发者。一位智者曾经说过:“聪明的人善于从自己的错误中学习,而智慧的人善于从别人的错误中学习

  • 关于Magento Order Invoice Shipment等编号的修改

    Magento支持定义不同的 订单发票及货运单号信息,但是在后台往往是找不到设置的。社区版的这个功能应该被阉割了吧,不过我们还是可以通过数据库的方式进行修改(暂时还没发现好的 插件),进入Magento对应的数据库, 浏览eav_entity_type 表会发现, order     invoice     shipment 这几列数据,一般对应id不会改变,分别为4  18   24
    浏览表结构,有三个对应的号码生成设置项, increment_per_store   increment_pad_length   increment_pad_char  ,第一个为抬头的编号,遗憾的是这边只能填数字。第二个为填充长度,第三个为填充的字符串, 修改效果大家可以本地测试看看。

    实际的单号生成代码可以查看下app/code/core/Mage/Eav/Model/Entity/Increment/Abstract.php   及 Numeric.php

    (注:简单的只修改订单等前缀的 可以直接通过修改 eav_entity_store 表中的列值即可 )

    如果你不想修改数据库,也可以在这边通过修改代码进行控制,不过测试的时候一定要注意  设置的默认值及生成单号的数据类型不能与数据库中的字段数据类型发生冲突,避免出现严重错误。

    好了  需要的朋友可以修改测试 去感受一下咯

click
©2010-2024 Jeen All Rights Reserved.Powered by emlog 京ICP备15058100号-1