开发者

Collapsible comments in Drupal 7

开发者 https://www.devze.com 2023-03-13 01:15 出处:网络
I\'m using the latest Drupal 7.2 core and I have no idea how to solve my problem. I\'d like to collapse all nodes comments (there\'s lots of them) and expose them for the user when he presses \'show c

I'm using the latest Drupal 7.2 core and I have no idea how to solve my problem. I'd like to collapse all nodes comments (there's lots of them) and expose them for the user when he presses 'show comments'. I know it has something to do with the fieldsets (or maybe I'm wrong), but where, what and how ?

Every helpful answer will be app开发者_JAVA技巧reciated. Thanks in advance.


I wrote a begging private message to one of the contributors and he posted a working solution for collapsible comments in D7 - http://drupal.org/node/94035#comment-4674734


So i tried a bunch of ways as suggested here.

The thing I ended up doing since I was trying to basically just put all the comments stuff into a collapsible fieldset is outlined here:

  1. Go into the Content Type -> Manage Display.
  2. Create an empty fieldset called something like Comments (You'll need fieldset/fieldcollection modules)
  3. Once you have the group, grab the field_groupname for later use in code.

In your theme's template.php, or whereever you have the render arrays you'll have something like this to basically add the "comments" object into the group fieldset you just created.

function mytheme_preprocess_node(&$vars, $hook){
    $tempField = null;

    // Copy the comments / comment form into a variable.
    $tempField = $vars['content']['comments']; 

    // Rename some of the labels, use the markup
    $tempField['#title'] = "DMS URL";
    $tempField['#field_name'] = "field_comments";
    $tempField[0]['#markup'] = $vars['content']['comments'];

    // Add it into the group (fieldset/group name you copied)
    $vars['content']['group_commentsgroup']['field_comments'] = $tempField;
}

This will basically add your comments markup into an empty fieldset/group you created using node's manage display using fieldset/fieldcollection. Also, I was using ajax_comments for this.


This is more of a tip than an answer to your problem, but our website stopped using Drupal comments since they were too basic and moved to use the free service called Disqus


After a looong time of searching For Individual Collapsible comments I found a solution, where you can put your comment replies in an individual collapsible fieldset. :)

Below code in script.js Include the js in .info file as scripts[] = js/script.js

(function($) {$(function() { // Hurry up and hide the comments and its replies, if present. In most browsers, this

$('.indented').hide();

// The Comment section will be turned into a toggle to
//     open/close the comments
$('.comment').addClass('closed').bind('click', function() {
  var $self = $(this),
      $form = $self.siblings('.indented'),
      speed = 250; // speed of animation, change to suit, larger = slower

  if ($self.hasClass('open')) {
    $self.addClass('transition').removeClass('open');
    $form.hide(speed, function() {
      $self.addClass('closed').removeClass('transition');
    });
  }
  else {
    $self.addClass('transition').removeClass('closed');
    $form.show(speed, function() {
      $self.addClass('open').removeClass('transition');
    });
  }
});

}); })(jQuery);

0

精彩评论

暂无评论...
验证码 换一张
取 消