HomeWiki
HomeWiki
  1. Components
  • Back to home
  • 1. Themes
  • 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
  • Vs Code
    • Getting Started
  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.
Previous
Register
Next
Search
Built with