Jump to content

Filtering Results by Number of Comments


quickjeff
 Share

Recommended Posts

Hi Guys,

I am running a page template that contains a filter form that allows users to display results based on number of  comments. 

Here is what I am thinking about doing: 

-add new field called total_comments 

-somehow populate this field every time a new comment is added or removed by admin with count($page->comments)

-use form filter to display results that the selector form has found.

Example: $selector = “total_comments>=$q”; 

 

My question to everyone: Is this a good approach? If so how do I get another field to update based on the comment module adding or removing a comment? 

Link to comment
Share on other sites

Hi,

I think that you don't need to do that because $page->comments->count return number of comments for page.

Some options to sort pages by comments:

// example: page template "blog-item"
// $pages->find($selector)...

// from top by number of comments
$selector = 'template=blog-item, sort=-comments.count'

// by recent comment
$selector = 'template=blog-item, sort=-comments.created'

// by upvotes
$selector = 'template=blog-item, sort=-comments.upvotes'

Or options by downvotes or stars.
Also, there are and additions, eg. "AND comments.count > 10" etc...

Regards.

EDIT: read again your question, and if you have page array (results), than you can try to filter results with this:
 

$my_results->sort("-comments.count");

 

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By gregory
      Hi all, I duplicated the FieldtypeComments module by adding it in site/modules to get the Uikit3 html output.
      Problem: I can't post a comment.
      Where am I doing wrong?
      <?php echo $page->commenti->renderForm(); ?>  
       

    • By rjgamer
      Hi,
      is there a hook after the current (active) page got created? Or which method got called in the Page class after the Constructor of the current page got initialized?
      Thanks.
       
    • By Kiwi Chris
      I need to restrict editing access based on both the user role, and the value of a sub-field in a page reference field.
      eg $page->competition->closingDate 
      There's some discussion about restricting editing access based on role, and that works, but when I try to access the page via the method @Robin S suggests, the page returned is an admin page rather than the page being edited, so I don't have access to the edited page's fields.
       
    • By picarica
      so i am trying to put CustomHooksForVariations.module, a custom module, i am placing it into site/modules direcotry yet my modules page in admin panel gives me errors
      so this is the screen show when i refresh modules, i dont know why the shole hook is written on top of the page :||

      and this next image is when i try to install it, i saw that it is not defiuned modules.php but it shouldnt need to be ?, any ways i dont want to edit site's core just to make one moulde work there has to be a way

    • By Andi
      Continuing my journey into PW hooks, I'm trying to find a way to retrieve all images from a page that explicitly *do not* have a certain tag (or tags) attached to them.
      Found this post from 2015
      But I'm wondering if there's a more elegant way to go about this.
      Let's say I have a multi-image field called "images_header" and instead of
      $page->images_header->findTag('mytag'); I would like to do this:
      $page->images_header->excludeTag('mytag'); So I'd be able to do
      // find images that don't have the tag "mytag" $images = $page->images_header->excludeTag('mytag'); // check if there's any images if (count($images)>0) { // do something.. } Would this be possible by hooking into Pagefiles somehow?
      There's this bit in /wire/core/Pagefiles.php Line 626 that I'd basically just need to reverse (or at least in my mind 😄 )
      public function findTag($tag) { $items = $this->makeNew(); foreach($this as $pagefile) { if($pagefile->hasTag($tag)) $items->add($pagefile); } return $items; } Any ideas on how this could be done in a graceful manner?
      Thanks in advance!
×
×
  • Create New...