What is the reason of hidding comments and links in node.tpl.php? What is the reason of first hiding the comments and links and later showing theme in node.tpl.php?

even if I delete following three lines of this system it does not change anything,
hide($content['comments']);
hide($content['links']);
&lt;?php print render($content['comments']); ?&gt;

 

from node.tpl.php

    &lt;div class="content clearfix"&lt;?php print $content_attributes; ?&gt;&gt;
            &lt;?php
              // We hide the comments and links now so that we can render them later.
              hide($content['comments']);
              hide($content['links']);
              print render($content);
            ?&gt;
          &lt;/div&gt;

          &lt;?php
            // Remove the "Add new comment" link on the teaser page or if the comment
            // form is being displayed on the same page.
            if ($teaser || !empty($content['comments']['comment_form'])) {
              unset($content['links']['comment']['#links']['comment-add']);
            }
            // Only display the wrapper div if there are links.
            $links = render($content['links']);
            if ($links):
          ?&gt;
            &lt;div class="link-wrapper"&gt;
              &lt;?php print $links; ?&gt;
            &lt;/div&gt;
          &lt;?php endif; ?&gt;

          &lt;?php print render($content['comments']); ?&gt;
You don't need to remove them from your node.tpl.php -- but that is always an option.

I recommend a better solution, however.

First, you can check out this resource to read more about how to deal with fields when they are being displayed on a node.

A really good solution (and one I always recommend) is using modules like Display Suite to customize the fields on your content type. You can customize the create/edit form as well as you can control which fields you want to be visible when visitors are looking at nodes.