首页
留言板
统计
Search
1
阿里云国际OSS使用CloudFlare免流量
2,263 阅读
2
PP.UA免费域名注册
2,173 阅读
3
Adobe Photoshop CS2经典版 中文原版
2,158 阅读
4
7-Zip中文美化版
2,027 阅读
5
获取免费的 Microsoft 365 E5 开发人员订阅
1,941 阅读
软件分享
网络资源
网络代码
生活情感
免费主机
Search
标签搜索
代码
工具软件
Android
教程
Emlog
办公软件
图形图像
免费空间
Web
情感
PHP
视频
系统工具
上传下载
Windows
建站
PDF
网盘
学习
Typecho
ZJ
累计撰写
802
篇文章
累计收到
105
条评论
首页
栏目
软件分享
网络资源
网络代码
生活情感
免费主机
页面
留言板
统计
搜索到
101
篇与
的结果
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日
268 阅读
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日
344 阅读
0 评论
0 点赞
2019-11-17
emlog模板结构介绍
模板文件目录说明一般来说,一个模板都会包含以下几个部分:images文件夹:存放模板所需图片。echo_log.php:显示日志内容。footer.php:页面底部。header.php:页面头部。log_list.php:显示日志列表内容。main.css:模板的css文件。module.php:模板公共代码,包含侧边widgets、评论、引用、编辑等,该文件是模板最核心的模块。page.php:自定义的页面内容的模板。preview.jpg:在后台模板选择界面显示的模板预览图,300×225 jpg格式。side.php:模板侧边栏文件,如制作单栏模板则该文件不是必须的。t.php:显示emlog系统自带的微博(碎语)内容。404.php 自定义404页面未找到时的报错页面在一般的emlog模板开发中,以上提及的部分中echo_log.php、log_list.php、module.php、page.php、t.php、header.php以及preview.jpg是不可或缺的,一旦缺省,模板将无法运行。此外的side.php、footer.php、main.css、images文件夹等,只需要对模板代码做小部分更改,那么它们都是可以改名、移动、甚至删除的。下面我们将对以上各模块进行简要分析:公共代码分析通过预览整个模板中的各个文件,你会发现以下代码同时存在于多个文件中,这些代码分别有以下用途: if(!defined('EMLOG_ROOT')) {exit('error!');} 此行代码存在于模板目录下的每个php文件起始部分(事实上为了安全起见,该行代码也在admin目录下的几乎所有php文件起始部分存在),其作用是防止代码所在的php脚本被直接访问执行。 require_once View::getView('side'); require_once View::getView('footer'); 这两行代码存在于log_list.php、echo_log.php、page.php、t.php里面,其作用是调用模板文件夹下的side.php和footer.php的代码到当前文件的当前位置。View是emlog的模板视图控制器,View::getView('文件名','文件后缀')将返回当前模板安装路径下对应的文件。getView函数的第二个参数为缺省参数,在不传入值的情况下,将默认作为.php文件后缀返回文件路径。header.php开头注释内容是模板信息,该信息显示在模板选择界面Template Name:模板名称Description:模板介绍描述Author:模板作者Author Url:作者或模板发布的URLSidebar Amount:标记该模板有几个侧边栏,一般为1,有些模板有两个侧边栏则标记2。这样可以在后台widgets里识别管理(具体可下载体验官方收录的模板G7)。之后是具体代码部分:if(!defined('EMLOG_ROOT')) {exit('error!');}该行代码同样存在于其它模板文件中,为防止该文件被直接执行。require_once View::getView('module');加载模板公共代码.* $site_title:站点标题 * $site_key:关键字 * $site_description:输出博客设置的摘要 * BLOG_URL:博客首页的URL,输出形如http://simue.com/blog/ * TEMPLATE_URL:模板文件夹的URL,用于加载模板内的css、js及其他内容,输出形如http://simue.com/blog/content/templates/simue-tuso/ * BLOG_URL.Option::get('topimg'):这句可以无视,因为只默认模板可以自定义banner,其它模板没这功能(卡片语:很没营养的设定,嗯。)<?php echo $curpage == CURPAGE_HOME ? 'current' : 'common';?> 判断当前是否首页,是则给导航加current类,用于表现当前位置。<?php if($istwitter == 'y'):?>…….<?php endif;?> 如后台设置在前台显示碎语,则输出…….中的内容。<?php echo $curpage == CURPAGE_TW ? 'current' : 'common';?> 判断当前URL是否为碎语并选择加类名。<?php foreach ($navibar as $key ⇒ $val):?>…….<?php endforeach;?> 输出自定义页面的链接footer.phpOption::EMLOG_VERSION:获得版本号。$icp:获得后台设置的ICP备案号。<?php doAction('index_footer'); ?> 页脚底部挂载点加入。log_list.php<?php doAction('index_loglist_top'); ?> 页脚底部挂载点加入。$value['logid'] 该变量为当前日志的id<?php topflg($value['top']); ?> 显示置顶标记,该函数位于模板module.php内。<?php echo $value['log_url']; ?> 输出日志URL<?php echo $value['log_title']; ?> 输出日志标题<?php blog_author($value['author']); ?>输出日志的作者,该函数位于模板module.php内。<?php echo gmdate('Y-n-j G:i l', $value['date']); ?>输出日志发布时间,参数'Y-n-j G:i l'用于定义日期格式。<?php blog_sort($value['logid']); ?>输出日志所属的分类,该函数位于模板module.php内。<?php editflg($value['logid'],$value['author']); ?>当管理员或作者登陆时显示“编辑”链接,该函数位于模板module.php内。<?php echo $value['log_description']; ?>输出日志摘要(没有摘要则输出全文)。<?php blog_att($value['logid']); ?>如日志有附件则输出附件,该函数位于模板module.php内。<?php blog_tag($value['logid']); ?> 输出日志的标签,该函数位于模板module.php内。<?php echo $value['comnum']; ?> 输出当前日志的评论数<?php echo $value['tbcount']; ?> 输出当前日志的引用量<?php echo $value['views']; ?> 输出当前日志的浏览量<?php echo $page_url;?> 显示当前列表页的翻页功能。<?php include View::getView('side'); include View::getView('footer'); ?>加入侧边栏及加入页脚。echo_log.php该文件功能函数与列表页一致,但参数有区别,注意区分。 $logid 该变量为当前日志的id<?php topflg($top); ?> 显示置顶标记,该函数位于模板module.php内。<?php echo $log_title; ?> 输出日志标题。<?php blog_author($author); ?> 输出日志的作者,该函数位于模板module.php内。<?php echo gmdate('Y-n-j G:i l', $date); ?> 输出日志发布时间,参数'Y-n-j G:i l'用于定义日期格式。<?php blog_sort($logid); ?> 输出日志所属的分类,该函数位于模板module.php内。<?php editflg($logid,$author); ?> 当管理员或作者登陆时显示“编辑”链接,该函数位于模板module.php内。<?php echo $log_content; ?> 输出日志全文内容。<?php blog_att($logid); ?> 如日志有附件则输出附件,该函数位于模板module.php内。<?php blog_tag($logid); ?> 输出日志的标签,该函数位于模板module.php内。<?php echo $comnum; ?> 日志页显示评论数<?php echo $tbcount; ?> 日志页显示引用数<?php echo $views; ?> 日志页显示浏览量<?php doAction('log_related', $logData); ?> 相关日志的挂载点,与3.x版本不同,4.0带第二参数。<?php neighbor_log($neighborLog); ?> 输出邻近,就是上一篇及下一篇,该函数位于模板module.php内。<?php blog_trackback($tb, $tb_url, $allow_tb); ?> 输出该日志被引用的信息列表,与3.x不同注意区分。<?php blog_comments($comments); ?> 输出该日志评论列表,与3.x不同注意区分。<?php blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark); ?> 输出发表评论框,与3.x不同注意区分。page.php该文件写法与echo_log.php类似,不再重复。t.php与之前相同的内容不再重复。 <?php echo $avatar; ?> 输出头像。<?php echo $author; ?> 输出作者名。<?php echo $val['t'];?> 输出碎语内容。<?php echo DYNAMIC_BLOGURL; ?> 根据当前url输出博客地址,主要用于js,解决跨域问题。<?php echo $tid;?> 输出碎语所在数据库中的id号。<?php echo $val['date'];?> 发布碎语的时间。$reply_code :其值为‘n’或‘y’,后台设置是否启用碎语回复验证码。<?php echo $rcode; ?> 输出验证码。side.php侧边栏,主要负责根据后台widgets设置信息输出侧边栏内容。建议该文件内代码保持不变。module.php模板公共代码,包含侧边widgets、评论、引用、编辑等。 该文件由若干函数组成,被博客前台文件调用,可在内自定义函数实现更多功能。 如在自定义函数内调用emlog缓存时,假设读取user缓存信息,则形如: global $CACHE; $user_cache = $CACHE→readCache('user'); 如需要操作数据库,则形如: $DB = MySql::getInstance(); $res = $DB→query($sql); 以上两点与3.x不同,请注意区分。404.php用于自定义404页面的模板。最后附:前台模板部分挂载点一览doAction('index_footer'); 页脚底部挂载点doAction('index_loglist_top'); 首页日志列表顶部挂载点doAction('log_related', $logData); 相关日志挂载点doAction('diff_side'); 侧边栏挂载点
2019年11月17日
237 阅读
0 评论
0 点赞
2019-11-17
emlog侧边栏最新评论列表不显示博主的评论回复
首先打开模板的module.php,搜索widget_newcomm这个方法在函数体里加上$user_cache = $CACHE->readCache('user'); $name = $user_cache[1]['name'];在循环处加上if($value['name']!=$name): //原循环的内容 endif;
2019年11月17日
251 阅读
0 评论
0 点赞
2019-01-17
Emlog所有标签列表代码
EMLOG的标签是个特色,其实标签的功能是很强大的,如果你能充分利用好标签,你可以用EMLOG的标签功能做成各种效果;EMLOG默认没有所有标签列表,只有在侧边栏有全部标签显示的列表,我们可以动手来制作一个EMLOG所有标签列表的页面,今天就分享下自己动手制作EMLOG所有标签列表的步骤;首先使用编辑器新建个PHP文件命名为TAGS.PHP,编辑这个PHP文件把以下代码复制到PHP文件里面,做做相应的修改把名称改为你的,保存这个PHP文件上传到你的EMLOG站点的跟目录下,然后再浏览器地址栏输入路径网址打开你就会看到效果了。<?php require_once 'init.php'; define('TEMPLATE_PATH', TPLS_PATH.Option::get('nonce_templet').'/'); $CACHE = Cache::getInstance(); $options_cache = $CACHE->readCache('options'); extract($options_cache); $navibar = unserialize($navibar); $curpage = CURPAGE_HOME; $site_title = '所有标签列表 - '.Option::get('blogname'); $site_key = '标签列表,标签云集,文章标签索引'; $site_description = '所有标签列表页面'; include View::getView('header'); ?> <div style="background:#fff;padding:10px;display: table;height:100%"> <div style="font-size:16px;padding-bottom:5px;margin-bottom:10px;color:#0C3;border-bottom:1px solid #00aff0">现在位置:<a title="返回首页" href="<?php echo BLOG_URL; ?>">首页</a> » 所有标签列表</div> <ul> <?php global $CACHE; $tag_cache = $CACHE->readCache('tags');?> <?php foreach($tag_cache as $value): ?> <li style="white-space:nowrap;margin:0 10px 10px 0;float:left"><span style="font-size:<?php echo $value['fontsize']; ?>pt; line-height:30px;border: 1px dashed #CCC;padding: 5px;border-radius: 10px;display: block;"> <a style="color:#<?php echo dechex(rand(0,16777215));?>" href="<?php echo Url::tag($value['tagurl']); ?>" title="<?php echo $value['usenum']; ?> 篇日志"><?php echo $value['tagname']; ?>(<?php echo $value['usenum']; ?>)</a></span></li><?php endforeach; ?> </ul> </div><div style="clear:both"></div> <?php include View::getView('footer');?>
2019年01月17日
631 阅读
0 评论
0 点赞
1
...
12
13