> For the complete documentation index, see [llms.txt](https://docs.airdev.co/canvas-pages-and-modules/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.airdev.co/canvas-pages-and-modules/2.0.0/modules/nested-comments-thread-with-like-and-reply.md).

# Nested Comments Thread (with Like and Reply)

## Overview

This block contains a list of comments created by different users. Each user can create a new comment, reply to, or like a parent comment. This block (and its comments database object) can be connected to any data object in your database (e.g., a topic, a product, or a post). Admins (or users with admin access) can manage the comments section by hovering over a comment and clicking on the ellipsis menu to delete the comment.

## Structure

When this block is added to a page, it is placed within a group called ***Blocks container 860 (do not rename)*** on the page. This group contains the responsive settings for all blocks.

* **new\_nestedcommentsGroup**\
  This reusable element contains all of the logic and UI for the nested comments module. It contains four main groups:<br>
  * **Group Parent message input**\
    This group contains the multiline input for posting a parent `comment`. Clicking on **Button Parent POST** will most the text in **MultilineInput Parent Comment** as a parent `comment`.<br>
  * **RepeatingGroup Parent comment**\
    This repeating group displays all parent `comments` posted by users (where the parent comment is empty).
    * **RepeatingGroup Child comment** displays all children comments (where the parent comment is parent group's comment).
    * Clicking on **Text Parent reply button** will show **Group Child message input\_t-comment** and allow the user to reply to a parent `comment`.
      * Clicking on **Button Child REPLY** will post the `comment` underneath the parent `comment`.
    * Clicking on **Text Parent like button** and **Text Child like button** will show **Popup likes**.
    * Clicking on **Group Parent fav comment\_t-comment** or **Group Child fav comment\_t-comment** will like/unlike the comment.
    * Clicking on **Group Parent menu\_t-comment** and **Group Child menu\_t-comment** will show a menu to delete a `comment`.
      * You should add another statement to the existing conditional statements on these groups: *...and Current user's Role is App Admin*<br>
  * **Group Main no comments**\
    This group will be visible when **RepeatingGroup Parent comment's** list of comments count is 0.<br>
  * **Popup Likes**\
    This popup shows a list of users who have liked a `comment`.

## How to set up

* Add a field to the `Comment` data type that represents the object on which you want users to comment. For example, if you want users to comment on products, you should add a `Product` field.

![](/files/-LbzWjPZiiLmw8oGahZx)

* Open the **new\_nestedcomments** reusable <br>
* Modify the type of content displayed in the reusable to be whatever object for which you want to show comments. In this case you should make the group type be `Product`.

![](/files/-LchFAIe395PmeYUl5Oe)

* Modify the data source for **RepeatingGroup Parent comment** to include whatever filter you need. In this case, you should only include comments that are linked to the `Product` being displayed. &#x20;

![](/files/-LchFU23O4r3ISmmKGbR)

* Modify the action that runs when the **Button Parent POST** is clicked to also link the`Comment` created to the relevant object, in this case the `Product` that's displayed in the reusable.

![](/files/-LbzXakg9MJ1NnGHtqbl)

* Add a data source whenever you use the **new\_nestedcomments** reusable element as an instance on a page.&#x20;

![](/files/-LchG49kVyGKPKOGu1fS)
