在文章页面添加 编辑文章,删除评论 按钮

一. 文章编辑按钮

平时看到某篇文章需要修改,总是觉得要去后台找到对应文章的条目再编辑够麻烦,于是在文章页面添加个 编辑 的按钮,管理员账号登录,则显示此按钮.

以ios 主题为例说明.

a. 检查访问者是否是管理员.

usr/themes/ios/post.php 中 echo get_class($this); 可知$this 为Widget_Archive类的实例,


继承关系(相对路径目录var/Widget/):

Widget_Archive(Archive.php)-> Widget_Abstract_Contents(Abstract/Contents.php) -> Widget_Abstract(Abstract.php)

在 Widget_Abstract 类中找到想要的 user 成员,类型为Widget_User(User.php), 其 hasLogin 方法可以检查是否已登录.

或者直接 print_r($this) ,也可以看到user成员.

b. 文章编辑链接.

__TYPECHO_ADMIN_DIR__/write-post.php?cid={cid}

c. 开始修改代码, themes/ios/post.php 中:


					<?php if($this->user->hasLogin()): ?>
						&nbsp;&nbsp;&nbsp;&nbsp;<a href="<?php echo __TYPECHO_ADMIN_DIR__ ,'write-post.php?cid=',$this->getArchiveSlug();?>" class="edit">编辑</a>
					<?php endif; ?>
				</p>
			</header>
			<?php $this->content(); ?>

typecho 0.9 用 

a href="<?php $this->options->adminUrl('write-post.php?cid='. $this->cid); ?>" 

获得编辑链接

 

二. 评论删除按钮

a. 删除评论链接.

action/comments-edit?do=delete&coid={coid}

b. 开始修改代码, /var/Widget/Comments/Archive.php 中:

Widget_Comments_Archive 类的 threadedCommentsCallback .


    <div class="comment-reply">
		<?php if($this->user->hasLogin()): ?><!-- 添加删除评论按钮 -->
			<a href="action/comments-edit?do=delete&coid=<?php echo $this->coid;?>" class="delete" onclick="return confirm('Are you sure to delete this comment?')">删除 &nbsp;</a>
		<?php endif; ?>
        <?php $this->reply($singleCommentOptions->replyWord); ?>
    </div>

c. 如果不想修改系统文件,也可以在 themes/ios/comments.php 中添加js来实现:

原理就是js正则获取到每条评论的coid,并在合适的页面位置动态插入删除链接.


            <?php $comments->listComments(); ?>
            <?php endif; ?>
			

			<?php if($this->user->hasLogin()): ?>	<!-- add delete button on post page -->
				<script type="text/javascript">

				//-----------------------------------------------------------------------
				// the javascript for delete commnet on post page 
				// the comment div id should be 'comments'
				// the className of the reply link's parentNode should be 'comment-reply'
				//			@yurenchen	2012/3/26 23:14
				(function(){
					var links=document.getElementById('comments').getElementsByTagName('a');
					var re=/replyTo=(\d+)/;

					for(var i=0;i<links.length;i++){
						var o=links[i];
						if(o.parentNode.className=='comment-reply' && o.className!='delete' ){
							//console.log(o);
							var r=o.href.match(re);
							//if(r.length>0)console.log(r[1]);
							var a=document.createElement('a');
							with(a){
								href='action/comments-edit?do=delete&coid='+r[1];
								className='delete';
								innerHTML='Delete &nbsp;';
							}
							o.parentNode.insertBefore(a,o);
							a.setAttribute('onclick',"return confirm('Are you sure to delete this comment?')");
							i++;
						}
					}
				})();
				</script>
            <?php endif; ?>

 

转载须注明出处:http://www.yurenchen.com/12.htm


标签: javascript typecho php

已有 2 条评论 »

  1. Hello! cccgceb interesting cccgceb site! I'm really like it! Very, very cccgceb good!

  2. lx lx

    嗯,太好了。正需要添加编辑按钮

添加新评论 »

贴图表情