自己设计wordpress评论列表及评论框方法:
<php if('open' == $post->comment_status && $parent_comment_status == 'open') : // 如果文章允许评论 >
<div id="comments">
<php if(have_comments()) : >
<div>已有<php comments_number('0','1','%'); >条评论 <a id="to-quick-respond" style="color: #bc373a;" href="#respond">快速评论</a></div>
<ol id="comments-lists"><php wp_list_comments(array('callback' => 'mytheme_comment'));></ol>
<php if(get_comment_pages_count()->1 == get_option('page_comments')) : // 如果条数大于规定的条数,那么就要翻页了 >
<div id="comment-navi"></div>
<php endif; // 翻页导航结束 >
<php endif; // 评论列表结束 >
<div id="respond">
<php if(get_option('comment_registration') && !is_user_logged_in()) : //如果文章设置了必须登录才能评论 >
你必须<a href="<php wp_login_url(get_permalink()); >">登录</a>才能评论!
<php else : //文章不用登录就能评论 >
<form id="commentform" action="<php bloginfo('url'); >/wp-comments-postphp" method="post">
<php if(isset($_GET['replytocom']) && $_GET['replytocom'] != '') : >
<div>
您正在回复<php echo comment_author($_GET['replytocom']); ><a style="color: #f00;" href="#comment-<php echo $_GET['replytocom']; >" rel="nofollow">@<php echo $_GET['replytocom']; >楼</a> <a href="<php the_permalink(); >#comment-<php echo $_GET['replytocom']; >" rel="nofollow">取消</a>
<!-- 这里需要注意:由于我的主题是用我自己的方式取消回复,如果使用wordpress自己的取消按钮,请使用<php cancel_comment_reply_link('取消'); > -->
</div>
<php endif; >
<php if(is_user_logged_in()) : // 如果用户已经登录 >
<div>亲爱的<strong><php echo $user_identity; ></strong> 您已经登录啦! <a href="<php echo admin_url('profilephp'); >">修改信息</a> <a href="<php echo wp_logout_url(get_permalink()); >">注销</a> 赶快评论啊!</div>
<php elseif($comment_author != '') : // 如果用户没有登录,而之前又已经进行了评论,被记录的email信息 >
<div>亲爱的<strong><php echo $comment_author; ></strong> 欢迎回来!<a id="toggle-comment-author-info" href="javascript:toggleCommentAuthorInfo();"><php _e('修改信息'); ></a> 留下您的回复吧</div>
<div id="comment-author-info" style="display: none;"><input id="author" type="text" name="author" value="<php echo $comment_author; >" /><label for="author"><php _e('昵称'); ><php if ($req) echo " "; ></label>
<input id="email" type="text" name="email" value="<php echo $comment_author_email; >" /><label for="email"><php _e('邮箱'); ><php if ($req) echo " "; ></label>
<input id="url" type="text" name="url" value="<php echo $comment_author_url; >" /><label for="url"><php _e('个人主页'); ></label></div>
<script type="text/javascript">
var changeMsg = '修改信息';
var closeMsg = '隐藏信息';
function toggleCommentAuthorInfo(){
var $info_box = $('#comment-author-info'),$tog_btn = $('#toggle-comment-author-info');
$info_boxslideToggle('slow', function(){
if($info_boxcss('display') == 'none'){
$tog_btntext(changeMsg);
}else{
$tog_btntext(closeMsg);
}
});
}
</script>
<php else : //既没登录,也没之前留言情况下 >
<div>填写个人信息,赶快回复吧!</div>
<div id="comment-author-info"><input id="author" type="text" name="author" value="" /><label for="author"><php _e('昵称'); ><php if ($req) echo " "; ></label>
<input id="email" type="text" name="email" value="" /><label for="email"><php _e('邮箱'); ><php if ($req) echo " "; ></label>
<input id="url" type="text" name="url" value="" /><label for="url"><php _e('个人主页'); ></label></div>
<php endif; >
<div id="comment-text"><textarea id="comment" name="comment"></textarea></div>
<div>
<button id="submit" name="submit" type="submit"><php _e('提交'); ></button>
<span><a id="insert_comment_img" onclick="return insertImg('comment');" href="#">插入</a></span>
<php if(function_exists('add_mail_to_comment_checkbox'))add_mail_to_comment_checkbox(); >
<input type="hidden" name="redirect_to" value="<php the_permalink(); >" />
<php do_action('comment_form', $post->ID); >
<php comment_id_fields(); >
<div></div>
</div>
<script type="text/javascript">
// Ctrl+Enter提交评论
$(document)keypress(function(e){
if(ectrlKey && ewhich == 13 || ewhich == 10) {
$("#submit")click();
documentbodyfocus();
} else if (eshiftKey && ewhich==13 || ewhich == 10) {
$("#submit")click();
}
});
</script>
</form><php endif; // 回复部分结束 >
</div><!-- end of #respond -->
</div><!-- endi of #comment -->
<php endif; //如果文章允许评论的话,到这里结束
1、需求分析:需求收集和分析,得到数据字典和数据流图;
2、概念结构设计:对用户需求综合、归纳与抽象,形成概念模型;
3、逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型;
4、数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构;
5、数据库实施:建立数据库,编制与调试应用程序,组织数据入库,程序试运行;
6、数据库运行和维护:对数据库系统进行评价、调整与修改。
常用的论坛设计方法,总结如下:
一 分割思想:
1 数据库切分:用户库、主题库、回复库
2 数据表水平切分:用户库1-n、主题库1-n、回复库1-n (比如按时间分)
3 分布式数据库:每台计算机中都有DBMS的一份完整拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。
4 论坛功能可以进行分隔,不同的服务器负责不同的功能
5 用主从数据库,master是写, slave是读
6 把内容与其它信息分开,好处就是可以让每个表的文件最小化,对数据库 *** 作压力会减小,这样保证每张表数据量很小, *** 作速度会快,也可以在这里使用缓存
二 索引:
针对是否建立索引有着一定的分歧:
我觉得建立索引还是很有必要的。理由如下:
1)建立索引可以加快检索速度,对于论坛读和写的比例相差很大,用户体验当然是读多写少,所以综合考虑还是要用索引,而且是加在常用的读关键字上。
2)索引之所以会降低更新的速度,是因为更新还包括对索引的更新,从更新帖子10万左右,这句话是说,我们可能对发帖标题,发帖内容,回复标题,回复内容这4个字段做更新。需要注意的是,这四个字段并不是用来建立表连接的字段,为了优化查询速度我们不会在这四个字段上建立索引,所以从这道题目出发,我们建立的索引不会影响更新帖子的性能。只要被索引的列(例如回复表的标题ID)不被频繁更新,即使索引所在地行的其它列被频繁update,索引也不会被更新从而产生性能消耗,一张表一天30万次的索引更新,因它引起的性能消耗小到即使数据库安装在奔腾3单核CPU下都能轻松承担下来。
3)对于更新的速度慢的问题,我们有解决的方法,你提交更新了后,前台可以让程序返回一个正确结果,后台开个线程异步慢慢跟新数据库就是了,反正更新成功的前提就是假设数据库连接永远正确并处于可靠状态。在数据库和用户之间建立一个缓冲区。(如,将更新的数据放到内存中,达到一定数量的时候再统一更新数据库。假如以100条为例,一旦内存中达到100条数据量将这100条数据统一入库。减少insert *** 作)
三 缓冲:
读的时候的缓冲:缓存路由表
主题缓存表(这个取每个区的前面100条记录),一般来说负载最大的就是主题的第一页,所以缓存表是个小表。
另外使用hibernate,在数据库上面加了一层缓存。
生成静态页,缓存最热,最新的帖子。
对于经常更新的数据都设计成单独表 ,这样可以最大程度的利用hibernate缓存
缓存常用的数据和表,利用缓存来将经常被访问的帖子留在内存中,为每条缓存的记录添加一个访问时间,如果长时间没被访问就从缓存中删除掉,
避免内存过大,每次用户看帖的时候,首先检索缓存中时候有需要的帖子,没有的话再访问数据库,然后将数据库返回的帖子信息存储到缓存中。
写的时候的缓冲:数据库和用户之间建立缓存,将更新的数据放在内存中,异步 *** 作的。所有的写贴 *** 作 放到一个队列然后批量执行插入数据库 *** 作。
预估计的缓冲:假如用户第一次打开某标题,那将此标题的相关的前100条数据缓存到客户断。这样避开对数据库的直接查询,减少数据库压力。
四 代码优化
1尽量避免表的连接约束通过代码来实现约束 例如用户id的验证在用户登录时验证这样就可以把帖子表的用户id外键去掉这样就成了单表 *** 作、查询 而连接可以通过触发来实现这样最多是查询了3个表而不是连接中的笛卡尔笛卡尔积 回复表的查询限定每次查询的记录数例如限定10条其它的通过点击触发来 *** 作"注代码优化容易出现bug 原因有些开发工具本身有优化"
五 数据库性能调优
尽量用硬件来代替软件优化 原则就是能用硬件的尽量用硬件 比如磁盘阵列 RAID0 有条件用RAID10 加大内存 避免小表上建索引 对论坛来说数据帖子和回复不是很重要 可以定期删除一些垃圾帖子 楼主说的几百万条记录的论坛对现在的数据库管理系统和计算机来说永不着刻意的优化,定期维护打包备份数据库就可以了
提高速度的关键:
1建立合理的索引并在查询时充分利用;
2避免使用关联,这样避免整表扫描;使用关联不如多次使用主键查询来的快;
3一些处理的功能尽可能放到内存中来做,比如组织主题和回复;
4海量缓存(使用静态页面也是个不错的做法)
5 定期对表进行转储
以上就是关于如何自己设计wordpress评论列表及评论框全部的内容,包括:如何自己设计wordpress评论列表及评论框、如何设计数据库、论坛的数据库怎么设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)