Custom Template for Component | Yext Hitchhikers Platform

Using a Custom Template for a Component

All component templates are written using Handlebars templates.

It’s easy to override these templates with your own templates. Keep in mind, that you must provide valid Handlebars syntax here. You can either define templates in-line, or use a registerTemplate method.

Define Templates In-Line

// Use Handlebars syntax to create a template string
let customTemplate = `<div class="my-search">{{title}}</div>`

ANSWERS.addComponent('SearchBar', {
  container: '.search-container',
  template: customTemplate
})

Define Templates with registerTemplate

You can also define templates with our registerTemplate method. This method takes two arguments, a name and the template string.

In order to override an existing component’s template, the name should match the default template. This is returned in the component’s defaultTemplateName method; you can find it in the JS files for the various components. For example, here’s the SearchBar .

ANSWERS.registerTemplate('search/search', `<div class="my-search">{{title}}</div>` );

ANSWERS.addComponent('SearchBar', {
  container: '.search-container'
})

Which Should I Use?

registerTemplate is helpful because it can be called at any point (whereas your addComponent can be called once), therefore allowing for dynamic templates. However, in most cases, defining the template inline will suffice. registerTemplate is most helpful for creating custom components .