Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

Configured Hawksearch results widget using the Vue template

Configuring ' Hawksearch results ' Widgetwidget

Enable Vue.js for Hawksearch results widget

...

  • Overriding the result item component with two column layout using bootstrap classes

    1. Navigate to the directory of the current active widget template (e.g. Mvc\Views\Hawksearch\Hawksearch.Default.cshtml or the relevant resource package).

    2. Copy the file of the base template and name it accordingly (Hawksearch.TwoColumns.cshtml for example).

    3. Edit the file adding or replacing the template override for result item:

      Code Block
      <script id="vue-hawksearch-result-item" type="x-template">
          <div class="row">
              <div class="col-md-6">
                  <div><h3>{{ getField('title') }}</h3></div>
                  <div>{{ getField('info') }}</div>
              </div>
              <div class="col-md-6">
                  <div>{{ getField('content') }}</div>
              </div>
          </div>
      </script>

      Apply the desired structure in this format. All indexed fields are accessible through getField().

    4. Include the file in the project and make it an Embedded resource in the Visual Studio solution.

    5. Save, build and reload the site.

    6. Open the widget designer for Hawksearch results widget on the designated page and select the newly created template from the select list . Save and publish the page. Configuring ' Hawksearch results ' Widgetwidget

  • Overriding the result item component to include images and links

    1. Navigate to the directory of the current active widget template (e.g. Mvc\Views\Hawksearch\Hawksearch.Default.cshtml or the relevant resource package).

    2. Copy the file of the base template and name it accordingly (Hawksearch.Gallery.cshtml for example).

    3. Edit the file adding or replacing the template override for result item:

      Code Block
      <script id="vue-hawksearch-result-item" type="x-template">
          <div>
              <a :href="getField('url')">
                  <img :src="getField('image')">
              </a>
              <p>{{ getField('description') }}</p>
          </div>
      </script>

      Apply the desired structure in this format. All indexed fields are accessible through getField(). Note the syntax of binding the attributes (no {{ }} and : placed before the attribute).

    4. Include the file in the project and make it an Embedded resource in the Visual Studio solution.

    5. Save, build and reload the site.

    6. Open the widget designer for Hawksearch results widget on the designated page and select the newly created template from the select list . Save and publish the page. Configuring ' Hawksearch results ' Widgetwidget

  • Extending search results view to show additional fields based on the type of the result item

    1. Navigate to the directory of the current active widget template (e.g. Mvc\Views\Hawksearch\Hawksearch.Default.cshtml or the relevant resource package).

    2. Copy the file of the base template and name it accordingly (Hawksearch.ContentTypeDynamicItems.cshtml for example).

    3. Edit the file adding or replacing the template override for result item:

      Code Block
      <script id="vue-hawksearch-result-item" type="x-template">
          <div>
              <template v-if="getField('contenttype') == 'Telerik.Sitefinity.Events.Model.Event'">
                  <div><h3>{{ getField('title') }}</h3></div>
                  <div><img :src="getField('image')"></div>
                  <div>{{ getField('content') }}</div>
              </template>
              <template v-else-if="getField('contenttype') == 'Telerik.Sitefinity.News.Model.NewsItem'">
                  <div><h3>{{ getField('title') }}</h3></div>
                  <div>{{ getField('summary') }}</div>
                  <p><a :href="getField('link')">Read more</a></p>
              </template>
              <template v-else>
                  <div>{{ getField('content') }}</div>
              </template>
          </div>
      </script>

      Apply the desired structure in this format. All indexed fields are accessible through getField(). Vue.js directives are applicable in the template override ( Vue.js Directives )

    4. Include the file in the project and make it an Embedded resource in the Visual Studio solution.

    5. Save, build and reload the site.

    6. Open the widget designer for Hawksearch results widget on the designated page and select the newly created template from the select list . Save and publish the page. Configuring Hawksearch results widget

  • Extending result item component to include a field from the response object

    1. Navigate to the directory of the current active widget template (e.g. Mvc\Views\Hawksearch\Hawksearch.Default.cshtml or the relevant resource package).

    2. Copy the file of the base template and name it accordingly (Hawksearch.SearchResponseFieldItem.cshtml for example).

    3. Edit the file adding or replacing the template override for result item:

      Code Block
      <script id="vue-hawksearch-result-item" type="x-template">
          <div>
              <div><h3>{{ getField('title') }}</h3></div>
              <div>{{ getField('content') }}</div>
      		<input type="hidden" :value="getResponseField('TrackingId'
      Hawksearch results' Widget
      )">
          </div>
      </script>

      Note, that there is an input with a specific method invoked. Using getResponseField(), the value of the TrackingId field is passed to an element placed inside the component. The method takes the field name as a parameter. In this case, it is on the top level of the response object:

      Code Block
      {
          "Facets": [
              ...
          ],
          "VisitorTargets": [
              {
                  "Id": 9356,
                  "Name": "International"
              },
              {
                  "Id": 10187,
                  "Name": "awe"
              }
          ],
          "TrackingId": "87ac0720-a61c-4ba7-93d6-77835c60e67c",
          "Success": true,
          "Pagination": {
      		...
          },
          "Keyword": "",
          "Results": [
      		...
          ],
          "Selections": {},
          "Sorting": {
      		...
          },
          "Redirect": {},
          "Merchandising": {
      		...
          },
          "FeaturedItems": {
              ...
          },
          "SearchDuration": 34
      }

      Deeper properties can also be accessed:

      Code Block
      <input type="hidden" :value="getResponseField('VisitorTargets.0.Name')">

    4. Include the file in the project and make it an Embedded resource in the Visual Studio solution.

    5. Save, build and reload the site.

    6. Open the widget designer for Hawksearch results widget on the designated page and select the newly created template from the select list . Save and publish the page. Configuring Hawksearch results widget

General info

Note

Vue.js requires all component templates to have a single root element. Note that all the examples are placed in a single <div>

...