Drupal 7 开发内部培训资料, 分头诗人

关于评论筛选的问题,就是在评论的上方加个下拉框,只显示楼主和自己的评论供别人选择,怎么实现?

赞成!
0
否决!

我这边有个需求,就是在评论的上方加个下拉框,只显示楼主和自己的评论供别人选择。

核心逻辑是好弄,比如可以get方式传递uid和nid,但不知道要将逻辑写在哪里,或者哪个hook下,请指点。

谢谢!

3 个回答

赞成!
0
否决!

首先你可以看看drupal 默认的留言结构是:

<a id="comment-4673"></a>
<div class="comment comment-by-viewer first odd clearfix" about="/comment/4673#comment-4673" typeof="sioc:Post sioct:Comment">
留言内容
</div>

<a id="comment-4674"></a>
<div class="comment comment-by-viewer first odd clearfix" about="/comment/4674#comment-4674" typeof="sioc:Post sioct:Comment">
留言内容
</div>

你可以增加js:

jQuery("#btnCloseAll").click(courseJS.closeAll);
		var overlay_defaults={
			overlay_class: '.overlay',
				width: '680',
				center: true
			}
			if(typeof window['simpleOverlay']=='undefined')
				simpleOverlay=new overlay();
			simpleOverlay.start_with_options(overlay_defaults);
	});
var courseJS = new function (id, css) {
		var self = this;
		var toggleAll= function (on) {
			var chapterDivName = 'chapterDiv';
			jQuery('div' + id + ' > div.' + chapterDivName + ' > a.' + css[0] + ',' + 'div' + id + ' > div.' + chapterDivName + ' > a.' + css[1]).each(function (i) {
				var e = jQuery(this);
				var n = e.parent().next();
				if (!(e.id && e.id.length > 0) && n.is(':visible') != on)
				{
					n.toggle();
					e.toggleClass('a b');
				}
			});

			return false;
		};

		this.showAll = function () { return toggleAll(true); };
		this.closeAll = function () { return toggleAll(false); };

通过类似的方法,寻找<a id="comment-4674"></a> 跟着的div元素,把他隐藏或者显示就可以了。

---------------------------------------------------------------------

下面是一个类似的例子,这个例子是显示 隐藏,大概跟你的那个想法差不多,你可以下载来看看。

展开、收起、展开全部、收起全部

赞成!
0
否决!

谢谢诗人兄,这个例子我看是通过前端显示隐藏实现的吧,但这会影响分页的。

我觉得还是通过后台逻辑实现比较好。

赞成!
0
否决!

后来我在theme_preproess_node这个方法下查询数据库

	//只看自己的评论
		$self_uid = isset($_GET['ziji_uid'])?intval(filter_xss($_GET['ziji_uid'])):NULL;
		if(!empty($self_uid)){
			$form = $variables['content']['comments']['comment_form'];
			$node = node_load($nid);
			$query = 'SELECT cid FROM {comment} WHERE uid=:uid AND nid=:nid ORDER BY cid ASC';
			$result = db_query($query,array(':uid'=>$self_uid,':nid'=>$nid))->fetchAll();
			if(!empty($result)){
				foreach ($result as $value) {
					$cid = $value->cid;
					$comment = comment_load($cid);
					$build[$comment->cid] = comment_view($comment, $node);
				}
			}
			else{
			 $build['help'] = array('#markup'=>'您并未在该主题下评论喔~');
			}
			$build['title'] = array('#markup'=>'<div id="comments" class="comment-wrapper"><h2 class="title comment-form">添加新评论</h2></div>');
			$build['comment_form'] = $form;
			$variables['content']['comments'] = $build;
		} 

代码如下,却发现一大堆莫名其妙的排版问题,比如评论内容错位等等,实在想不清要怎么样才能和原来的排版一样。请问各位有弄过这块的吗?请指点一下,谢谢!