Hi Team,
I get these errors on this assessment:
- Set the card type for the Menu Items vertical
- Update the subtitle on the menu item card
This is my code:
{
“verticalKey”: “menu_items”, // The vertical key from your search configuration
“pageTitle”: “Menu Item Search”, // !!!REPLACE THIS VALUE!!! The contents of the title tag and meta open graph tag for title
// “metaDescription”: “”, // The meta tag for open graph description
// “canonicalUrl”: “”, // The link tag for canonical URL as well as the meta tag for open graph url
// “keywords”: “”, // The meta tag for keywords
“pageSettings”: {
“search”: {
“verticalKey”: “menu_items”, // The vertical key from your search configuration
“defaultInitialSearch”: “” // Enter a default search term
}
},
“componentSettings”: {
/**
“QASubmission”: {
“entityId”: “”, // Set the ID of the entity to use for Q&A submissions, must be of entity type “Organization”
“privacyPolicyUrl”: “” // The fully qualified URL to the privacy policy
},
/
/
“Facets”: {
“expand”: false, // Allow the user to expand and collapse the facets
“showMore”: false, // Display a link to see more facet options within a facet
“searchOnChange”: true // Will automatically run a search as facets are selected or unselected. Set to false to only trigger updates with an Apply button.
// Additional options are available in the documentation
},
/
/
“FilterLink”: {
“changeFiltersText”: “sorts and filters”, // Text that displays by default
“resetFiltersText”: “reset filters”, // Text when filters are applied
“clearSearchText”: “clear search” // Text when there are no results, conducts an empty search
},
**/
“AppliedFilters”: {
“removable”: true
},
“VerticalResults”: {
“noResults”: {
“displayAllResults”: true // Optional, whether to display all results in the vertical when no results are found.
},
“hideResultsHeader”: true
},
“SearchBar”: {
“placeholderText”: “Search”, // The placeholder text in the answers search bar
“allowEmptySearch”: true, // Allows users to submit an empty search in the searchbar
“loadingIndicator”: {
“display”: true //Optional, whether to include a loading indicator on seachbar
// “iconUrl”: “” //Optional, use custom icon url instead of the default loading indicator animation
},
“voiceSearch”: {
“enabled”: false // Whether or not voice search is enabled
// “customMicIconUrl”: “”, // Path to override the voice start icon
// “customListeningIconUrl”: “” // Path to override the voice stop icon
}
},
“Pagination”: {
“noResults”: {
“visible”: true
}
}
},
// Configuration used to define the look and feel of the vertical, both on this page and, by default,
// on the universal page.
“verticalsToConfig”: {
“menu_items”: { // The vertical key from your search configuration
// “label”: “”, // The name of the vertical in the section header and the navigation bar
// “verticalLimit”: 15, // The result count limit for vertical search
“universalLimit”: 3, // The result count limit for universal search
“cardType”: “product-prominentimage”, // The name of the card to use - e.g. accordion, location, customcard
// “icon”: “star”, // The icon to use on the card for this vertical
“universalSectionTemplate”: “grid-two-columns”
}
}
}
#2
{{> cards/card_component componentName=‘menu-item’ }}
class menu_itemCardComponent extends BaseCard[‘menu-item’] {
constructor(config = {}, systemConfig = {}) {
super(config, systemConfig);
}
/**
- This returns an object that will be called
card
- in the template. Put all mapping logic here.
- @param profile profile of the entity in the card
*/
dataForRender(profile) {
let imageUrl = ‘’;
let alternateText = ‘’;
if (profile.photoGallery && profile.photoGallery[0]) {
imageUrl = Formatter.image(profile.photoGallery[0]).url;
alternateText = Formatter.image(profile.photoGallery[0]).alternateText;
}
const linkTarget = AnswersExperience.runtimeConfig.get(‘linkTarget’) || ‘_top’;
return {
title: profile.name, // The header text of the card
url: profile.landingPageUrl, // If the card title is a clickable link, set URL here
target: linkTarget, // If the title's URL should open in a new tab, etc.
titleEventOptions: this.addDefaultEventOptions(),
subtitle: profile.c_calories + 'calories', // The sub-header text of the card
image: profile.primaryPhoto.image.url, // The URL of the image to display on the card
altText: alternateText, // The alternate text for the image
details: profile.description, // The text in the body of the card
// tag: profile.stockStatus ? profile.stockStatus : '', // The tag text for the card
// If the card's details are longer than a certain character count, you can truncate the
// text. A toggle will be supplied that can show or hide the truncated text.
showMoreDetails: {
showMoreLimit: 250,
// truncatedDetails: profile.richTextDescription ? ANSWERS.formatRichText(profile.richTextDescription, 'richTextDescription', linkTarget, 350) : null, // The truncated rich text
// showMoreText: 'Show more', // Label when toggle will show truncated text
// showLessText: 'Show less' // Label when toggle will hide truncated text
// },
// The primary CTA of the card
CTA1: {
label: 'Order Now', // The CTA's label
iconName: 'chevron', // The icon to use for the CTA
url: landingPageUrl, // The URL a user will be directed to when clicking
target: linkTarget, // Where the new URL will be opened
eventType: 'CTA_CLICK', // Type of Analytics event fired when clicking the CTA
eventOptions: this.addDefaultEventOptions(),
// ariaLabel: '', // Accessible text providing a descriptive label for the CTA
},
// The secondary CTA of the card
CTA2: {
label: profile.c_secondaryCTA ? profile.c_secondaryCTA.label : null,
iconName: 'chevron',
url: Formatter.generateCTAFieldTypeLink(profile.c_secondaryCTA),
target: linkTarget,
eventType: 'CTA_CLICK',
eventOptions: this.addDefaultEventOptions(),
// ariaLabel: '',
},
feedback: false, // Shows thumbs up/down buttons to provide feedback on the result card
feedbackTextOnSubmission: 'Thanks!', // Text to display after a thumbs up/down is clicked
positiveFeedbackSrText: 'This answered my question', // Screen reader only text for thumbs-up
negativeFeedbackSrText: 'This did not answer my question' // Screen reader only text for thumbs-down
};
}
/**
- The template to render
- @returns {string}
- @override
*/
static defaultTemplateName (config) {
return ‘cards/menu-item’;
}
}
ANSWERS.registerTemplate(
‘cards/menu-item’,
{{{stringifyPartial (read ‘cards/menu-item/template’) }}}
);
ANSWERS.registerComponentType(menu_itemCardComponent);
I tried using Menuoverride as the cardtype but still have trouble getting this right could you provide some feedback please?
ID: 3254091
Thank you in advance,