首页
留言板
统计
Search
1
阿里云国际OSS使用CloudFlare免流量
2,310 阅读
2
PP.UA免费域名注册
2,183 阅读
3
Adobe Photoshop CS2经典版 中文原版
2,169 阅读
4
7-Zip中文美化版
2,031 阅读
5
获取免费的 Microsoft 365 E5 开发人员订阅
1,947 阅读
软件分享
网络资源
网络代码
生活情感
免费主机
Search
标签搜索
工具软件
代码
Android
教程
Emlog
办公软件
图形图像
免费空间
Web
情感
PHP
视频
系统工具
Windows
上传下载
建站
PDF
网盘
Office
学习
ZJ
累计撰写
808
篇文章
累计收到
105
条评论
首页
栏目
软件分享
网络资源
网络代码
生活情感
免费主机
页面
留言板
统计
搜索到
808
篇与
的结果
2019-11-17
40元买10年xyz域名详细教程
今天就来分享一个给力的,这次参加促销活动的国外域名服务商是Name.com,新用户送5美元活动,可以用来叠加购买相关域名,今天就来分享一个40元买一个10年域名.xyz,再加一个1年.xyz域名的方法。具体购买方法如下:注册地址:https://www.name.com/zh-cn/referral/3693b4 必须用这个链接注册注意:必须通过上面的链接注册name.com账号才会得5刀的赠金,自己注册是没有的哦。有账号的朋友需要点链接重新注册一个。注意:从实际测试效果来看,推荐用gmail邮箱注册,其他邮箱注册有些得不到赠送的5刀1、搜索想要的域名添加购物车。搜索自己想要6位数字至9位数字.xyz域名,搜索到有效的.xyz域名后点击checkout加入购物车。注意:name.com要求第一笔付款必须大于5刀,所以必须要添加一个1年的6数字xyz域名,总计就是10.89刀,优惠后是实付是5.89刀注意:Advanced security 这个不要勾选,付费项目,删除。两个域名,一个1年,另外一个10年。2、结账结账时会看到默认多了一个4.99美元的安全与隐私,去掉,然后选择一个域名注册时间选择10年,就可以付款啦,如下图: 注意勾选上面5刀的优惠,然后再输入PayPal账号或者信用卡付款即可。最后算下来:4.9刀约33块钱人民币购买一个10年的6数字xyz域名0.99刀约6块6人民币购买一个1年的6数字xyz域名总共花费约40块钱不到!还是非常划算的!如下图:
2019年11月17日
332 阅读
0 评论
0 点赞
2019-11-17
photoshop7.0精简绿化纯净版_仅14MB
photoshop7.0软件特性 Photoshop7.0绿色迷你版,是Adobe公司photoshop系列产品中的最经典版本当您运行本软件时,只需单击其中的中文版或者英文版按钮,双语精灵程序就会自动为您生成并打开相应语言版本的PhotoShop7.0程序,而且还会使PhotoShop7.0自动记录您最后使用的语言界面,也就是说,如果您直接打开PhotoShop7.0,PhotoShop7.0会按照您最后使用的语言界面显示,使您使用更便捷。 Photoshop7.0软件功能: ·单个增强的翻转调板,管理 Web 页翻转、动画和图像映射更加得心应手 ·新的“选定”翻转状态,无需手工编码即可创建更高级的 Web 站点导航栏 ·可自定义的工作区,可存储调板和工具设置的排列方式,即时访问个性化的 Photoshop桌面 ·文件浏览器,可直观地浏览和检索图像 ·修复画笔,可以轻松地消除图像中的人工痕迹,如蒙尘、划痕、瑕疵和褶皱,同时保留阴影、光照和纹理等效果 ·新的ps绘画引擎,可以模拟传统的绘画技巧 ·图案生成器增效工具,只需选择图像的一 ·Web 输出的增强功能,可轻松地对 Web 页元素应用透明或部分透明效果,包括混合到任意 Web 背景中的无缝边缘 ·新的自动色彩命令,可进行可靠的色彩校正下载地址 蓝奏网盘
2019年11月17日
320 阅读
0 评论
0 点赞
2019-11-17
验证Gravatar头像是否存在并缓存至服务器
<?php function validate_gravatar($Verification_email) { $email = $Verification_email; // 要验证的Email地址 $hash = md5(strtolower(trim($email))); $uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404'; $headers = @get_headers($uri); if (!preg_match("|200|", $headers[0])) { return FALSE; } else { return true; } } //使用 if(validate_gravatar($value['mail'])=='true'){ $gface_url = "http://www.gravatar.com/avatar/".md5($value['mail'])."?size=32&d=".TEMPLATE_URL."images/ava_d.gif"; }else{ $gface_url = TEMPLATE_URL.'images/gravatar/'.rand(1,5).'.jpg'; }echo $gface_url; ;?> <?php //gravatar头像缓存 function ting_avatar( $email) { if(validate_gravatar($email)=='true'){ $gfile_path=EMLOG_ROOT."/content/uploadfile/ting/avatar/"; //缓存文件夹路径 if(!file_exists($gfile_path)){ mkdir($gfile_path,0755); } $gmd5 = md5( strtolower( $email ) );//根据email的值来生成一个md5变量值,作为本地.jpg头像的名字 $gimg = BLOG_URL."/content/uploadfile/ting/avatar/g_" . $gmd5. ".jpg";//avatar相对路径 $gfile = $gfile_path.'g_'. $gmd5. '.jpg';//缓存的头像的绝对路径 $gtime = 24*3600*15; //单位s,设置更新时间为15天 if (!file_exists($gfile) || (time()-filemtime($gfile)) > $gtime){ //不是第一次留言留言且留言时间超过15天就更新头像 $gimg_url = 'http://www.gravatar.com/avatar/'. $gmd5; // 旧服务器 (哪个快就开哪个) copy($gimg_url, $gfile); //将$gimg_url代表的网络图片复制到$gfile代表的本地服务器中 } }else{$gimg = TEMPLATE_URL .'images/ting.png';//自定义的头像 } echo $gimg; } ?>使用 在模板文件夹下面打开module文件,找到 <?php echo getGravatar($comment['mail']); ?> 替换成 <?php echo ting_avatar( $comment['mail']); ?>
2019年11月17日
274 阅读
0 评论
0 点赞
2019-11-17
EMLOG文章页标签作为关键词
第一步找到当前所用模版文件夹下的header.php使用编辑器打开,找到下面代码:<meta name="keywords" content="<?php echo $site_key; ?>" />替换为下面代码:<?php if(isset($logid)):?><meta name="keywords" content="<?php page_tag_key($logid);?>" /><?php else: ?><meta name="keywords" content="<?php echo $site_key; ?>" /><?php endif; ?>第二步把下方代码复制到当前所用模版文件夹下的module.php文件里去:<?phpfunction page_tag_key($blogid){global $CACHE;$log_cache_tags = $CACHE->readCache('logtags');if (!empty($log_cache_tags[$blogid])){foreach ($log_cache_tags[$blogid] as $value){$tag .= $value['tagname'].',';}echo substr($tag,0,-1);}}?>切记不要使用记事本编辑,编辑前要备份下,修改好上传覆盖即可;如果你使用了其它判断,例如设置分类关键词的方法,那就需要写上多个判断了。
2019年11月17日
271 阅读
0 评论
0 点赞
2019-11-17
给Emlog导航添加FontAwesome图标
前言图标是给文字的一种补充,许多图标往往可以让我们快速的识别内容。 在Wordpress上个导航菜单添加个性图标早已实现,emlog一直没有看到类似内容,折腾一下,发现其实现其实挺简单的。 再此发布下更改教程(注:本篇文章仅为作者个人观点,如您有更好的意见方法可在此回复,不到之处忘勿喷。)教程首先找到模板文件module.php打开搜索 1 <?php echo $value['naviname']; ?> 找到如下这行找到合适的FontAwesome图标如 1 <i class="fa fa-home"></i> 这在导航名称后面添加 fa fa-home 中间用 # 隔开。 至此教程结束。 Emlog许多地方可采上述方法,例如,侧边栏等等
2019年11月17日
431 阅读
0 评论
0 点赞
2019-11-17
emlog模板调用多侧边栏教程
想尝试一下三栏的,但是不知道如何调用多侧边栏。查了emlog官方文档(5.0 版以后的),可以调用多个多个侧边栏。下面emlog官方文档原文: Sidebar Amount:标记该模板有几个侧边栏,一般为1,有些模板有两个侧边栏则标记2。这样可以在后台widgets里识别管理(具体可下载体验官方收录的模板G7)。 但是如何调用,文档说参考 G7 模板,但是我在应用中心没找到那个那个板子。后来也在emlog官方论坛发帖询问,也没人回答。于是干脆自己想办法吧。学了这么久的php,这点还不会,那真是白学了。我突然发现我有一个缺点,就是不相信自己的实力,那可能就是自卑吧。总是再找别人的方法, 而自己没有真正去想。其实动脑想了之后,然后动手实践很容易解决。下面是我的解决方法:1、申明侧边栏目数在header.php文件的页头申明栏目数:【Sidebar Amount:3】表示此模板支持三个栏目。看了一下数据库,似乎最多也只能是4个。但是3个已经足够了。2、设置侧边栏 3、调用侧边栏①$widgets = !empty($options_cache['widgets1']) ? unserialize($options_cache['widgets1']) : array(); //原文②$widgets = unserialize($options_cache['widgets1']);//调用侧边栏1③$widgets = unserialize($options_cache['widgets2']);//调用侧边栏2④$widgets = unserialize($options_cache['widgets3']);//调用侧边栏3将side.php 复制三份并重命名如:side1.php、side2.php、side3.php,然后分别把第①句替换为第②、③、④句。最后include这三个文件中的任何一个,就可以出现不同的侧边栏。理想情况下,首页(列表页)、文章页、页面(微语)可以分别调用不同的侧边栏。结语emlog模板调用多侧边栏教程就是这样,是不是很简单。凡事多动脑,问题就解决了……
2019年11月17日
279 阅读
0 评论
0 点赞
2019-11-17
emlog彩色3D标签云 - 非插件
刚才在emlog模板中心有款新出的模板,进入了作者的主页,看上了它那个侧边上的3D标签云,看上去还是很不错的,就给扒了下来本人菜鸟一枚,各位大大请轻喷,下面是使用上的效果,也可以看我的侧边,已经启用的是不是看上去还不错,下面来讲下实现过程首先是css样式部分/*标签云*/ #tag_cloud_widget{position:relative;width:240px;height:240px;margin:10px auto 10px} #tag_cloud_widget a{position:absolute;color:#fff;text-align:center;text-overflow:ellipsis;white-space:nowrap;top:0;left:0;padding:3px 5px;border:0} #tag_cloud_widget a:hover{background:#d02f53;display:block} #tag_cloud_widget a:nth-child(n){background:#666;border-radius:3px;display:inline-block;line-height:18px;margin:0 10px 15px 0} #tag_cloud_widget a:nth-child(2n){background:#d1a601} #tag_cloud_widget a:nth-child(3n){background:#286c4a} #tag_cloud_widget a:nth-child(5n){background:#518ab2} #tag_cloud_widget a:nth-child(4n){background:#c91d13}然后是js部分var radius = 100; var d = 200; var dtr = Math.PI / 180; var mcList = []; var lasta = 1; var lastb = 1; var distr = true; var tspeed = 11; var size = 200; var mouseX = 0; var mouseY = 10; var howElliptical = 1; var aA = null; var oDiv = null; window.onload = function() { var i = 0; var oTag = null; oDiv = document.getElementById('tag_cloud_widget'); aA = oDiv.getElementsByTagName('a'); for (i = 0; i < aA.length; i++) { oTag = {}; aA[i].onmouseover = (function(obj) { return function() { obj.on = true; this.style.zIndex = 9999; this.style.color = '#fff'; this.style.background = '#0099ff'; this.style.padding = '5px 5px'; this.style.filter = "alpha(opacity=100)"; this.style.opacity = 1 } })(oTag) aA[i].onmouseout = (function(obj) { return function() { obj.on = false; this.style.zIndex = obj.zIndex; this.style.color = '#fff'; this.style.background = '#30899B'; this.style.padding = '5px'; this.style.filter = "alpha(opacity=" + 100 * obj.alpha + ")"; this.style.opacity = obj.alpha; this.style.zIndex = obj.zIndex } })(oTag) oTag.offsetWidth = aA[i].offsetWidth; oTag.offsetHeight = aA[i].offsetHeight; mcList.push(oTag) } sineCosine(0, 0, 0); positionAll(); (function() { update(); setTimeout(arguments.callee, 40) })() }; function update() { var a, b, c = 0; a = (Math.min(Math.max( - mouseY, -size), size) / radius) * tspeed; b = ( - Math.min(Math.max( - mouseX, -size), size) / radius) * tspeed; lasta = a; lastb = b; if (Math.abs(a) <= 0.01 && Math.abs(b) <= 0.01) { return } sineCosine(a, b, c); for (var i = 0; i < mcList.length; i++) { if (mcList[i].on) { continue } var rx1 = mcList[i].cx; var ry1 = mcList[i].cy * ca + mcList[i].cz * ( - sa); var rz1 = mcList[i].cy * sa + mcList[i].cz * ca; var rx2 = rx1 * cb + rz1 * sb; var ry2 = ry1; var rz2 = rx1 * ( - sb) + rz1 * cb; var rx3 = rx2 * cc + ry2 * ( - sc); var ry3 = rx2 * sc + ry2 * cc; var rz3 = rz2; mcList[i].cx = rx3; mcList[i].cy = ry3; mcList[i].cz = rz3; per = d / (d + rz3); mcList[i].x = (howElliptical * rx3 * per) - (howElliptical * 2); mcList[i].y = ry3 * per; mcList[i].scale = per; var alpha = per; alpha = (alpha - 0.6) * (10 / 6); mcList[i].alpha = alpha * alpha * alpha - 0.2; mcList[i].zIndex = Math.ceil(100 - Math.floor(mcList[i].cz)) } doPosition() } function depthSort() { var i = 0; var aTmp = []; for (i = 0; i < aA.length; i++) { aTmp.push(aA[i]) } aTmp.sort(function(vItem1, vItem2) { if (vItem1.cz > vItem2.cz) { return - 1 } else if (vItem1.cz < vItem2.cz) { return 1 } else { return 0 } }); for (i = 0; i < aTmp.length; i++) { aTmp[i].style.zIndex = i } } function positionAll() { var phi = 0; var theta = 0; var max = mcList.length; for (var i = 0; i < max; i++) { if (distr) { phi = Math.acos( - 1 + (2 * (i + 1) - 1) / max); theta = Math.sqrt(max * Math.PI) * phi } else { phi = Math.random() * (Math.PI); theta = Math.random() * (2 * Math.PI) } mcList[i].cx = radius * Math.cos(theta) * Math.sin(phi); mcList[i].cy = radius * Math.sin(theta) * Math.sin(phi); mcList[i].cz = radius * Math.cos(phi); aA[i].style.left = mcList[i].cx + oDiv.offsetWidth / 2 - mcList[i].offsetWidth / 2 + 'px'; aA[i].style.top = mcList[i].cy + oDiv.offsetHeight / 2 - mcList[i].offsetHeight / 2 + 'px' } } function doPosition() { var l = oDiv.offsetWidth / 2; var t = oDiv.offsetHeight / 2; for (var i = 0; i < mcList.length; i++) { if (mcList[i].on) { continue } var aAs = aA[i].style; if (mcList[i].alpha > 0.1) { if (aAs.display != '') aAs.display = '' } else { if (aAs.display != 'none') aAs.display = 'none'; continue } aAs.left = mcList[i].cx + l - mcList[i].offsetWidth / 2 + 'px'; aAs.top = mcList[i].cy + t - mcList[i].offsetHeight / 2 + 'px'; aAs.filter = "alpha(opacity=" + 100 * mcList[i].alpha + ")"; aAs.zIndex = mcList[i].zIndex; aAs.opacity = mcList[i].alpha } } function sineCosine(a, b, c) { sa = Math.sin(a * dtr); ca = Math.cos(a * dtr); sb = Math.sin(b * dtr); cb = Math.cos(b * dtr); sc = Math.sin(c * dtr); cc = Math.cos(c * dtr) }下面是php部分,修改module里的侧边标签方法<?php //3D标签云 function widget_tag($title){ global $CACHE; $tag_cache = $CACHE->readCache('tags');?> <div class="side"> <h3><i class="fa fa-tags mar-r-4"></i><?php echo $title;?></h3> <div id="tag_cloud_widget"> <div class="tagcloud"> <script type="text/javascript" src="<?php echo TEMPLATE_URL; ?>js/3dtag.js"></script> <?php foreach($tag_cache as $value): ?> <a href="<?php echo Url::tag($value['tagurl']); ?>" title="<?php echo $value['usenum']; ?> 篇文章"><?php echo $value['tagname']; ?></a> <?php endforeach; ?> <div class="clear"></div></div></div></div> <?php }?>
2019年11月17日
269 阅读
0 评论
0 点赞
2019-11-17
WordPress的模板移植到EMlog教程
emlog的模板确实太少,现在有效的方法确实就是从WP的免费模板移植过来,有两个好处:移植简单以及不用担心版权问题。下面,以gonzo-daily为例,一步步教大家如何从WP移植到emlog声明:1、若无特殊说明,某个步骤中说的从默认模板复制代码,均指的是从默认模板中该步骤提及的文件复制,如第一步,指的是header.php2、若无特殊说明,一切更改指的是目标模板,本例为gonzo-daily3、本教程适于有一定html知识的用户准备工作:1、下载你想要移植的模板,如gonzo-daily,将其解压到任意目录(我通常是解压到本地环境的emlog模板目录下,方便移植后期预览)2、你的电脑上需要有一个文本编辑器,注入notepad++,editplus,emeditor等等,不要使用Windows自带的文本编辑器3、最好有一个本地环境,装一个WP,一个emlog(远程服务器当然也可以)第一步header.php:打开刚刚下载的模板目录下的header.php,第一步是搜索bloginfo('stylesheet_directory');,替换为echo CERTEMPLATE_URL;接着删除前面几行代码,包括DOCTYPE,html、title、meta标签,本例如下<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="bg"><head><meta http-equiv="Content-Type" content="application/xhtml+xml;charset=<?php bloginfo('charset'); ?>" /><title><?php if( is_search() ) { $ser = $_GET['s']; ?><?php _e('Search'); ?><?php echo " "" . wp_specialchars($ser, 1) . """; } ?><?php wp_title(''); ?><?php if( ! is_home() ) { ?> | <?php } ?><?php echo strip_tags(html_entity_decode(get_option('blogname'),ENT_NOQUOTES,'UTF-8')); ?></title><meta http-equiv="imagetoolbar" content="no" />复制代码从emlog的默认模板中的header.php,复制出前18行到目标模板最前面,即<?php/*Template Name:默认模板Description:这是emlog的默认模板,简洁明快 ……Author:emlog开发小组AuthorUrl:http://www.emlog.netSidebar Amount:1*/if(!defined('EMLOG_ROOT')) {exit('error!');}require_once (getViews('module'));?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="keywords" content="<?php echo $site_key; ?>" /><meta name="generator" content="emlog" /><title><?php echo $blogtitle; ?></title>复制代码前几行中的注释部分因情况而异有所删改,本例中,因为目标模板三栏(实际是2栏,但是我想把它改为三栏),所以保留Sidebar Amount,并将其值设置为2然后将CSS样式的代码用默认模板中的替换,本例中用<link href="<?php echo CERTEMPLATE_URL; ?>/main.css" rel="stylesheet" type="text/css" />复制代码替换<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="all" />复制代码并将main.css修改为style.css再往下,会看到一句RSS的,同CSS部分,用默认的替换之继续往下看,有一句pingback的,删除接下来,复制默认模板中的<script src="<?php echo BLOG_URL; ?>lib/js/common_tpl.js" type="text/javascript"></script>复制代码到目标模板接着往下看,有一句<?php wp_head(); ?>复制代码换成默认模板的<?php doAction('index_head'); ?>复制代码再往下看,就到头部的博客名称和博客描述这块了本例中,博客名称使用了if语句判断以在不同模式下显示不同样式,我在本地架设的WP上验证了两种样式的一致性,于是我们采取第一种即将代码<?php if (is_home() || is_page_template('archives.php') ){ ?> <h1><a href="<?php echo get_option('home'); ?>/"><?php echo html_entity_decode(get_option('blogname'),ENT_NOQUOTES,'UTF-8'); ?></a></h1> <?php } else { ?> <p class="title"><a href="<?php echo get_option('home'); ?>/"><?php echo html_entity_decode(get_option('blogname'),ENT_NOQUOTES,'UTF-8'); ?></a></p> <?php } ?>复制代码的第二行保留,其余删除然后,把<?php echo get_option('home'); ?>替换成.,把a标签中的部分替换成<?php echo $blogname; ?>,即博客名称再来将<?php bloginfo('description'); ?>替换成<?php echo $bloginfo; ?>接着,在本例中我们看到一段在php标签内被注释掉的代码: <?php /* <ul id="navigation"> <li><a href="/"><?php _e('Home'); ?></a></li> <?php wp_list_pages('title_li=&depth=1&sort_column=menu_order'); ?> </ul> */ ?>复制代码这一段是导航栏,因此我们将php标签以及注释符去掉,接着将<?php _e('Home'); ?>替换成Home(注1),注意此处链接应为./而不是/,补上一个半角逗号下面有个WP的函数<?php wp_list_pages('title_li=&depth=1&sort_column=menu_order'); ?>,不管它,删了然后从默认模板中复制一下代码<?php foreach ($navibar as $key => $val): <?php foreach ($navibar as $key => $val): if ($val['hide'] == 'y'){continue;} if (empty($val['url'])){$val['url'] = './?post='.$key;} ?> <li class="menus2"><a href="<?php echo $val['url']; ?>" target="<?php echo $val['is_blank']; ?>"><?php echo $val['title']; ?></a></li> <?php endforeach;?> <?php doAction('navbar', '<li class="menus2">', '</li>'); ?>复制代码刚刚删除的位置,本例中头部导航栏的li无样式,因此删掉 class="menus2"(即将<li class="menus2">替换成<li>),注意有两处至此,本例中的header.php修改完毕,博客登陆以及管理部分将放在侧边栏注:1、此类替换以后会多次用到,编辑器若支持正则替换可将搜索<\?php _e\('(.*?)'\); \?>复制代码,替换成\1复制代码第二步:footer.php凡是得循序渐进,于是第二步就先介绍footer.php吧(其实我是避重就轻 )打开footer.php,现在头部加上<?php if(!defined('EMLOG_ROOT')) {exit('error!');} ?>本例中你会看到,从第二行开始就是一段php代码,什么意思呢?很简单,就是载入sidebar_top.php、sidebar_left.php、sidebar_right.php三个文件,这是wordpress的写法,将其替换为emlog的方法include (TEMPLATEPATH . '/sidebar_top.php'); => include getViews('sidebar_top');另外两个文件以此类推,以后遇到的载入某个页面的函数也以此类推接下来是id为footer的div了,又是一段php代码,但是很明显,显示的是Powered by WordPress,即是版权,我们需要保留的是模板作者链接,至于这段php代码,直接从默认模板中复制以下代码替换即可Powered by <a href="http://www.emlog.net" title="emlog <?php echo EMLOG_VERSION;?>">emlog</a>复制代码本例中,我们还需要在复制过来的代码后加上一个英文句号,即.然后,复制ICP信息,将它加在原作者链接后面吧再下面一段,本例中是RSS,记得一楼提到的注1,此处可以用上了,或者手工替换,或者正则替换然后将第一个RSS链接更改为<?php echo BLOG_URL; ?>rss.php,因为emlog没有评论订阅,所以第二个删掉,再往下看,本例还有一句被注释掉的,为执行时间和查询次数,直接删除即可接下来,是一句<?php wp_footer(); ?>复制代码从默认模板中复制出<?php doAction('index_footer'); ?>复制代码替换即可至此,footer.php修改完毕 第三步:侧边栏本例中侧边栏设计三个文件:sidebar_top.php,sidebar_left.php,sidebar_right.php,让我们一步步来看下如何移植1、sidebar_top.php,打开它,发现只有简短的几句话,先在顶部加上<?php if(!defined('EMLOG_ROOT')) {exit('error!');} ?>(这段代码可以从任意一个默认模板文件的头部获得)继续往下看,可以发现,这只是一个判断语句以及一个搜索框,移植过程中,我决定将这个搜索框固定,而不是由程序决定,于是,我们需要去掉判断语句,接着将<?php _e("Search"); ?>替换为Search(注2)可以看到,中间有一句<?php include (TEMPLATEPATH . '/searchform.php'); ?>,此处不再采用将其换成emlog载入页面的方法,而是打开searchform.php,将里面所有内容复制过来进行替换,这实际上是一个搜索表单,还需要进行处理参考默认模板的搜索表单,在module.php175行,先个form标签加上name="keyform",然后将action值更改为./;接着是第二行,看到一个value的值是由程序生成的,此处的值上上一次搜索的关键词,不管它,直接去掉value,将name值改为keyword;接着是搜索按钮,只需加上onclick="return keyw()" 即可。本例中,源代码为<form method="get" id="searchform" action="<?php bloginfo('home'); ?>/"><input type="text" value="<?php echo attribute_escape($s); ?>" name="s" id="s" /><input type="submit" id="searchsubmit" value="<?php _e("Search"); ?>" /></form>复制代码更改后为<form method="get" id="searchform" name="keyform" action="./"><input type="text" name="keyword" id="s" /><input type="submit" id="searchsubmit" value="Search" onclick="return keyw()" /></form>复制代码好了,sidebar_top.php到此修改完毕接下来是sidebar_left.php和sidebar_right.php,之前提过,要将这个模板改为三栏的,这两个文件分别就是两个侧边栏了打开sidebar_left.php,先在顶部加上<?php if(!defined('EMLOG_ROOT')) {exit('error!');} ?>,往下看代码,很容易发现侧边栏的HTML框架是这样的<ul> <li><h2>标题1</h2> <ul> 内容1 </ul> </li> <li><h2>标题2</h2> <ul> 内容2 </ul> </li></ul>复制代码那么,只需将最外面的ul标签中的内容用默认模板中side.php里那段php代码,即侧边栏组件显示的代码替换即可也就是换成如下<ul><?php$widgets = !empty($options_cache['widgets1']) ? unserialize($options_cache['widgets1']) : array();foreach ($widgets as $val){$widget_title = @unserialize($options_cache['widget_title']);$custom_widget = @unserialize($options_cache['custom_widget']);if(strpos($val, 'custom_wg_') === 0){ $callback = 'widget_custom_text'; if(function_exists($callback)) { call_user_func($callback, htmlspecialchars($custom_widget[$val]['title']), $custom_widget[$val]['content'], $val); }}else{ $callback = 'widget_'.$val; if(function_exists($callback)) { preg_match("/^.*\s\((.*)\)/", $widget_title[$val], $matchs); $wgTitle = isset($matchs[1]) ? $matchs[1] : $widget_title[$val]; call_user_func($callback, htmlspecialchars($wgTitle)); }}}?></ul>复制代码够简单吧,sidebar_right.php如法炮制,只需将侧边栏组件显示代码的第一行替换成$widgets = !empty($options_cache['widgets2']) ? unserialize($options_cache['widgets2']) : array();复制代码也就是第二个边栏的组件ok,侧边栏就这样搞定了注:2、实际上,WP模板中函数_e(string)就是显示string的内容,相当于echo string,此处字符串表现形式为双引号,如要用注1的正则替换,只需将相应的单引号改为双引号即可。当然,手动替换也OK 第四步:module.php这个是模板中涉及的函数所在目录,包括侧边栏widgets的显示我们从默认模板copy一个过来,打开它,先搞定widgets部分可以看出,widgets部分的框架是<li><h3><span onclick="showhidediv('id')">标题</span></h3><ul id="id"> 内容</ul></li>复制代码与第三步提及的框架基本一致,那么修改很简单,将h3换成h2,span去掉(去掉后侧边栏点击标题不再隐藏,保留也行)剩下无需更改,此处你可以使用全文替换接下来两个函数为置顶和编辑,可以不必更改再来是分类,为了适应模板,将两端的方括号去掉,并在链接前面加上in (注意in后面有个空格)继续跳过两个函数:标签和日志作者,看到相邻日志打开原模板single.php,搜索previous_post_link(找不到可以打开index.php),这个是就前一篇日志了,看下它的样式,将它复制到module.php里,此处复制的是<div class="navigation"> <div class="prev"><?php previous_post_link('%link') ?></div> <div class="next"><?php next_post_link('%link') ?></div> </div>复制代码然后,将前一篇和后一篇分别替换成emlog的,相邻日志完成下一个是引用通告,此处先不做更改(WP中将引用作为一个评论显示了,也就是使用相同的样式,而emlog不是,因此等到最后再来调节我们所希望的样式)接下来就是评论了打开原模板comments.php,复制出显示评论的一段(一般是在<?php if ($comments) : ?>和<?php endif; ?>之间,包括它们,记得看下前后有无相关html代码,复制全了),此处为<h2 id="comments"><?php comments_number(__('No Comments'), __('1 Comment'), __('% Comments')); ?></h2><?php if ($comments) : ?><ol class="commentlist"> <?php foreach ($comments as $comment) : ?> <li <?php if ($comment->user_id) echo 'class="author"'; ?> id="comment-<?php comment_ID() ?>"> <span class="avatar"><?php echo get_avatar(get_comment_author_email (), '48'); ?></span> <p class="comment-author"><?php comment_author_link() ?></p> <p class="comment-data"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date() ?> @ <?php comment_time() ?></a></p> <?php if ($comment->comment_approved == '0') : ?> <span class="await_mod"><?php _e('Awaiting Moderation'); ?></span> <?php endif; ?> <p><?php comment_text() ?></p> </li> <?php endforeach; ?></ol><?php endif; ?>复制代码我们先将这一段代码复制到评论列表函数的的前部(第二行后面)来看下复制过来的代码,第一行是标题,此模板在标题中显示了评论数目,我们不管它,直接将整个php代码换成“评论:”即可(当然,你也可以自己写判断语句来决定是否显示评论数目),顺便加上一个锚<a name="comment"></a>将<?php foreach ($comments as $comment) : ?>复制代码替换成<?phpforeach($comments as $key=>$value):$reply = $value['reply']?"<span>博主回复:{$value['reply']}</span>":'';?>复制代码那个博主回复的样式可以自由定制显示评论的循环列表,li样式里有一个<?php if ($comment->user_id) echo 'class="author"'; ?>,删除之,然后将<?php comment_ID() ?>,替换成<?php echo $value['cid']; ?>,加上一个锚<a name="<?php echo $value['cid']; ?>"></a>下来一行是头像的,整行删除下来是作者,从下面的原来的评论列表里复制出如下代码,将其替换原来的<?php comment_author_link() ?> <b><?php echo $value['poster']; ?> </b> <?php if($value['mail']):?> <a href="mailto:<?phpecho $value['mail']; ?>" title="发邮件给<?php echo $value['poster']; ?>">Email</a> <?php endif;?> <?php if($value['url']):?> <a href="<?php echo $value['url']; ?>" title="访问<?php echo $value['poster']; ?>的主页" target="_blank">主页</a> <?php endif;?> </p>复制代码接着是时间,将链接去掉,时间替换成<?php echo $value['date']; ?>再来有一个判断语句是等待评论审核的,全部删除接着是评论回复的展示,我使用的html样式与评论时间相同,所以只需复制一段显示时间的代码,将其中的时间替换成回复<div id="replycomm<?php echo $value['cid']; ?>"><?php echo $reply; ?></div>复制代码再来从原评论列表里复制出前台回复的代码,粘帖到评论回复的下面<?php if(ROLE == 'admin'): ?> <a href="javascript:void(0);" onclick="showhidediv('replybox<?php echo $value['cid']; ?>','reply<?php echo $value['cid']; ?>')">回复</a> <div id='replybox<?php echo $value['cid']; ?>' style="display:none;"> <textarea name="reply<?php echo $value['cid']; ?>" class="input" id="reply<?php echo $value['cid']; ?>" style="overflow-y: hidden;width:360px;height:50px;"><?php echo $value['reply']; ?></textarea> <br /> <a href="javascript:void(0);" onclick="postinfo('./admin/comment.php?action=doreply&cid=<?php echo $value['cid']; ?>&flg=1','reply<?php echo $value['cid']; ?>','replycomm<?php echo $value['cid']; ?>');">提交</a> <a href="javascript:void(0);" onclick="showhidediv('replybox<?php echo $value['cid']; ?>')">取消</a> </div> <?php endif; ?>复制代码最后一步,将前面提到的标题移到<?php if ($comments) : ?>的后面,然后删除原来评论列表,至此评论列表修改完成最后一个是发表评论表单,打开single.php,搜索comments_template();,这个就是显示评论了,下面就是发表评论表单,复制过去,同评论列表,先放在前部,修改完后再将原来的删除先将一个判断是否允许评论的php替换了:'open' == $post->comment_status => $allow_remark == 'y'接下来看到将<?php _e("Leave a comment"); ?>修改为发表评论,然后几句判断是否需要登录的,不管它,删了,记得连同后面与它配对的<?php endif; ?>也删除了将form的action值改为./index.php?action=addcom,然后会看到一个判断是否已登录的,我们需要的是未登录的部分,将前面的删除,同时删除php的判断语句,然后参照原来的评论表单进行修改,更多时候,可以直接复制过来(此处包括昵称,邮箱,主页),修改前为<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" /> <label for="author"><?php _e('Name'); ?>: <?php if ($req) _e('(required)'); ?></label></p> <p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" /> <label for="email"><?php _e('Mail (will not be published)');?>: <?php if ($req) _e('(required)'); ?></label></p> <p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" /> <label for="url"><?php _e('Website'); ?></label></p>复制代码修改后为 <p><input type="hidden" name="gid" value="<?php echo $logid; ?>" size="22" tabindex="1"/> <input type="text" name="comname" maxlength="49" value="<?php echo $ckname; ?>" size="22" tabindex="1"> <label for="author"><small>昵称</small></label></p> <p><input type="text" name="commail" maxlength="128" value="<?php echo $ckmail; ?>" size="22" tabindex="2"> <label for="email"><small>邮件地址 (选填)</small></label></p> <p><input type="text" name="comurl" maxlength="128" value="<?php echo $ckurl; ?>" size="22" tabindex="3"> <label for="url"><small>个人主页 (选填)</small></label></p>复制代码下面是wp允许的标签,全部删除,接着是评论内容的文本输入框,基本不用修改,再来就是一个隐藏的本文ID,即<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />复制代码将它替换为<input type="hidden" name="gid" value="<?php echo $logid; ?>" />复制代码或者你前面已经复制过此行代码,此处直接删除之接着是发表评论的按钮,先别急着修改,把验证码放在前面先,也就是在前面加上<?php echo $cheackimg; ?>然后将按钮的value值修改为发表评论,并加上onclick="return checkform()"接着一是一个wp的插件接口,直接删除,然后会看到如下几句<?php else : ?> <p class="nocomments"><?php _e('Comments are disabled.'); ?></p> <?php endif; ?>复制代码保留最后一行,其余删除,然后删除原来的发表评论表单,到此评论发表表单也修改完毕,module.php也修改完毕第五步:log_list.php先将index.php重命名为log_list.php,然后打开它将第一行<?php get_header(); ?>给替换成<?php if(!defined('EMLOG_ROOT')) {exit('error!');}?>考虑到本模板首页突出显示了第一片日志,因此先打开home.php,复制如下代码<?php if (empty($_GET) && isset($logs[0])) : ?><div class="latest" id="post-<?php $logs[0]['logid']; ?>"> <p class="details_small"> on <?php echo date('Y-n-j G:i l', $logs[0]['date']); ?> by <?php blog_author($logs[0]['author']); ?> <?php blog_sort($logs[0]['sortid'], $logs[0]['logid']); ?>, <?php blog_tag($logs[0]['logid']); ?> <a href="./?post=<?php echo $logs[0]['logid']; ?>#comment">评论(<?php echo $logs[0]['comnum']; ?>)</a> <a href="./?post=<?php echo $logs[0]['logid']; ?>#tb">引用(<?php echo $logs[0]['tbcount']; ?>)</a> <a href="./?post=<?php echo $logs[0]['logid']; ?>">浏览(<?php echo $logs[0]['views']; ?>)</a> </p> <h2><a href="./?post=<?php echo $logs[0]['logid']; ?>" rel="bookmark"><?php echo $logs[0]['log_title']; ?></a></h2> <div class="post_content"> <?php echo $logs[0]['log_description']; ?> </div></div><?phparray_shift($logs);endif;?>复制代码然后就是下面其余博文列表了,看到有个判断是否首页的,WP的首页和其它页调用的不是同一个模板文件,因而样式可能有所不同,此处就需要自己加上判断,修改<div id="content"<?php if (is_home() && !is_paged()) { ?> class="home"<?php } ?>>复制代码为<div id="content"<?php if (empty($_GET)) { ?> class="home"<?php }else{ ?> class="archive"<?php } ?>>复制代码第二个class的值可以在archive.php中获得接下来是一句判断是否有文章的,删除它,并删掉后面与之配对else语句和endif,即删除<?php else : ?> <?php include (TEMPLATEPATH . '/not_found.php'); ?><?php endif; ?>复制代码再来会看到类似 <?php rewind_posts(); ?> <?php remove_filter('get_the_excerpt', 'wp_trim_excerpt'); add_filter('get_the_excerpt', 'gd_short_excerpt'); ?>复制代码全删除了,接着将<?php while (have_posts()) : the_post(); ?>替换为<?php foreach($logs as $value): ?>(此句可在默认模板中找到)然后就是一大堆的替换了,诸如<?php the_ID(); ?>换成<?php echo $value['logid']; ?>,<?php the_permalink() ?>换成./?post=<?php echo $value['logid']; ?>等等,参考默认可得,此处贴出替换前后参考<div class="post list" id="post-<?php the_ID(); ?>"> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="ermalink: <?php the_title(); ?>"><?php the_title(); ?></a></h2> <p class="details_small"> on <?php the_date(); ?> by <?php the_author(); ?> in <?php the_category(', '); ?>, <?php comments_popup_link(__('Comments (0)'), __('Comments (1)'), __('Comments (%)')); ?> </p> <?php the_excerpt(); ?> <p><a href="<?php the_permalink() ?>" rel="bookmark"><?php _e('Read more...') ;?></a></p> </div>复制代码 <div class="post list" id="post-<?php the_ID(); ?>"> <h2><a href="./?post=<?php echo $value['logid']; ?>" rel="bookmark"><?php echo $value['log_title']; ?></a></h2> <p class="details_small"> on <?php echo date('Y-n-j G:i l', $value['date']); ?> by <?php blog_author($value['author']); ?> <?php blog_sort($value['sortid'], $value['logid']); ?>, <?php blog_tag($value['logid']); ?> <a href="./?post=<?php echo $value['logid']; ?>#comment">评论(<?php echo $value['comnum']; ?>)</a> <a href="./?post=<?php echo $value['logid']; ?>#tb">引用(<?php echo $value['tbcount']; ?>)</a> <a href="./?post=<?php echo $value['logid']; ?>">浏览(<?php echo $value['views']; ?>)</a> </p> <?php echo $value['log_description']; ?> <?php blog_att($value['logid']); ?> </div>复制代码应该刚刚在module.php中已经给分类加上了in,所以此处去掉然后将下面那句<?php endwhile; ?>替换成<?php endforeach; ?>,结束日志列表再来看到一句判断是否为显示文章的语句<?php if (is_single()) : ?>,下面则是翻页,我们需要的是else后面的部分,其余删除,仅保留文章列表的翻页,并将其中内容修改为emlog的页码,此处也仅贴出修改前后供参考 <?php if (is_single()) : ?> <div class="navigation"> <span class="prev"><?php previous_post_link('%link') ?></span> <span class="next"><?php next_post_link('%link') ?></span> </div> <?php else : ?> <div class="navigation"> <div class="prev"><?php next_posts_link('« Previous posts') ?></div> <div class="next"><?php previous_posts_link('Next posts »') ?></div> </div> <?php endif; ?>复制代码 <div class="navigation"> <?php echo $page_url;?> </div>复制代码最后,将最后一句<?php get_footer(); ?>替换成<?php include getViews('footer'); ?>即可注:时间格式可以自由控制,参考php的date函数至此,log_list.php编辑完毕,此时,如果修改正确,你已经可以在首页预览此模板的效果了 第六步:echo_log.php及page.phpecho_log.php有两个方法:一是修改log_list.php,二是修改原模板single.php,这里介绍第二个将single.php重命名为echo_log.php打开它,将第一行<?php get_header(); ?>给替换成<?php if(!defined('EMLOG_ROOT')) {exit('error!');}?>同第五步,删掉判断是否有文章的相关语句,分别是接下来的<?php if (have_posts()) : ?>复制代码以及后面的<?php else : ?> <?php include (TEMPLATEPATH . '/not_found.php'); ?><?php endif; ?>复制代码接着删掉<?php the_post(); ?>,继续往下看,同第五步,参考默认模板echo_log.php修改相应php代码,修改前后如下 <div class="post" id="post-<?php the_ID(); ?>"> <p class="details_small"> on <?php the_date(); ?> by <?php the_author(); ?> in <?php the_category(', '); ?>, <?php comments_popup_link(__('Comments (0)'), __('Comments (1)'), __('Comments (%)')); ?> </p> <h1><?php the_title(); ?></h1> <div class="post_content"> <?php the_content(); ?> </div> <p><?php the_tags('Tags: ', ', ', '<br />'); ?></p> <?php wp_link_pages(array('before' => '<p><strong>ages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?> </div>复制代码 <div id="content" class="single"> <div class="post" id="post-<?php echo $logid; ?>"> <p class="details_small"> on <?php echo date('Y-n-j G:i l', $date); ?> by <?php blog_author($author); ?> <?php blog_sort($sortid, $logid); ?> </p> <h1><?php echo $log_title; ?></h1> <div class="post_content"> <?php echo $log_content; ?> <?php blog_att($logid); ?> <?php doAction('log_related'); ?> </div> <p><?php blog_tag($logid); ?></p> </div>复制代码下一句是评论表单<?php comments_template(); ?>,替换成<?php blog_trackback(); ?><?php blog_comments(); ?>复制代码下来是评论表单,之前第四步用到过这段代码,现在全部删除,用<?php if ($allow_remark == 'y'){blog_comments_post();}?>替换在下来是相邻日志,保留前后的div,中间的用<?php neighbor_log(); ?>替换,贴出修改前后的代码 <div class="navigation"> <div class="prev"><?php previous_post_link('%link') ?></div> <div class="next"><?php next_post_link('%link') ?></div> </div>复制代码 <div class="navigation"> <?php neighbor_log(); ?> </div>复制代码最后,将<?php get_footer(); ?>替换成<?php include getViews('footer'); ?>至此,echo_log.php修改完成下面是page.php,复制一个echo_log.php,重命名为page.php(删掉原有的page.php)打开它,删除如下代码即可:<?php echo date('Y-n-j G:i l', $date); ?><?php editflg($logid,$author); ?><?php blog_sort($sortid, $logid); ?><?php doAction('log_related'); ?><?php blog_tag($logid); ?><?php blog_trackback(); ?><?php neighbor_log(); ?>这些代码附近的一些相关的html也要删除,如本例中的 <div class="navigation"> <?php neighbor_log(); ?> </div>复制代码应全部删除那么第六步也完成了 第七步:整理1、遗漏部分:之前有一个引用的地方没有修改,现在来修改它,首先给测试的emlog发送一个引用,然后打开那篇日志,看看引用显示的效果本例中如图:引用地址显示还行,但是下面的显示不尽人意,那么回去module.php,修改html样式吧 ,在此,我使用评论列表的样式修改后:这样引用修改完毕还漏了什么呢?日志编辑标记,对,就是这个,从默认模板log_list.php和echo_log.php分别找到如下代码<?php editflg($value['logid'],$value['author']); ?>复制代码<?php editflg($logid,$author); ?>复制代码加在合适的位置吧2、修饰侧边栏主要是html样式,更多情况下,要修饰的只有日历,twitter和blogger先说后两者,主要问题是发表唠叨和更改状态的那个输入框,改个合适的宽度就OK了然后是日历,先从默认模板的css文件复制过来相应代码(最后10行),粘帖到新模板中,然后调成一个合适的就OK了像这样就挺合适的:3、删除无用文件及代码文件包括home.php,single.php,archive.php,archives.php等与本教程中未提及的原模板文件代码就是style.css里前几行注释4、缩略图这个怎么做我就不说了,我制图不好,直接用原版的,改成preview.jpg5、测试测试各个页面是否显示正常,我一般是写一篇包括图片附件,文件附件,评论,引用等等的日志来测试日志显示页面,记得测试各个浏览器兼容性,有时候还要适当的改变样式,本例中,我最后将导航栏移到sidebar_top.php了本教程到此完毕,同时意味着一个新的模板gonzo-daily完成了
2019年11月17日
346 阅读
0 评论
0 点赞
1
...
99
100
101