doctype html html head style. div{ float:left } h2 script. var a = 1; body p. hello jade hello jade - var user = { description: '我喜欢猫' } //- if 判断 #user.user if user.description h2 描述 p.description= user.description else h1 描述 p.description 用户无描述 //- for 循环 - var array = [1,2,3] ul - for (var i = 0; i < array.length; ++i) { li hello #{array[i]} - } //- each ul each val, index in ['西瓜', '苹果', '梨子'] li= index + ': ' + val - var friends = 10 //- Case case friends when 0 p you have no friends when 1 p you have a friend default p you have #{friends} friends //- 申明可重用的块 mixin list ul li foo li bar li baz //- 调用 +list() +list() mixin pets (pets) ul#pets.pets - each val, key in pets li #{ val + ':' + key } //- 调用 +pets(['cat', 'dog', 'pig']) mixin article(title) .article .article-wrapper h1= title //- block 为 jade 关键字代表外部传入的块 if block block else p 该文章没有内容 +article('Hello world') +article('Hello Jade') p 这里是外部传入的块 p 再写两句 mixin link(href, name) a(class!=attributes.class, href=href)= name +link('/foo', 'foo')(class="btn")
PHP中钩子函数的实现与认识
假如有这么一段程序:
function fun(){ fun1(); fun2(); }
首先程序执行完fun1()之后执行fun2()然后fun()结束。
但是,假如我们想对函数做一些变化。比如说,fun是一个解析函数,我们希望后期可以提供丰富的解析函数,而究竟用哪个函数解析,我们希望在配置文件中配置。这个时候就可以发挥钩子的力量了。
我们可以在function fun(){}中加入一个挂钩点H,然后再执行H这个函数之前,将钩子函数配置好,我么就可以根据需要来解析了。
例如:
$h=config_item("parser_fun") ;//从配置文件中获得相应的配置信息 function fun($data){ global $h; return $h(); }
除此意外,PHP还可以根据字符串提供自己的类,然后调用类的一个方法,传递某些参数,这些就为PHP程序的编写,以及后期的维护扩展奠定了,相当坚实的基础。
类的实现方法,大致如下:
$c=get_class_name(); //获得类的名字 $m=get_method_name(); //获得方法的名字 $k=$c->$m(); //执行类的某一个方法
原文链接:PHP中钩子函数&实现
emlog模板开发
模板目录/content/templates
复制default文件夹并改名新模板(xuanzeta)
开始开发
xuanzeta目录下新建文件夹js、css、image文件夹
首先修改header.php文件
站点地址:BLOG_URL
模板地址:TEMPLATE_URL
css:<link href=”<?php echo TEMPLATE_URL; ?>css/css文件名” rel=”stylesheet” type=”text/css” />
js:<script src=”<?php echo TEMPLATE_URL; ?>js/js文件名” type=”text/javascript”></script>
钩子:<?php doAction(‘index_head’); ?> php钩子
站点标题:<?php echo Option::get(‘blogname’); ?>或<?php echo $blogname; ?>
站点副标题:<?php echo $bloginfo; ?>
Option::get(‘topimg’) 在content/cache/options.php里,但是不能修改意味着自带的banner不能用,所以这是一句废话,删掉跳过。
导航:<?php blog_navi();?> 在module里 function blog_navi 修改导航
自定义导航如果用根目录地址(例如:/sort/emlog),个人建议将
$value['url'] = $value['isdefault'] == 'y' ? BLOG_URL . $value['url'] : trim($value['url'], '/');
改为
$value['url'] = $value['isdefault'] == 'y' || substr( $value['url'], 0, 1 ) == '/' ? BLOG_URL . trim($value['url'], '/') : trim($value['url'], '/');
登录 Or 退出:
<?php if (ROLE == ROLE_ADMIN || ROLE == ROLE_WRITER): ?> <a href="<?php echo BLOG_URL; ?>admin/?action=logout">退出</a> <?php else: ?> <a href="<?php echo BLOG_URL; ?>admin/">登录</a></div> <?php endif; ?>
所有的函数调用几乎都在moudle.php里面
header.php头文件改完之后改主页log.list.php
文章作者:blog_author($value[‘author’]);
文章编辑:<?php editflg($value[‘logid’],$value[‘author’]); ?>
文章日期:<?php echo gmdate(‘Y-n-j’, $value[‘date’]); ?>
文章点击:<a href=”<?php echo $value[‘log_url’]; ?>”><?php echo $value[‘views’]; ?></a>
文章评论:<a href=”<?php echo $value[‘log_url’]; ?>#comments”><?php echo $value[‘comnum’]; ?></a>
文章标签:<?php blog_tag($value[‘logid’]); ?>
文章分类:<?php blog_sort($value[‘logid’]); ?>
文章描述:<?php echo $value[‘log_description’]; ?>
阅读全文:
<?php if (!empty($value['excerpt']) || Option::get('isexcerpt') == 'y'): ?> <a href="<?php echo $value['log_url']; ?>">阅读全文</a> <?php endif; ?>
PHP order by多条件排序
关于order by排序:
单条件排序
order by id(按照id排序默认从小到大)
order by id desc(按照id排序从大到小)
多条件排序
order by date,id(先按照date从小到大再按照id从小到大)
order by date,id desc(先按照date从大到小再按照id从大到小)
order by date desc,id(先按照date从大到小再按照id从小到大)