• 为什么这么现实

    工作,交际,生活每天在轮转。
    突然回头看看,身边发生的一件件小事 不禁让人不寒而栗。
    高速发展的社会互联网时代,到处充斥着相对平等的恶意竞争
    每个人都会有自己的想法,希望抓住机遇的同时也在不断努力,汗水与泪水肆虐的奋斗过程中,机会近似于投机
    “投机”多么可怕的词语,对于没有实力的人来说,只能敬而远之
    走保守路线的我们也逐渐被消磨的意志全无
    在这个充满金钱权术、散发着浓郁铜臭味的时代,单单有技术本领是远远不够的
    想有所作为就必须进行血的较量
    努力不让自己落后,小步向前行
    何时方可到达希望的彼岸~~~~
  • Magento换血又要开始了

    从早期接触的Magento1.1 到1.2,到现在的1.6.2.0 几乎每隔不到一月就会更新发布一个Magento版本。当然大部分是为了修复bug。
    但是在去年10月份更新到1.6.1.0之后就很久没有动作了。社区版的Magento基于1610版的功能来看,基本成型了,1.6版也囊括了前台订单跟踪的功能,不过使用起来相对麻烦。
    两个多月过去了,1.6.2.0出世了,Magento1.6.2.0主要在功能bug修复及性能方面下了些功夫。像索引的构建效率及锁,修复了后台产品选项显示,订单内容显示,支付流程中的一些bug
    但在发布1.6.2.0版本之前,Magento提前进一个月发布了Magento 1.7.0.0-alpha1 版本,虽说是alpha版本,但是功能上对导航、优惠券、备份还原等功能上完善扩展了一大步,还新增加了不同用户组,可设置不同产品价格的功能,单看这点 已经让我个人很兴奋了。不过目前1.7版的bug还相当多,还是观望一阵子,期待稳定版的发布吧 :-)
  • Magento 使用 api实现track Order 订单跟踪

    Magento 使用 api实现track Order  订单跟踪 主要是针对1.5及以下的版本,因为在1.6中已经集成了订单查询的功能了。

    先介绍下使用说明吧(涉及一个代码文件,稍后贴出来)

    进入后台,
    System——>Web Service
    新建一个api用户 (记住用户名密码)
    (用户角色赋予 Order相关的权限)

    新建一个cms页面用于Order查询
    调用代码
    {{block type=”core/template” template=”cms/order-status-api.phtml”}}

    修改order-status-api.phtml 文件中的
    $proxy = new SoapClient(‘http://www.magentoeasy.com/index.php/api/soap?wsdl’);
    域名为目标网站域名

    修改如下代码中的用户名密码为新建的api 用户名密码
    //change to your API username/password
    $sessionId = $proxy->login(‘orderviewer’, ‘orderviewer’);
    OK至于cms页面的链接要怎么放,样式修改,以及新建api用户新建页面清理缓存之类的这边就略过了,需要的可以参考下早期的博文

    下面是 order-status-api.phtml 文件的源码

    <style type="text/css">
    .orderStatusTable {
        border:1px solid #CCCCCC;
        font-size:11px;
    }
    .track-order-table td { padding:3px;}
    .orderStatusTable td {
    padding:8px;
    }
    .currentStatus {
        font-size: 11px;
        background-color: #eee;
        padding: 10px;
        margin: 0 0 15px 0;
        line-height: 15px;
        border: 1px solid #ccc;
        color: #333;
    }
    .currentStatus span {
        font-size: 14px;
        line-height: 23px;
        color: #000;
    }
    </style>
    <div>
        <h3>Check My Order Status</h3>
    </div>
     
    <p>Please enter your order number and email address to see the status of your order.</p>
     
    <form name="" action="<?php echo $this->getUrl('track-order');?>" method="get">
    <table class="track-order-table" border="0" cellspacing="0" cellpadding="0">
        <tr style="padding:3px 0;display:block;">
            <td><strong>Order Number:</strong></td>
            <td><input type="text" name="order_id" id="order_id" value="<?php echo (isset($_GET['order_id'])) ? $_GET['order_id'] : ''; ?>" /></td>
        </tr>
        <tr style="padding:3px 0;display:block;">
            <td><strong>Email Address:</strong></td>
            <td><input name="email_address" type="text" id="email_address" value="<?php echo (isset($_GET['email_address'])) ? $_GET['email_address'] : ''; ?>" size="30" /></td>
        </tr>
        <tr style="padding:5px 0;display:block;clear:both;margin-top:10px;">
            <td> </td>
            <td><button class="button" title="Subscribe" type="submit"><span><span>Submit</span></span></button></td>
        </tr>
    </table>
     
    </form>
     
    <div></div>
     
    <?php
     
        $live = true; //determines verbosity of errors
     
        $error = '';
        $statusMessage = '';
        $trackingNumberMessage = '';
        $shippingMessage = '';
     
        $orderID = '';
        $emailAddress = '';
     
        if(isset($_GET['order_id'])) {
     
            //$orderID = trim(preg_replace('/[^0-9]*/', '', $_GET['order_id']));
            $orderID = trim(preg_replace('/[^0-9a-zA-Z]*/', '', $_GET['order_id']));
            $emailAddress = trim($_GET['email_address']);
            try {
     
                ini_set("soap.wsdl_cache", "0");
                ini_set("soap.wsdl_cache_enabled", "0");
     
                //******************************************************************/
     
                // change to match your domain name
                //$siteapiurl= $this->getUrl('index.php/api/soap?wsdl');
                //$proxy = new SoapClient($siteapiurl);
                $proxy = new SoapClient('http://www.magentoeasy.com/index.php/api/soap?wsdl');
                //change to your API username/password
                $sessionId = $proxy->login('orderviewer', 'orderviewer');
     
                //******************************************************************/
     
                //find all orders related to this id
                $orderById = $proxy->call($sessionId, 'sales_order.info', $orderID);
                //print_r($orderById);
                //echo "<hr>";
                $items = $orderById['items'];
                //print_r($items);
                if($orderById['customer_email'] == $emailAddress) {
                    //we are setting this variable for use later
                    $orderLookup = "success";
                    if (strtolower($orderById['status']) == "holded") {
                        $orderById['status'] = "On Hold";
                    }
                    $statusMessage = '<span>Your order status is: <strong>'.ucwords(str_replace('_', ' ', $orderById['status'])).'</strong></span>';
     
                    if(ucwords(str_replace('_', ' ', $orderById['status'])) == "Processing"){
                        $statusMessage .= '<br/><br/><strong>What does this mean?</strong><br/>Processing Time is the time it takes from when you submit your order to when the product leaves the Distribution Center.';
                    }
     
                } else {
                    $orderLookup = "failure";
                    echo "We were unable to find your order information. Please verify your Order Number and Email Address are correct.";
                }
                //echo $orderById['status']."<hr>";
                //if the order status is complete we look up shipping information
                if(strtolower($orderById['status']) == "complete" && $orderLookup == "success") {
                    //we look for all shipments related to this order id using internal magento order id
                    $findShipments = $proxy->call($sessionId, 'sales_order_shipment.list', array(array('order_id'=>array('like'=>$orderById['order_id']))));
                    //print_r($findShipments);
                    if (count($findShipments) < 1) { //if $findShipments is not an array
     
                        echo "There was an unknown error and your shipment information could not be found. Please contact Customer Service to get the current status of your order.";
     
                    } else {
     
                        //we pull the increment id for the shipment
                        $thisShipmentID = $findShipments[0]['increment_id'];
     
                        //now we pull all shipment info that specific shipment id
                        if(!$proxy->call($sessionId, 'sales_order_shipment.info', $thisShipmentID)){
                            $trackingNumberMessage = "Shipment ID: <strong>".$thisShipmentID."</strong>";
                            $shippingMessage = "Your order was shipped on " . $findShipments[0]['created_at'] . ".<br/><br/>";
                        }
                        else {
                            $getShipmentInfo = $proxy->call($sessionId, 'sales_order_shipment.info', $thisShipmentID);
                            //print_r($getShipmentInfo);
                                //set each variable
                            $shipDate = $getShipmentInfo['created_at'];
                            $defaultTimeZone = date_default_timezone_get();
                            date_default_timezone_set('EST');
                            //and echo the data to screen
                            $shippingMessage = "Your order was shipped on " . date("l, F jS, Y \\a\\t g:i:s a T", strtotime($shipDate . ' ' . $defaultTimeZone)) .".<br/>";
                            if(count($getShipmentInfo['tracks']) > 0){
                                foreach($getShipmentInfo['tracks'] as $temp_track)
                                $shippingMessage .= "Shipped By : ".$temp_track['title']."  ,Tracking Number :".$temp_track['number']."<br/>"; }
                                $shippingMessage .= 'Check your shipment state by tracking number~.<br>By Fedex : <a target="_blank" href="http://www.fedex.com/Tracking">Fedex Express</a><br/>
    By DHL : <a target="_blank" href="http://www.dhl.com/en/express/tracking.html">DHL</a><br/>
    By UPS : <a target="_blank" href="http://www.ups.com/tracking/tracking.html">UPS</a><br/>';
                            }
                            $shippingMessage .= "<br/>";
                        }
     
                    } //no errors
     
                }
     
                if($orderLookup != "failure"){
     
                    echo '<p style="padding: 10px; background:#eee; margin: 10px 0;">'.$statusMessage.'<br/>'.$trackingNumberMessage.'</p>';
     
                    echo $shippingMessage;
     
                    echo "<h4>Products in your order:</h4><ul>";
                            foreach($items as $item){
                                $temp_sku = $item['sku'];
                                if(strpos($temp_sku,'-'))
                                {
                                    $temp_sku=substr($temp_sku,0,strpos($temp_sku,'-'));
                                }
                                echo "<li>".number_format($item['qty_invoiced'], 0) . " x <strong>" . strtoupper($temp_sku) . "</strong> " . $item['name'] . "</li>";
                            }
                    echo "</ul>";
                }
     
            } catch (SoapFault $fault) {
                //this is a basic implementation of error checking. I am using try to stop the error from showing a nasty magento error page
                if($fault->faultcode == "100") {
                    echo "That Order Number was not found in our system.";
                } elseif ($fault->faultcode == "http") {
                    echo "Request timed out. Please try again later.";
                } else {
                    //leave this on for testing so we can see SOAP status codes; turn off for live
                    if ($live == false) {
                        echo "Error $fault->faultcode: $fault->faultstring";
                    } else {
                        echo "Error $fault->faultcode: $fault->faultstring"."<hr>";
                        //echo "There was an unknown error. Please try again later, or contact us.";
                    }
                }
            }
     
        } // end if
     
    ?>
    <p><br /><br /><em>For detailed information regarding the status of your order, please contact our helpful Customer Service Experts.</em></p>

    暂记如此,欢迎留言交流 :-)

  • 关于php框架,学习php

    作为一个从事Magento模板开发近两年的菜鸟级码农,虽说技术没有太大的长进,但是对于php的框架及相关开源的各类系统还是有一定的接触。闲来无聊,扯扯php的学习吧

    工作之前也没用过php,不过语法之类的大概看过一些。开始上班就接触Magento了,基于zend进行重新包装的Magento看起来确实太晦 涩吃 力了,尤其是没有基础甚至连照着说明文档搭建一个框架开发环境都没做过的人。接触一段时间之后逐渐熟悉了模板的结构,以及Magento的流程结构,但是 要摸准一 个功能的主线  细致到每个对象方法的调用,还是丈二和尚摸不着头脑。于是就考虑着一定要补充补充php的基础,起码常用的函数方法要能记住,看着php基础 的书,却又丧失了原有的动力和目标,因为那些所谓的语法、逻辑结构if  while  for。。。。数据类型 是在无法激起我学习的欲望。其实现在很多web开发的功能已经很好的集成在框架里面了,为什么不直接拿来用呢;没有坚实的基础,就不可能有长足的进步。究 竟要怎么整呢?   既然基础的提不起兴趣,那还是找个框架,或者开源系统来看看吧。首先就是最大的zend framework,Magento也是基于此重新封装开发的,但是太吃力,还是找轻松点的入门级的来看看吧。经过一番整理选择,流行的CI断断续续的接 触也快半年了,由于精力不足加之定力不够,一直没什么深入,也没做出个啥来,用了几个相关的开源系统,感觉基于CI的 GoCart 和 PyroCMS系统都还是不错的。

    中途一段时间由于把CI放到Linux Nginx 环境下  代码session的未知问题又让人头疼了,于是又开始寻找一个更基础更轻量级的php框架,就接触到了canphp。但是一段时间的使用又开始让人头疼 了,静不下心或许是最大的毛病吧。花太多的时间来累积一点点基础知识会让人有种恐惧感,毕竟现在已经不年轻了。

    就这样陷入了一个 基础学习还是二次开发的恶性循环纠结当中。而且对于前端做久的人来说,有一个弊病就是陷入到前端中不能自拔了(或许只是我的个人问题吧),本来想着是功能 逻辑开发,但是做着做着就发现大部分的时间又都转移到前台显示的样式美化上了,从php转移到js和css上,对于js也是只懂基本语法的人来说是相当 耗时间的,看来是中了做网站模板的毒啊。

    其实每个人可能都会有自己的弊病吧,就好像在51cto上面一个帖子提到的一些有资料收集癖好的人,我到现在也还经常无法控制自己。顺便提下,我的51cto 博客地址是
    vsfor.blog.51cto.com   ,里面也是一些基本的记录 笔记。 不管是找资料还是学习,每个人可能都在找一个自己适应喜欢的东西,准确的说是适合自己的,但是现实往往是寻不到合适的。如果你自己都不知道自己能适应什 么,什么合适,怎么能指望别人的东西迎合你的想法呢   :-)    或许需要改变的是思维,或许需要的更多是定力和耐心   所谓‘有志者,事竟成’的志者也应该是脚踏实地的人才对。

    无论想到做什么,就做吧,不开始就不可能会有结果 …..

  • 家,生活

    先转载一篇来自豆瓣的话题文章,如下

    回老家去?         □优游

    还在为跻身大都会沾沾自喜吗?多年寒窗苦读后,你终于也成为500强的一员。兴奋得挤地铁都挂着公司的工牌;只用本公司出产的手机;出差时陶醉地呼吸酒店的空气,似乎氧离子都变成五星级……

    几乎是完美的,如果春节不回老家的话。

    那“贫瘠落后”的土地上发生的一切,刺激了你的神经。

    首先,表哥家居然住上复式了。他2000多块钱的月工资,被你无数次嗤之以鼻。可县城的房价也远比都会里仁慈,800到1200元。加上姨夫 姨母的帮助,他轻轻松松地攻下160多平方米。二层小楼是这样布置的:一楼,茶室、书房、孩子的游乐房;二楼,卧室、老婆的健身房。某名家的淡墨山水,也 怡然大方地挂在墙上。对,就是你钟爱的那个名家。趁没人注意,你偷偷地摸了摸它,明白自己这辈子拥有它的可能性微乎其微。一、真迹很费银子;二、即使买得 起真迹,又哪里找那么大一面墙,安放梦想和心情?

    其次,同学小四居然当上科长了。因为脑袋大,中学时他得了个外号“胖头鱼”。头大不一定都是爱因斯坦,高考时他只上了个金融高专,毕业找工作 也很蹉跎,托老爸的关系进了老家的国土局。8年后,该局已经成了众所周知的权力部门。同学聚会[/B],他很谦逊很厚道的,真羡慕你们这些高材生。不过, 买单时,气派上来了,嗯,在这里签个字就可以了吧……饭后他殷勤地尽地主之谊,开一辆宝来载优等生们周游全城,这是荷花广场,准备开发成景观型住宅小区, 年后竞标。舍我其谁的模样,令你无端地惴惴。你深知,再怎么奋斗,终其一生,你的身份都不会是“大人”只会是小小的“子民”。

    第三,邻居的孩子居然上小提琴培训[/B]班了。此外,周六习大字,周日学游泳。学这么多有什么用?你脱口而出。孩子的妈妈、隔壁家的阿芳淡 淡答道,不图有用,就是陶冶性情。那姿态里洋溢的气息,为小城女子所特有,与世无争,怡然自得。你惭愧起来悲哀起来,“不为什么”地学一门技艺、养育一个 娃儿,这种人生观早已与你远离。你就是一台一周工作120个小时、春节加班挣三倍工资的人型机器。

    你与老家,与老家所代表的,早已远离。

    看来当初的想法“太傻太天真”。可“太傻太天真”的,又岂止你一人?万千人走一条路径:好好读书,争取留京留港留沪;进大公司,加薪的速度得 赶上房价的涨幅。一路玩儿命奔跑恨不得绝尘而去,要与平庸的、促狭的、不思进取的旧生活[/B]彻底别离。现在你发现,平庸的是自己,促狭的是自己,不思 进取的还是自己。当你在大都会为最基本的生存挣扎,老家的人民,正享受着平稳安逸带来的高品质性价比。

    “赚够100万就回家”,你不忿了,在论坛上发帖。100万每年的利息也有39000了,足够回老家挥霍,起床后就干三件事,闲逛、晒太阳、打麻将……你为这样的意淫自鸣得意,别了,卡奴,别了,股奴,别了,房奴,别了,曾经蛊惑过我激荡过我摧残过我的人生道路!

    支持!顶你!深受压迫的众兄弟附和,青春这样短,征途这样长,不如归去不如归去。所寓居的土地,不是熟悉的土地,后海虽然美,昆明湖虽然浩荡,但你热爱热干面远胜过豌豆黄。这座城市是油,你是水;这座城市是骨,你是皮。

    就要从一个极端滑向另一个极端了,直到有一个声音怯怯地问:“可是,老家有欢乐谷、嘉年华?老家有清华、北大、精彩的讲堂?老家每年暑假有国外的一级音乐团队来巡演?老家允许我们不靠任何关系,进很好的公司、靠真本领做人?”

    它点中你了。它点中了你迷茫的核心。

    是有一种岁月,写满了辛苦写满了艰难,可它意味着自己做主、长大成人;是有一种生活,远离了唾手可得的轻松与富裕,可涅槃之后,它还是会跟你 一起邂逅幸福;是有许多个假期,装满了思念牵挂与哀伤,可比起那些从未离开过的人们,你更深刻地品尝到浓浓的情意;是有一种视野,洗尽铅华度尽劫波的视 野,让你大气地活着宠辱不惊。

    说到底,这不是回不回老家的问题,是选择的问题。从最开始离开原点起,你和家乡的人们,就注定要画不同的半径。大和小的终局都是圆满。他们从容地画好了,你呢

    //////////////////////////////////////////////////////////////////////////////////////////////

    以上就是转载的《回老家去?》的原文

    家,个人觉得有人有情方能称之为家。但不管是在北上广还是在其他城市挣扎的蚁族,大部分也应该都有类似影视中的家的概念,就是那种所谓扎根就必须得 有一个自己的家,也就是房子。《北京爱情故事》 还是忍不住又去看了,其实对于这种反应着赤裸裸现实的片子,似乎量是多了,但是不敢看多,怕就怕心里仅存的那根筋什么时候也麻木了,那是多么悲哀的事(也 或许会是好事吧)。有情牵绊是一件辛苦又幸运的事情,阿Q曾经说 ‘多乎哉,不多矣’ 的时候,我想他应该还是很满足现状的,因为虽说不多但是还有

    影视媒体中的所谓噱头似乎不把你这最后的一根筋给整麻了就不肯罢休。金钱利欲熏心,勾心斗角的权术斗争  等等想想都让人不寒而栗的东西,似乎已经成为了效果仅存的精神毒品。但这最后的一根筋是要保留呢,还是保留呢?

    回老家去?  似乎很透彻    但回头看看大部分举证,似乎又带着我陷到一个圈子里面了,那个可怕的圈子。 我不了解我自己,所以我也从来不奢望谁了解我 ,   人生短暂,及时行乐     不是不可取,还得看你想不想取;“不因虚度年华而悔恨,也不因为碌碌无为而羞愧”,并不代表不可以虚度年华碌碌无为,因为没人会替你羞愧悔恨,也无法替代

    选择一种生活   选择一种人生

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