Options
Fast Simon AC support customization options via JS variable object __fast_options.
Available Options
| Option | Description | Type | Default | Example |
|---|---|---|---|---|
| "with_product_attributes" | Include product attributes in results | boolean | false | true |
| "with_product_variants" | Include product variants in results | boolean | false | true |
| "max_ac_products_mobile" | Max products on mobile | number | 5 | false |
| "max_ac_products_tablet" | Max products on tablet | number | 5 | false |
| "max_ac_products_desktop" | Max products on desktop | number | 5 | false |
| "display_popular_on_empty_term" | Show popular results when the input is empty | boolean | true | false |
| "display_popular_on_no_results" | Show popular results when no matches are found | boolean | false | true |
| "mobileMedieaQuery" | Set mobile breakpoint | {maxWidth: number} | {maxWidth: 767} | {maxWidth: 600} |
| "tabletMedieaQuery" | Set tablet breakpoint | {minWidth: number, maxWidth: number} | {minWidth: 768, maxWidth: 1024} | {minWidth: 600, maxWidth: 999} |
| "desktopMedieaQuery" | Set desktop breakpoint | {minWidth: number} | {minWidth: 1025} | {minWidth: 1000} |
| "full_spa" | Enable for Single Page Applications (SPA) | boolean | false | true |
| "forceOpenAlways" | Keep autocomplete open at all times | boolean | false | true |
| "is_chatbot" | Enable chatbot mode | boolean | false | true |
| "fs_avoid_inject_on_interaction" | Inject AC script immediately (Shopify use case) | boolean | false | true |
| "disable_ac_shadow_root" | Disable Shadow DOM in autocomplete rendering | boolean | false | true |
| "parseAcProductTitle" | Custom function for parsing product titles | (title:string, productData?:productData)=>string | undefined | See examples below |
| "parseAcProductPrice" | Custom function for parsing product prices | (price:string, productData?:productData)=>string | undefined | See examples below |
| "parseAcProductCompare" | Custom function for parsing compare-at prices | (compare:string, productData?:productData)=>string | undefined | See examples below |
| "avoid_bigcommerce_jwt_logged_on_user_check" | Avoid checking JWT token for logged-in BigCommerce users | boolean | false | true |
How to add custom options:
Add the __fast_options variable to your HTML head within a script tag, for example:
<script>
var __fast_options = __fast_options || {};
__fast_options.max_ac_products_desktop = 5;
__fast_options.max_ac_products_tablet = 3;
__fast_options.max_ac_products_mobile = 2;
__fast_options.with_product_attributes = true;
__fast_options.parseAcProductTitle=(title)=>{
return title.replaceAll(" ",",");
};
</script>
Parse Functions with Product Data (Enhanced)
The parse functions (parseAcProductTitle, parseAcProductPrice, parseAcProductCompare) now accept an optional second parameter productData that contains the complete product object. This allows for more sophisticated customization based on product attributes.
Basic Examples (Backward Compatible)
// Simple title transformation - only using first parameter
__fast_options.parseAcProductTitle = function(title) {
return title.toUpperCase();
};
// Simple price formatting - only using first parameter
__fast_options.parseAcProductPrice = function(price) {
return "$" + price;
};
Advanced Examples with Product Data
// Add SKU to price display
__fast_options.parseAcProductPrice = function(price, productData) {
if (productData && productData.sku) {
return price + " (SKU: " + productData.sku + ")";
}
return "$" + price;
};
// Add vendor/brand to product title
__fast_options.parseAcProductTitle = function(title, productData) {
if (productData && productData.v) {
return title + " by " + productData.v;
}
return title;
};
// Enhanced compare price with discount percentage
__fast_options.parseAcProductCompare = function(comparePrice, productData) {
if (!comparePrice) return "";
if (productData && productData.p) {
// Calculate discount percentage
var discount = Math.round((1 - (parseFloat(productData.p) / parseFloat(comparePrice))) * 100);
if (discount > 0) {
return "Was: " + comparePrice + " (Save " + discount + "%)";
}
}
return "Was: " + comparePrice;
};
Available Product Data Fields
The productData parameter contains the following fields:
| Field | Description | Type | Example |
|---|---|---|---|
id | Product ID | string | "prod_123" |
sku | Product SKU | string | "SKU-001" |
l | Product label/title | string | "Blue T-Shirt" |
p | Current price | string | "29.99" |
p_c | Compare/original price | string | "39.99" |
p_min | Minimum price (variants) | string | "25.99" |
p_max | Maximum price (variants) | string | "35.99" |
c | Currency | string | "USD" |
d | Description | string | "Comfortable cotton..." |
v | Vendor/brand | string | "Nike" |
t | Primary thumbnail URL | string | "https://..." |
u | Product URL | string | "/products/blue-tshirt" |
iso | Is on sale | boolean | true |
review | Average review rating | number | 4.5 |
reviews_count | Number of reviews | number | 125 |
Important Notes
Backward Compatibility: The
productDataparameter is optional. Existing implementations will continue to work.Null Safety: Always check if
productDataexists before accessing its properties:if (productData && productData.sku) {
// Safe to use productData.sku
}Performance: These functions are called for each product, so keep them efficient.
Use Cases
- B2B Stores: Display SKU prominently for business customers
- Multi-Brand Stores: Show vendor/brand in product titles
- Sale Promotions: Calculate and display discount percentages
- Custom Badges: Add "New", "Sale", or "Limited" badges based on product data
- Review Integration: Show ratings or review counts in autocomplete