Published:
一月 7th, 2010 17:25
|
Categories:
蝌蚪转文
|
从今天开始,我要陆续把工作中遇到的一些跟Drupal有关的小问题发上来,希望会给其他同学一些参考。这些问题基本上都是Drupal Core和一些比较常用Contribututed Module衍生出来的,在不修改核心代码的前提下,通过Hook系统或者主题来完成我们想要的效果。
Drupal的CCK模块有一个很方便的特性:多值字段。在field的setting里面,可以选择Number of values。官方的Help是这样描述的:
Maximum number of values users can enter for this field.
‘Unlimited’ will provide an ‘Add more’ button so the users can add as many values as they like.
当选择Unlimited之后,编辑node的时候在这个field的下面会出现一个”Add another item”的按钮。这样用户可以添加无数个这样的字段。我们可以利用这个特性让用户上传无限量的文件,图片。
但是这里有一个问题,这个按钮上面的文字“Add another item”是硬编码到CCK模块里面的,这个不好。我们如果想做一个对用户友好的系统,不能让用户上传普通文件的时候显示”Add another item”, 上传图片的时候还是显示”Add another item”,我希望他们分别显示”Add another file”和”Add another image”。那我们该怎么做呢?
我的思路是:通过hook_form_alter来修改form的值。
function testmodule_form_alter(&$form, $form_state, $form_id) {
if( $form['#id'] == 'node-form') {
if(!isset($form['#field_info'])) {
return;
}
foreach($form['#field_info'] as $key => $info) {
if ( $info['type'] == 'field_image' ) {//假设图片的字段名是field_image
$form[$key][$key.'_add_more']['#value'] = t('Add another image');
}
}
}
这样图片字段的”Add another item”就变成”Add another image”了。但是这还不够。当你点击”Add another image”之后,这个按钮又变成了”Add another item”了,这是因为这是一个Drupal的AHAH调用。点击按钮触发了另外一个form,这个form的id不是node-form, 而是content_add_more_js。找到原因之后,我们只需要在前面的testmodule_form_alter函数里加上对content_add_more_js的修改:
if( $form_id == 'content_add_more_js' ) {
foreach($form as $key => $element) {
if ( isset($element[0]) && isset($element[0]['#type']) && $element[0]['#type'] == 'field_image' ) {
$form[$key][$key.'_add_more']['#value'] = t('Add another image');
}
}
}
好了,大功告成。
最后完整的form_alter是这样的:
function testmodule_form_alter(&$form, $form_state, $form_id) {
if( $form['#id'] == 'node-form') {
if(!isset($form['#field_info'])) {
return;
}
foreach($form['#field_info'] as $key => $info) {
if ( $info['type'] == 'field_image' ) {//假设图片的字段名是field_image
$form[$key][$key.'_add_more']['#value'] = t('Add another image');
}
}
}
if( $form_id == 'content_add_more_js' ) {
foreach($form as $key => $element) {
if ( isset($element[0]) && isset($element[0]['#type']) && $element[0]['#type'] == 'field_image' ) {
$form[$key][$key.'_add_more']['#value'] = t('Add another image');
}
}
}
Published:
一月 6th, 2010 20:55
|
Categories:
横眉冷对
|
很久没有这么频繁的更新博客了:不到一周时间。这也是新年的一个愿望,写博客勤快一点。曾经跟别人说过,写博客是一个记录生活的过程。隔几天安静下来,想想这些天做的事情,简单总结一下。这一年以来,或许因为微博客的出来,很多原来写博客的人都变懒了。生活变得越来越碎片化,说一段话都自动限制再140个字之内,慢慢失去了写稍微长一点儿文章的能力。长此以往,或许会损害一个人的思考能力吧。据说这期的《新周刊》会讨论微博客,我估计应该会有作者提到这一点吧。
假如每天没有几句想要在微博客上说的话,那么那一天或许就有点儿问题。假如一段日子没有一篇博客能够生产出来,那么这段儿时间的生活或许也有点儿问题。
晚上回家的路上,我想着这个问题,发现生活中需要自己反省的事情还是不少的,把这些事情说出来,变成文字,本身是需要胆量和智慧的。假如觉得有些事情不方便说,或者不好意思说,只能说自己不够坦荡。记得再马克·奥勒留的《沉思录》里读到过一句话,大意是这样的:一个坦荡的人,能够在任何时候告诉别人自己在想什么。我们不是圣人,做不到那么极端的程度,只能有时想想吧。
今天有一件事情触动最深:
你是因为反驳人习惯了都
你怎么觉得什么都不好呢
是的,这是老问题了。但是今天的事情告诉我,空讲的效果是有限的,抓现行是非常有效的。想想最近的几次被抓现行,即使在电脑的前面我都很难受的低头悔过。或许我就是肉紧,不见棺材不落泪。
各位,听好了,我要学的宽容一点儿,不再那么自大,当我又没记性,习惯性的反驳你,记得提醒我,不胜感激。
Published:
一月 3rd, 2010 17:34
|
Categories:
浅斟低唱
|
这个元旦假期,北京下足了雪。
早上醒来的时候,拿起手机上twitter,看到几个起的早的家伙已经开始报告雪情。昨天晚上从公交车站往回走的时候,雪就已经飘起来了,经过这一夜,窗外的景色该是不一样了。但是来北京四年多了,没见过多大的雪。昨天的雪到了下午也基本快化没了。可是在看完了一场NBA的比赛之后,twitter上已经有人感叹这雪很大。
雪很大,会多大?去阳台看一眼,好像真的很大,全白了。
下了楼,才真正感知到这雪,真的是大。好多年没见过了,顿时心里一阵欣喜,一阵兴奋,一阵回忆。
姥爷生病在沈阳做手术的那年冬天,爸爸妈妈都去沈阳了,那年上小学一年级。我自己在家住,舅妈在吃饭的时候来给我做饭。那时候的冬天雪总是盖在地上的,不像这些年一冬天只有偶尔下几场雪地上才能有点儿积雪,主路上的积雪又迅速的被清扫干净。有一天早上起来,想起白天有美术课,老师让带两个煮熟的鸡蛋上课要画鸡蛋。前一天忘了这个事儿,早上起来就抓瞎。哭着喊着让舅妈给煮鸡蛋。煮好了带着鸡蛋乐乐呵呵的去上学了。我清楚的记得,那天早上上学的路上,天的颜色还很深,地上的积雪却发着光。后来美术课上画鸡蛋,好像是照着美术书画京剧脸谱,画好了让老师检查过了大家就把鸡蛋剥了吃了。
高中三年,坚持每天早上去上自习。冬天,五点半,吃完方便面或者炒饭之后,在积雪里深一脚浅一脚的往前走。路上基本没有人,有的时候我就闭着眼睛在路上走,不怕走错方向,不怕被车撞到。我甚至觉得有的时候我可以睡着就走到学校。
高三那年,毕业班的学生终于得到了赦免,不用扫雪,专心学习。有一次雪特别大,校外的部分由高一高二的学生干了,操场上还没干,学校决定给高三的也分一点,一班一长条。去广播室开会抽签,然后费好大的劲去弄扫雪的工具,然后,扫雪就变成了大家的狂欢。本来平整的白花花的操场,一会儿就鼓出了好多雪堆,然后是每个小盆友头上和身上冒出的热气,嘴里流出的笑声。在雪堆间疯跑,攒雪球打别人,聚众斗殴,躲雪球,躲围剿,某人被攻击地满操场跑也找不到活口,最后一直爬到了学校的校门上才侥幸逃生,我被三伙人从三个方向围堵,疲惫不堪,临死关头可算按住了一个康哥,往他脖子塞了好多好多的雪,被围攻也抓住了一个。当年那个操场上累的精疲力竭的兄弟姐妹们,现在真的飘散在四方。
今天北京的雪,够打雪仗了,可是没有人跟你打。堆个雪人吧,一个人又没那动力,堆完了,出来的只是孤独。
下午去找全三八同学,原来我知道的高中同学的信息还算是多的。那么多人,在那么多地方,奋斗着,生活着。
雪落下来了,让这个着急的城市安静了。停下来,想想,你在做什么。
Published:
十二月 31st, 2009 22:48
|
Categories:
浅斟低唱
|
匆匆写完了2009的总结,如雪泥鸿爪。
关于2010,还是有一些想象的,定些具体的目标或许不现实,一年的时间太长,中间变数太多。但是大概方向还是可以的。
首先,最重要的,我要变得靠谱一点儿,kaopulity,无论是做人还是做事。
然后,生活上,我觉得需要学做饭了。。。学会关心人,热心一点儿。。锻炼身体。
技术上,争取成为一个Drupal Expert,把技术博客建立起来维护好,把自己的收获回流到社区,向Drupal社区贡献module,甚至theme。同时,也向wordpress发点儿力,做几个像样的主题出来流传一下,这样才对得起新入手的mac。学习python,GAE,这样免费的云计算平台还是大有作为的。
要多读书,多写字,这个博客的更新节奏加快一些。
物质上,2009年已经过分了,买了blackberry,买了EPC,买了macbook。2010年,如果我能找到合适的房子,能够稳稳当当的愿意住上一年以上,我想组个台式机,嗯。。。大显示器。。折腾linux。。就这样。
OK,2010年,就要开始了,跑起来吧。
Published:
十二月 31st, 2009 22:29
|
Categories:
浅斟低唱
|
2009年马上就要过去了,忙忙活活的给macbook装了几个软件之后开始总结。
先上几张截图,来自http://www.google.com/history/trends?all=year&hl=en,我的Google web history年度趋势,或许看着这几张图我就可以把这一年大概回顾一遍了。



一月份,考研,定毕业设计题目,开始学php和mysql。从一个伪劣的文学青年开始的剧烈转型,从2008年底开始酝酿,在考研结束之后终于实施。把那些看了两年的文学史教材扔到了一边,捡起了两年多没有碰的技术书和代码编辑器。值得庆幸的是,大一下学期打下的那点儿基础没有荒废掉,刚开始的那几天经常犯一些特别二的错误之后,慢慢找到了写代码的感觉。这时候,我就像一个刚刚入门的小虫子,不知道前方会怎样,不知道自己会变成什么样的民工。放寒假,在家呆着,偶尔上Google查点儿东西,就像大多数人一样。多数情况不会使用Google账户的服务,也不会所有浏览器的Google账户都是自动登录。
二月份,是那第一次未果的实习。第一次跟人谈跟工作有关的事情。虽然没能成行,但是这一次面试加考核让我写下了人生第一段php程序,遗憾的是,我没有留下那个青涩的记忆啊。不过回头想想,那段代码就是照着教材一点点扒下来的,跟所有丑陋的php代码是让现在的我不忍卒读的吧。当时面试我的哥们儿对我说:你的php是初学的吧,我们还是想找个立刻能干活儿的,恐怕没有时间等你学,建议你去看看一些CMS的代码,学习学习。自认为不听别人意见的我居然很听话,真的就开始研究起CMS来了,就这样知道了Drupal,Joomla之类的开源CMS。那个时候我是万万没有想到我的第一份工作竟然跟Drupal的关系如此密切。这一个月,回到学校,泡在自习室里,不怎么上网,照着教材抄代码。
三月份,对于学生来说,最后一个学期才正式开始。自知考研无望,我像所有考研失败的童鞋们一样开始找工作。第一次正式面试,献给了某部队医院,一切都是糊里糊涂,没怎么学过的专业课,不靠谱的事业单位。再后来,偶然的机会,以一种很难受的姿态进入S公司实习,仍然是不清不楚:不清楚在那个团队能学到什么,不知道自己的优势和缺点,不知道怎么把自己的积极性调动起来。痛苦的熬过三周,我很不地道的悄然离开,然后就把这个地方忘了几个月。后半年的某一天,回首往事的时候又想起了那个地方,名字就想了半天,当时参与的网站也想了半天。又去看了那个网站,一身冷汗,心想着要是真的一直在那做,在他们的领导下做出那样恶心的网站,我真是就毁了。想想,依靠垄断电信部门的电子商务网站,技术落后,代码丑陋,设计过时,不善于学习,怎么能够提高呢,尤其对于我这种急需各种新鲜养料和搜索引擎并且对极其信仰自由的家伙。在那个公司里,大家都互相看着,每天十几个小时的工作时间,不许看其他网站,每天只在那个烂网站和VS里度日,想想还是后怕。
四月份,离开S公司,开始了最美好的时间。就像刚刚从牢狱出来的人一样,我贪婪的呼吸着自由的空气。我不用早起了,我可以看自己喜欢看的书,做自己喜欢的事情。想学习的时候跑到图书馆里一心一意,想玩的时候叫上朋友满北京转悠,到处找好吃的解馋。嗯,没错四月份是最美好的,和an-six在一起的日子。四月份的尾巴,我开始正式做毕业设计,美好的日子换了状态。那一周,Jessica回家,我一个人在图书馆和自习室里从早上八点工作到晚上十点。生活中只有三件事,写代码、吃饭和睡觉。
五月份,毕业设计紧锣密鼓的进行着。那是个极度浪费网费的项目,假如做个什么管理系统的话,或许我就不会那么频繁的上网。Google maps,每一次API访问都要网络。在学校的一个坏处就是上网要花钱,我已经尽量的节省,把需要api调用和不需要调用的部分分离开。需要调试的时候再联网外网,就这样,那一个月,我的网费还是嗖嗖的往下掉。我的Google search终于出现了第一个高点,在控制下的一个小高潮。
六月份,毕设磕磕绊绊以不完美的姿态完工。编出恶心的论文,毕业了。转折的时刻也到来了。在毕设接近完工的时候,我整理了第一份稍微像样的简历,开始明明白白的找工作,我想做一个前端工程师。虽然那会儿自己的前端基础还是很不扎实,但是我想,我的方向已经确定了,我一边恶补一边找吧,或许有机会。六月初,投了三四份简历吧。有了三个回音。首先是雅虎中国,一个很意外的机会。那天是中午发的简历,发完之后我看了点儿东西感觉困就睡了个午觉。三点多有人打电话,我迷迷糊糊的接了起来,只听电话那边说:“我是雅虎中国的××”。到现在我也不知道那个哥们儿的名字,但是那天电话面试里他对我说的那些话我却一直记得。他说看了我的简历,也看了我的博客,觉得我是一个很上进的人。虽然当时的技术功底不很扎实,但是提升的空间还是有的。他在电话里问我一些技术问题,我实事求是的回答了,自己也知道回答的并不好。他问我之前的工作经历,我说了在S公司的实习,他反问我为什么没有写到简历里。我支支吾吾的说,我觉得那段经历糊里糊涂的自己也搞不清楚。他问我,你觉得真的有你想象中那么完美的公司吗?公司总是有各种各样的缺点的,跟人一样。他说,我也刚毕业没几年,这几年也换了几个工作,之前也和你有同样的想法,不要对公司要求太高,现在在雅虎,它也一样有很多问题。个人在公司里要保持住自己,要始终有一颗上进的心,这就够了。电话面试聊的很痛快,后来去雅虎中国面试了两次,最后还是没能通过。我觉得跟那时对自己的定位不清楚还是有关系的。几个月之后,阿里巴巴取消了北京的雅虎中国,把人员并入淘宝,同时必须去杭州工作。如果不愿意去杭州就只能离职。我在想,假如那个时候真的进入雅虎中国,我会做什么样的选择呢。
同时是好大夫在线,王航,看了我的简历觉得我比较适合做UE,就给我打电话让我过去面试。那会儿他们还在民宅里。我去的那天王航不在,想让我做UE的想法也没和团队的其他人沟通。两个面试我的同事还是问了很多后端的问题,我最薄弱的地方,当然结果不是很好,并且说他们还不需要一个专门做前端。我觉得这个已经基本没希望了。谁知过了几天王航又给我打电话说要再约我谈谈。那一次,他跟我讲了他创业的起因和一些故事,给我比较了一下去雅虎那种大公司和去好大夫这种创业公司的利弊,并且说愿意培养我成为一个优秀的UE。那天聊的很愉快,我答应他第二天就去上班。可是不知道为什么,在那里工作一个礼拜也找不到状态。任性的我又退缩了。我内心中有一个声音对我说,这不合适。于是我也离开了。前几天在twitter见到几个牛人提到好大夫,说王航他们真的是认认真真的做事情,我深深的认同,毕竟跟他们一起工作过一周,见过他们工作的状态。我有时也在想象,假如我加入了好大夫在线,现在我会是什么样子呢?
在往后就是acosys了,而接下来的几个月,生活的全部就都属于了acosys,而连接我和acosys的,正是二月份时那多余的浏览所看到的Drupal。其实在加入acosys之前,我对Drupal的了解还极其浮浅:只是在自己的电脑上搭了个Drupal,尝试过几个主题,安装过几个模块,连CCK和Views这样的模块都没会用。但是即使这样,我还是开工了。从那时起,我的生活就每天都在网上,我的Google帐号开始永远在线,我的搜索频率开始直线上升。生活,变成了发现问题,分析问题,研究问题和解决问题的循环。知识领域开始扩展,视野慢慢宽广起来。关于acosys,总结还有很多,体验还在继续,我想应该用另外一篇日志来总结。
2009,对于我自己来说,是一个充满了转变的年头。关于过去,关于未来,假如让我简单的说,我也希望能够说一句follow my heart,再说一句stay hungry, stay foolish.