emlog4模板制作与3.5版本的一些变化

EM官方重写了部分核心代码,为emlog4带来更为强劲的功能,目录结构及方法调用上也与emlog3.5版本有很多地方不同。
近期家里事多,仅以我个人昨天转换情侣模板的经验,谈谈模板制作的一些变化。
首先是emlog4实现了类似wordpress那样的伪静态URL,可自定义每篇文章的地址(别名)。于此带来的是模板中凡事文章、分类、标签及其他动态路径,均与emlog3.x不同,需要作者对模板中这些路径进行简单替换。
下面是个简单的列表:
Url::author($uid) 获取作者地址
Url::log($key) 获取日志地址
Url::tag($value['tagurl']) 获取标签地址
Url::sort($value['sid']) 获取分类地址
Url::record($value['date']) 获取归档地址
括号中需要的参数或有不同,具体大家可参考默认模板。
引入文件的改变:
过去我们引入文件用:
include getViews('footer');
现在emloog4则改为:
include View::getView('footer');
页面引用及评论的加载:
过去为:
blog_trackback();
blog_comments();
blog_comments_post();
现在为:
blog_trackback($tb, $tb_url, $allow_tb);
blog_comments($comments);
blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark);
感觉变麻烦了,还好只是简单替换。
相关日志的挂载点:
过去为:doAction('log_related');
现在为:doAction('log_related', $logData);
相邻日志:
过去为:neighbor_log();
现在为:neighbor_log($neighborLog);
当然最大的改变当然是module.php这个文件,需要替换的内容很多,但都是模式化的替换,很容易:
如://widget:blogger部分
过去为:
global $user_cache;
现在为:
global $CACHE;
$user_cache = $CACHE->readCache('user');
后面修改函数内容时依然要注意替换相关URL部分,用上面提到的URL替换过去的URL写法。
如//widget:分类部分的A链接部分:
过去为:
<a href="<?php echo BLOG_URL; ?>?sort=<?php echo $value['sid']; ?>">
现在为:
<a href="<?php echo Url::sort($value['sid']); ?>">
module.php核心内容很多,修改时注意,只要改过一次之后就容易了。最后提醒一下:emlog4去掉了音乐微件及访问统计微件,在module.php中将之去掉就可以了(感觉音乐去掉是为了让核心更加精简,毕竟这东西可以用自定义微件简单实现)。
另外由于官方实现了嵌套回复(或者说评论盖楼),过去的模板样式及代码设计需要重新定义。
为简化操作,建议先用默认模板module.php中关于评论的部分(从284行到最后)替换到老模板相关位置及函数。
评论及盖楼所用到的js位于:include/lib/js/common_tpl.js
js文件其中几个函数所用到的很多id及层次必须在模板中出现,所以才建议大家先用默认模板替换,之后再根据需要修改css实现外观。熟练之后可自行修改为更灵活的方式,或和我一样把common_tpl.js放到模板目录下方便修改自定制。
最后,过去我们在模板中自定义函数需要查询数据库时,会global $DB;一下,现在这么写不行了,需要这样写:
$DB = MySql::getInstance();
在获取缓存的数据上,也不能简单的global了,例如获取用户缓存,过去$user_cache不能直接用,需要先:
$user_cache = Cache::getInstance()->readCache('user');
之后遇到问题再补充,话说我这里还在3.4,没空升级……