Home
Wiki
Home
Wiki
  1. Components
  • Back to home
  • 1. Themes
  • Vs Code
    • Getting Started
  • Kitchenware
    • Layout
      • New Layout
      • Legacy Layout
    • Components
      • Announcement
      • Banner Carousel
      • Banner With Products Carousel
      • Blog Category List
      • Blog List
      • Brand List
      • Brands Carousel
      • Breadcrumb
      • Call To Action
      • Cart
      • Categories List
      • Change Password
      • Checkout
      • Cookie Manager
      • Filter list
      • Footer
      • Forgot Password
      • Form
      • Hero Carousel
      • Icon Block
      • Invitation
      • Last Visited Products
      • Layout
      • Login
      • Map
      • Nav Bar
      • Offer
      • Product Attachments
      • Product Attributes
      • Product Documentation
      • Product Expected
      • Product Modal
      • Products Block
      • Products Carousel
      • Product Single
      • Profile
      • Quote
      • Register
      • Related Products
      • Search
      • Stores
      • Subscribe Newsletter
      • Text with Image
      • Top Bar
      • Video
    • Reusables
      • Getting Started
    • Assets
      • Getting Started
    • SDK
      • Products
        • _findProductsByCategory
        • _findProductsByIds
        • _findProductsByTitle
        • _findProductsByFilter
        • _findProductsByCriteria
        • _findProductsAndCalculate
        • _findProductsThenCalculate
        • _getProductAttributeSet
        • _setLastVisited
      • Categories
        • _findCategoryTreeById
        • _findCategoriesByIds
        • _findCategoryByAlias
        • _findCategoryTreeByAlias
        • _getCategoryContent
      • Collections
        • _getCollectionContent
        • _findCollectionsByIds
        • _findCollectionsByIdsThenCalculate
      • Brands
        • _getBrandContent
        • _findBrandsByIds
      • Cart
        • _addToCartMulti
        • _addToCart
        • _setCart
        • _clearCart
        • _setCartListener
        • _removeFromCart
        • _calculateCart
      • Checkout
        • _startCheckout
        • _updateCheckout
        • _completeCheckout
      • Shopping Lists
        • _getShoppingLists
        • _updateShoppingList
        • _createShoppingList
        • _deleteShoppingList
        • _getShoppingListByAlias
      • Navigation
        • _getFooterMenu
        • _getHeaderMenu
      • Users
        • _getUserById
      • Utils
        • _calculateCurrency
        • _getCurrencySymbol
        • _getCulture
        • _subscribeToNewsletter
        • _findUnitsByIds
  • Noir
  1. Components

Related Products

Related Products Component Documentation#

Overview#

The RelatedProducts component is a component designed to display a carousel of related products. This component allows users to view and interact with a list of products that are related to a specific item, enhancing the shopping experience by showcasing additional options. It includes functionalities for handling product data, displaying products in a carousel, and managing user interactions.

Model Documentation#

Model Structure#

The RelatedProducts component relies on a data model that includes:
componentId: The unique ID for the component.
carouselId: The ID for the carousel element, derived from componentId.
filter: A filter string used to fetch products based on criteria.
defaultVariant: The default product variant used in related product queries.
relatedProducts: An array of related product objects.
hasRelatedProducts: A boolean indicating whether there are related products to display.
flag: A boolean flag for carousel initialization control.
lists: Additional list-related data (not used in the current implementation).
isUserLoggedIn: A boolean indicating whether the user is logged in.
loadingKey: A key used to track loading states for adding products to the cart.

Example Model#

Here's a sample model configuration:

Component Structure#

The RelatedProducts component consists of the following parts:
1.
HTML Template: Defines the structure of the related products section and carousel.
2.
JavaScript: Contains logic for fetching products, managing state, and handling user interactions.
3.
Methods: Includes functionality for adding products to the cart, initializing the carousel, and processing product data.
4.
Lifecycle Hooks: Handles component initialization and updates.
5.
Computed Properties: (Not utilized in this component but reserved for future enhancements.)

HTML Template#

The HTML template defines the layout of the related products section. It includes:
Section Container: A container with conditional classes and ID for the component.
Header: Displays the section header if provided.
Carousel: A carousel element for displaying related products.
Product List Items: Iterates over relatedProducts to render each product using the productlistitem component.
Here's the relevant part of the HTML template:

JavaScript#

The JavaScript section contains the logic for the RelatedProducts component. It includes:
Data Properties: Define initial values and states for the component.
Methods:
addToCart(product, i): Adds a product to the cart and handles loading state.
isLoading(i): Checks if a specific product is in the loading state.
calculateCurrency(price): Formats the product price.
hasDiscount(price, initialPrice): Determines if a product has a discount.
getImageLink(imageLink): Returns the product image link or a placeholder if not available.
carouselInitialization(): Initializes the carousel with custom options.
getAlignmentClass(alignment): Returns alignment classes based on the provided alignment value.
fetchRelatedProducts(): Fetches related products based on the association type.
processRelatedProducts(e): Processes and updates the list of related products.
filterAndProcessRelatedProducts(e): Filters and processes products based on specific criteria.
processProductVariants(p): Processes product variants to set initial quantities and units.
Here's the relevant JavaScript code:

Explanation#

Data Properties: Initialize the component state and track related products, loading status, and user authentication.
Methods: Handle various functionalities including adding products to the cart, calculating currency, checking for discounts, fetching related products, and initializing the carousel.
Lifecycle Hooks: mounted() to fetch related products, updated() to initialize the carousel when related products are available.
Carousel Initialization: Uses the tiny-slider library for creating a responsive carousel with various options.

Usage#

To use the RelatedProducts component, register it with your Vue application and include it in your template. Pass the necessary model data to configure the component.
Modified at 2024-08-27 10:25:08
Previous
Register
Next
Search
Built with