Hidden Templates
Sometimes it is undesirable to allow access to a template via a URL. For instance, a template that you only use as an embedded template would likely be an incomplete HTML document, and not something you would want your users to be able to come across on its own, even accidentally.
"Hidden" templates are just that: templates that cannot be accessed from a URL, but can be used as embedded templates. What makes a template "hidden"?
Hiding Templates
ExpressionEngine uses a convention that is common among many file-systems, so it may already be familiar to you. To make a template "hidden", simply give it a name preceded by a period, e.g. ".my_hidden_template".
When a Hidden Template is Requested in the URL
When someone attempts to access a hidden template via the URL, one of two things will occur. If you have specified a 404 template in your Global Template Preferences, then the 404 template will be displayed, with 404 headers. If you have not specified a 404 template, then the index template of the requested template group will be displayed.
Example
{embed="site/.navigation" loc="books"}
In this example, if the URL http://www.example.com/index.php/site/.navigation was requested, the site's 404 template would be shown if it was defined, or the site/index template if it were not.
User Contributed Notes
Hidden templates will also not work as a Page’s template when defined in the Pages tab of the Publish page. This means using ‘site/.page’ as a Page template will not work.
A note on Dom. S’s comment that there are other options in addition to changing the indicator:
If you are using an FTP application such as Transmit, or a design environment like Dreamweaver or Coda, you can typically turn on an option to show hidden files. For Finder itself, there are various ways to enable the display of these files, and even a handy way to toggle it when necessary.
The standard ‘.’ prefix for hidden templates can cause problems if you use the Save Template As File option, particularly on a Mac. To avoid this problem set the config value hidden_template_indicator in your config.php file. This will set the trigger to an underscore instead.
You must have an ExpressionEngine license and have attained a forum rank of "Lab Assistant" (100 posts) to contribute notes to the User Guide