superbig/craft3-templateselect

A fieldtype that allows you to select a template from a dropdown.

Installs: 44 442

Dependents: 0

Suggesters: 0

Security: 0

Stars: 17

Watchers: 2

Forks: 9

Open Issues: 5

Type:craft-plugin

pkg:composer/superbig/craft3-templateselect

5.0.0 2024-05-12 20:03 UTC

README

A fieldtype that allows you to select a template from the site templates folder.

Screenshot

Requirements

This plugin requires Craft CMS 4.0 or later.

Installation

To install the plugin, follow these instructions.

  1. Open your terminal and go to your Craft project:

     cd /path/to/project
    
  2. Then tell Composer to load the plugin:

     composer require superbig/craft3-templateselect
    
  3. In the Control Panel, go to Settings → Plugins and click the “Install” button for Template Select.

Configuring template select

Create a new field and choose field type Template Select.

In the field settings, you can limit the list of available templates to a subfolder of the Craft templates folder. The path is relative, i.e. subfolder/anotherfolder. This may also be set to an ENV variable.

Screenshot

Screenshot

In the field settings, you can choose to make the template names more user friendly. In the field, the list will be improved by changing the following:

  • file extensions will be removed
  • the file names will be capitalized and spaced for readability
  • folders will be separated by ›

Screenshot

Adding descriptions to templates

You can add descriptions to your templates to help users understand what each template does. This is especially useful when you have many templates to choose from.

To add a description to a template, add a special comment at the beginning of your template file:

{# @description: Displays a paginated list of blog posts with thumbnails and excerpts #}

The description will appear in the dropdown next to the template name, making it easier for content editors to select the right template.

Examples:

{# @description: Contact form with validation and CAPTCHA support #}
<form method="post">
    ...
</form>
{# @description: Hero section with background image and call-to-action button #}
<section class="hero">
    ...
</section>

Descriptions can also span multiple lines:

{# @description: Complex product grid layout
   Includes filters, sorting, and pagination
   Supports up to 4 columns #}

Note: Templates without descriptions will still work normally and appear in the dropdown without any description text.

Using template select

Output the chosen template name:

{{ entry.fieldHandle }}

Include/Embed the chosen template:

{% include entry.fieldHandle %}

Include the template including subfolder if set:

{% include entry.fieldHandle.withSubfolder() %}

This is a alias for the following:

{{ entry.templateWithSubfolder.template(true) }}

Output the subfolder name:

{{ entry.fieldHandle.subfolder() }}

Output the filename without path:

{{ entry.fieldHandle.filename() }}

Brought to you by Superbig