Name Of Quality

Like our Facebook Fan Page & Get Updates and News!

Blog

Magento 2 Ajax Pagination A Complete Guide

Magento 2 Ajax Pagination: A Complete Guide

Introduction

Magento 2 is a powerful and flexible eCommerce platform that provides various customization options to enhance user experience. One essential feature for improving site navigation and performance is Ajax pagination. Traditional pagination requires full-page reloads, which can slow down the browsing experience. Ajax pagination eliminates this issue by dynamically loading new content without refreshing the page.

In this article, we will explore magento 2 ajax pagination, its benefits, implementation steps, and how it enhances user experience.

What is Ajax Pagination?

Ajax pagination is a method that loads paginated content asynchronously using JavaScript and AJAX (Asynchronous JavaScript and XML). Unlike traditional pagination, where clicking a new page link triggers a full page reload, Ajax pagination fetches only the required content, reducing load time and improving user engagement.

Benefits of Magento 2 Ajax Pagination

Implementing Ajax pagination in Magento 2 offers several advantages:

  1. Enhanced User Experience – Users can navigate product listings seamlessly without waiting for a full page reload.
  2. Improved Performance – Reduces server load and bandwidth usage, making the website faster.
  3. SEO-Friendly – Can be implemented in an SEO-compliant manner to ensure search engines index all pages correctly.
  4. Higher Conversion Rates – Smooth browsing and faster product discovery lead to better user engagement and sales.
  5. Mobile Optimization – Works well for mobile users by providing a responsive and fluid experience.

How to Implement Ajax Pagination in Magento 2

To integrate Ajax pagination in Magento 2, follow these steps:

Step 1: Create a Custom Module

First, create a custom module in Magento 2 to enable Ajax-based pagination. This involves setting up a new module directory structure:

app/code/Vendor/AjaxPagination/

Inside this directory, create necessary subdirectories:

app/code/Vendor/AjaxPagination/

├── etc/

├── Controller/

├── view/

├── registration.php

├── composer.json

├── module.xml

Step 2: Define the Module Configuration

Create a module.xml file inside the etc/ folder:

<?xml version=”1.0″?>

<config xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:noNamespaceSchemaLocation=”urn:magento:framework:Module/etc/module.xsd”>

<module name=”Vendor_AjaxPagination” setup_version=”1.0.0″/>

</config>

Also, register the module by creating a registration.php file:

<?php

\Magento\Framework\Component\ComponentRegistrar::register(

\Magento\Framework\Component\ComponentRegistrar::MODULE,

‘Vendor_AjaxPagination’,

__DIR__

);

Step 3: Create an Ajax Controller

Create an Ajax controller inside Controller/Ajax/Pagination.php:

<?php

namespace Vendor\AjaxPagination\Controller\Ajax;

use Magento\Framework\App\Action\Action;

use Magento\Framework\App\Action\Context;

use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;

use Magento\Framework\Controller\Result\JsonFactory;

class Pagination extends Action

{

protected $collectionFactory;

protected $resultJsonFactory;

public function __construct(

Context $context,

CollectionFactory $collectionFactory,

JsonFactory $resultJsonFactory

) {

parent::__construct($context);

$this->collectionFactory = $collectionFactory;

$this->resultJsonFactory = $resultJsonFactory;

}

public function execute()

{

$page = (int) $this->getRequest()->getParam(‘page’, 1);

$pageSize = 10;

$collection = $this->collectionFactory->create();

$collection->setPageSize($pageSize)->setCurPage($page);

$data = [];

foreach ($collection as $product) {

$data[] = [

‘id’ => $product->getId(),

‘name’ => $product->getName(),

‘price’ => $product->getPrice(),

];

}

return $this->resultJsonFactory->create()->setData($data);

}

}

Step 4: Create JavaScript for Ajax Pagination

Create an ajax-pagination.js file inside view/frontend/web/js/:

require([“jquery”], function($) {

$(document).ready(function() {

$(“.pagination a”).on(“click”, function(e) {

e.preventDefault();

var page = $(this).data(“page”);

$.ajax({

url: “/ajaxpagination/ajax/pagination”,

type: “GET”,

data: { page: page },

success: function(response) {

$(“#product-list”).html(“”);

$.each(response, function(index, product) {

$(“#product-list”).append(“<div>” + product.name + ” – ” + product.price + “</div>”);

});

}

});

});

});

});

Step 5: Update Layout XML

Modify view/frontend/layout/catalog_category_view.xml to add the pagination block:

<referenceContainer name=”content”>

<block class=”Vendor\AjaxPagination\Block\Pagination” name=”ajax.pagination” template=”Vendor_AjaxPagination::pagination.phtml”/>

</referenceContainer>

Step 6: Deploy and Test

Run the following Magento CLI commands to deploy the module:

bin/magento setup:upgrade

bin/magento cache:flush

bin/magento setup:static-content:deploy

Then, navigate to your category page and test the Ajax pagination.

Conclusion

Magento 2 Ajax pagination significantly enhances the shopping experience by allowing users to browse products seamlessly. By implementing Ajax pagination, you can improve performance, reduce server load, and increase conversion rates. Following the steps outlined above, you can integrate Ajax pagination into your Magento 2 store and provide a better user experience.

For further optimization, consider lazy loading, infinite scrolling, or customizing pagination styles to align with your store’s design. If you need additional Magento 2 development services, consult a professional developer for advanced customization.

Leave a Comment

Scroll to Top