Quantcast
Channel: Magento 2 – DCKAP
Viewing all 135 articles
Browse latest View live

Magento 2 Open Source vs Commerce vs Commerce Cloud

$
0
0
Magento 2 Open Source vs Commerce vs Commerce Cloud

If you are struggling to get rid of the roller coaster ride of choosing an eCommerce platform for your online store, and if you’re having Magento 2 in mind, then you have come to the right place. We are going to help you find out if Magento 2 is the right choice for you, along with helping you overcome another major hurdle of choosing the right Magento 2 edition for your business.

Why Magento 2?

Magento 2 is an eCommerce platform that has improved performance and scalability. It has advanced the checkout process, which makes it easy for people to buy from you. It is mobile friendly, which means your customers can access your website on mobile devices. It is easy to upgrade, so your ecommerce store will always stay secured and upgraded with new features, and it has a lot of key integrations (extensions) that you can use to boost your eCommerce conversions.

In a checkout scalability Stress Test Magento 2 with php 7 performs 135K orders/hr compared to the other Magento 2 with php 5.6 or M1.

Why should you migrate from M1 to M2?

Many store owners and developers keep wondering what impact this new codebase will have on both website performance and implementing custom functionality with Magento 2.

The list of features available in Magento 2 are as follows:

Enhanced Performance:

1. Load Time

Magento 2 loads faster from the server. With the help of PHP7 and MySQL5.6 Magento 2 produces a faster page load using caching mechanisms, better query processing, and re-indexing (which is a process that Magento uses to ensure product data, inventory, and that the URLs are up to date after updating the products, attributes or any other part of the catalogue). The re-index system for Magento 2 is much more efficient and will have a lesser impact on website performance. Due to the faster load time, the rate of abandoned carts has been decreased.

2. Cache

Magento 2 uses Varnish cache and HTTP accelerator, which can easily cache requests. Because of this, more than one admin users can edit the eCommerce product information without any data conflict.

3. Efficient Checkout Process

Magento 2 has a two-step checkout process which improves the customer experience. It also helps in speeding up the user registration process.

Improved Admin Interface:

1. CMS Content Interface

The Content Interface has the efficiency to create content pages and CMS blocks, along with managing the style of all the pages, hence providing you with more options for content creation.

2. Admin Menu Navigation

The Menu Navigation in Magento 2 admin is more productive to use and  categorize logically. It helps the Admin and Store Managers to organize with much ease.

B2B Module

The B2B Module consists of a bunch of features in one such as:

  • Quoting
  • Company Accounts
  • Credit Lines
  • Requisition Lists
  • One to One Pricing / Shared Catalog
  • Quick Order

Content Staging and Scheduling

Content staging and scheduling are one of the most useful features in Magento 2 Commerce. It helps in changing content on the fly, where you can edit your content such as pages, products, etc., view your content changes to make sure if its correct, and schedule it to go live. This is extremely useful for promotions, or other changes you may want to make in your content. You can avoid the risk of changing content and running into issues on how it looks.

Planning to migrate to Magento 2

Our Magento-certified experts come up with best-in-class solutions to improve conversions, increase sales and also provide a great user experience.

Get In Touch

The Difference Between M1 and M2

Options M1 M2
Checkout M1 has a 6-step checkout process. Which is very hard for the user to complete the order. M2 has a 2-step checkout process which is easier for customers. Minimizes the abandoned carts. Improved Product Page/Creation Interface.
Admin Interface The interface is more confusing and hard for users. The interface is more user-friendly and easily navigable with improved customer user experience.
Load Time M1 speed is a concern for most of the customers. Speed will also impact the sales conversion. M2 site pages are more optimized which helps the site to load faster.
Mobile Friendly M1 isn’t mobile-friendly M2 is mobile-friendly, supported across all the devices and browsers.

 

The options available in Magento 2

Magento 2 has three different options:

    1. Magento Open Source:

  • The Free version can be downloaded and hosted on our own server.
  • Only limited features will be available.
  • It is useful for small scale and startup companies.

    2. Magento Commerce:

  • It is a Paid version with enhanced features, along with 24/7 email support.
  • It can be hosted on our own server.
  • It is useful for B2B businesses and websites which have high traffic.

    3. Adobe Commerce Cloud:

Adobe Commerce Cloud, formerly known as the Enterprise Cloud/Magento Commerce Cloud, is an automated hosting platform for Magento, specifically created for Cloud infrastructures. This option combines Magento Commerce and Cloud infrastructure hosting with a few differences and some added features, including Git integration and key environments for development, staging, and live production.

  • It is useful for large companies and websites with complex features.

M2 Open source vs M2 Commerce vs Adobe Commerce Cloud

 

S.No Features Magento 2 Open Source (Community) Magento 2 Commerce Adobe Commerce Cloud
1 Basic Catalog/Category Management Yes Yes Yes
2 Payment Methods – Paypal, Zero Subtotal, Bank Transfer, COD, PO, Authorize.net, Cheque/Money Order Yes Yes Yes
3 Shipping Methods – Flat rate, Table rate, Free shipping, UPS, USPS, FedEx, DHL Yes Yes Yes
4 Code Level Access Available Available Available
5 REST and SOAP APIs support Available Available Available
6 Multilanguage and country Support Yes Yes Yes
7 Up-sell, Cross-sell and Related products Yes Yes Yes
8 SEO Yes Yes Yes
10 Responsive theme Yes Yes Yes
11 Install of extensions Yes Yes Yes
12 Admin Intuitive Intuitive Intuitive
13 Streamlined checkout (2 Step) Yes Yes Yes
14 Advanced SEO (Like Rich Snippets) Yes Yes Yes
15 Enhanced Security updates No Yes Yes
16 Technical Support No Yes Yes
17 Advanced customer segmentation and targeting No Yes Yes
18 Powerful security features like tokenization No Yes Yes
19 Archive Orders No Yes Yes
20 Create Returns (RMA) No Yes Yes
21 Customer Segments (create groups dynamically based on attributes like DOB, Gender, date, group, store credit, address, email etc) No Yes Yes
22 Related Product Rules (Create product rules based on related attribute set, category, price) No Yes Yes
23 Gift Card Accounts No Yes Yes
24 Private Sales and Events No Yes Yes
25 Email Reminders(For abandoned cart, wish lists) No Yes Yes
26 Admin Action Logs No Yes Yes
27 Attributes( Change/add custom attributes for Customer, Customer address, returns) No Yes Yes
28 CMS Page Heirarchy No Yes Yes
29 Banners(Which can be displayed based on promo, customer groups) No Yes Yes
30 Categrory Permissions No Yes Yes
31 Performance Good Optimized Optimized
32 Reports Beginner Advanced Advanced
33 Shared Database(For better scalability) Not available Available Available
34 Instant Purchase No Yes Yes
35 Content Staging and Preview No Yes Yes
36 Visual Merchandising No Yes Yes
37 Multiple Buyers per account(B2B structure with roles and permissions for each buyer within a company account) No Yes Yes
38 Quick Order Form No Yes Yes
39 Rewards Program No Yes Yes
40 Request a quote and negotiate quotes No Yes Yes
41 Payment on Account(Buy with credit) No Yes Yes
42 Shared Catalog No Yes Yes
43 Provision for Temando Integration(For unified Shipping) No Yes Yes
44 Provision for Signifyd Fraud Protection No Yes Yes
45 Additional payment methods – Cybersource, Worldpay, eWAY No Yes Yes
46 APIs for B2B No Yes Yes
47 Magento BI Pro integration No Yes Yes
48 ECE-TOOLS Package No No Yes
49 Simplified Build deployment process No No Yes
50 Performance Boost No No Yes
51 Free Image Optimization to Increase the page speed No No Yes
52 Keeping up with PCI compliance No No Yes
53 Manage Users to Access Environments No No Yes
54 Sync code between Staging and Production No No Yes
55 Multiple Repos and Environment No No Yes

To conclude, we would like you to choose the Magento 2 edition that’s best for your business. No matter what edition you choose, we hope that you’ll love the versatility of Magento 2.

Hope the article provided you with the guidance of getting what you were looking for, feel free to get back to us if you have any queries.


The Advantage of DCKAP’s Stock Notification Extension

$
0
0
Featured_StockExtensionBlog

Enriching the Purchase Experience

Have you ever experienced the disappointment of finding out that your favorite product is sold out, especially when you needed it the most? When it comes to your customers, this situation means more than just a passing disappointment, it means a loss of important business and perhaps even your customer’s loyalty. Without a way of knowing when the product will be back in stock, customers are more likely to shop somewhere else.

If you’ve ever been in this type of situation, then you’ll understand how invaluable a feature like stock notifications can be. At DCKAP, we offer an expedient extension to handle this very thing. Our ‘Stock Notification’ extension makes it easy for your customers to subscribe to notification emails with a direct link to your product page, so they can immediately make a purchase when the product is up for sale again.

 


Visit DCKAP’s Magento 2 Extension Store

StockNotificationGraphic


 

When customers shop online, they likely do so for the convenience above all else. Customers appreciate it when their favorite items are easily available and regularly in stock. Inventory is one of the most important aspects of your online store, and making sure that customers have a convenient way to replenish their products is just as important. This is where ‘Stock Notification’ comes in.

StockNotificationScreenshot

When an item in your store is out of stock, the extension allows the customer to enter their email address for direct notification when the inventory becomes available again. They will be notified as soon as the item is replenished and they can order it immediately, simplifying the entire shopping experience.

 

Looking for Ways to Improve the Customer Experience?

We build highly optimized Magento extensions that are scalable, easy to integrate, and more importantly provide better ROI for retailers.

Get In Touch

 

BottleStoreLogo

BottleStore.com has the largest inventory of wholesale and bulk containers for every industry. They showcase the largest assortment of glass, plastic, and metal containers online. With this status comes a lot of customer traffic. Therefore, their inventory is vital to a positive customer experience. They put their trust in the ‘Stock Notification’ extension to help bridge the gap between inventory and customer satisfaction.

Online stores like BottleStore.com continue to see the benefit of using ‘Stock Notification’ on their product pages. Positive reviews like the one below show the kind of difference DCKAP’s extension can make for the customer experience.

BottleStoreReview

 

BottleStore has a long history of satisfying customers in the packaging industry, as part of the O.Berk company which was founded in 1910. Whether it be bottles, spice containers, candle jars, or essential oil bottles, the products on BottleStore.com are priced competitively to fit every budget. Visit them online to find affordable packaging containers for every kind of need.

 

DCKAP strives to enrich the purchasing experience no matter the product. Reach out to our team at the DCKAP Store for more information and to find out what this extension can mean for the success of your Magento online store.

 

Magento 2: Import a category with its subcategories programmatically

$
0
0
Magento 2 categories with subcategories

Categories are essential for creating an efficient catalog and customer navigation so that users can easily find the products they want on your website.

Each product should be assigned to at least one category. Categories are a helpful way to sort and arrange your products. The diagram below represents the structure of the category.

Magento 2 categories with subcategories

The Magento 2 Import/Export function is one of the best resolutions for all stores to simplify numerous tasks in the manual back-end. These features become more essential and useful for Magento merchants.

Does Default Magento 2 Open Source Support Import Categories?

The answer is definitely, no. In default Magento 2, the admin creates categories one by one, complete with the related data in each category. In the case of migrating to Magento 2, or when updating or moving to a new website, manually creating categories would be such a time-consuming work that not every business would tolerate it.

The below script helps you to import each category with its subcategories simultaneously without the compulsory need of the parent category ID. Instead of that, we can use the parent category name.

Create a custom module as shown in the file structure below.

Note: Please take a backup of your data and check with your technical developer before running the code.

Magento 2 categories with subcategories

Step 1: Create 

app/code/DCKAP/CategoryImport/view/frontend/layout/categoryimport_index_index.xml

 


	
		
			
			
				
			
		
	

 

Step 2: Create a form to import a CSV.

app/code/DCKAP/CategoryImport/view/frontend/templates/categoryimport.phtml

 

<div class="import-category">

CSV File:

 

Step 3: Create a controller to read and import the CSV.

app/code/DCKAP/CategoryImport/Controller/Index/Index.php

 

_pageFactory = $pageFactory;
		$this->_categoryFactory = $categoryFactory;
		$this->_category = $category;
		$this->_repository = $repository;
		$this->csv = $csv;
		return parent::__construct($context);
	}

	public function execute(){
		$post = $this->getRequest()->getFiles();
		if($post){
			if(isset($post['file_upload']['tmp_name'])) {
				$arrResult = $this->csv->getData($post['file_upload']['tmp_name']);
				foreach ($arrResult as $key => $value) {
					if ($key > 0){ // to skip the 1st row i.e title
					$parentid =2;
						if(is_string($value[1])){
							$categoryTitle = $value[1];// Category Name
							$collection = $this->_categoryFactory->create()->getCollection()->addFieldToFilter('name', ['in' => $categoryTitle]);
							if ($collection->getSize()) {
								$parentid = $collection->getFirstItem()->getId();
							}
						}else if(is_int(($value[1])))
					$parentid = $value[1];
					//echo $parentid."
";//For reference $data = [ "data" => [ "parent_id" => $parentid, "name" => $value[2], "is_active" => true, "position" => 10, "include_in_menu" => true, ] ]; $checkCategory = $this->_categoryFactory->create()->getCollection()->addFieldToFilter('name', ['in' => $value[2]])->addFieldToFilter('parent_id', ['in' => $parentid]); if(!$checkCategory->getData()){ $category = $this->_categoryFactory->create($data); $result = $this->_repository->save($category); } } $this->messageManager->addSuccessMessage('Category Imported Successfully'); } } } $this->_view->loadLayout(); $this->_view->renderLayout(); } }

 

Run this module:

http://localhost/magento/categoryimport/

Magento 2 categories with subcategories

The CSV format must be as shown below.

Click here to get a sample CSV.

In this CSV, your header will be what you want and the first column should be a serial number. The second column must be either a parent/root category ID or name, and the third column must be the name of the category.

 

************************ Import CSV File ************************

Sample CSV Format

S.No Parent Category ID/Name Category
1 2 Mobile
2 Mobile Samsung
3 Mobile Oppo
4 Mobile Vivo
5 Samsung Samsung J Pro
6 Samsung Samsung a 10
7 Oppo Oppo Youth
8 Oppo Oppo k1
9 Vivo Vivo v5 plus
10 Vivo Vivo v9

Magento 2 categories with subcategories

And finally, you can now simultaneously import each category with its subcategories. If you found this blog helpful, then please do let us know if you have any queries.

Magento 2: Elasticsearch Configuration

$
0
0
Elasticsearch

Nowadays, most of us have heard about the word Elasticsearch, but not everyone thoroughly understands – What it is and what does it do? And, how might you benefit from it?

We’ve got an answer for you, right here in this blog. It is comprehensive, yet easy for almost anyone to read. 

What Is Elasticsearch?

Elasticsearch is a powerful open-source database that stores, retrieves, and manages document-oriented and semi-structured data. Like MongoDB, ElasticSearch is also a Document-based NoSQL Data Store. Basically, the Elasticsearch helps to store and map all documents effectively in order to optimize the search and retrieval function. The ease of use, powerful features, and scalability has led to its popularity.

Elasticsearch uses HTTP methods (GET, POST, PUT, DELETE, etc.) in combination with HTTP URI to manipulate the data. The intuitive RESTful approach is both developer-friendly and user-friendly, which is one of the reasons for Elasticsearch’s popularity.

What does it do?

Using the API, we can send data in the form of JSON documents to Elasticsearch, where it automatically stores the original document and adds a searchable reference to the document in the cluster’s index. We can then search and retrieve the document using the Elasticsearch API. 

We can relate Elastic Search with RDBMS as the following

RDBMS Elastic Search
Database Index
Table Type
Row Document

What are the Benefits of Elasticsearch?

  • Elasticsearch performs swift and advanced searches on products in the catalog.
  • Easy Application Development – Provides support for various languages including Java, Python, PHP, JavaScript, etc.
  • High Performance – It processes a large volume of data in parallel, quickly finding the best matches for your queries.
  • Near Real-Time Operations – Reading or writing data usually takes less than a second to complete.
  • Indexing does not impact customers until reindex is completed.
  • Supports stop words and synonyms.
  • Accurate, performant, and scalable.

Why Should We Use Elasticsearch in Magento 2?

In all eCommerce websites, including the ones built on Magento 2, the search is no doubt one of the most pivotal functionalities. An effective search helps shoppers find their needed products on the store with ease, which might result in a better customer experience and stimulated purchases. On the other hand, a poor search tool can slow down the process of looking for the items and even be the reason for high buyer bounce rates.

Therefore, it is essential to enhance the search feature in Magento 2 stores, and applying Elasticsearch is one of the best ways to do that.

How are search requests processed in Magento with Elasticsearch?

Magento Elasticsearch

  • A search request from a user is received by the Magento web server, which then forwards it to the Elasticsearch.
  • The Elasticsearch web server proxies the request to the Elasticsearch server (by default, it listens on port 9200). 

The access to Elasticsearch is further protected by HTTP Basic authentication.

For any type of request to reach Elasticsearch, it must travel over SSL and provide a valid username and password.

  • Elasticsearch processes the search request.
  • With the Elasticsearch web server acting as a secure reverse proxy, communication returns along the same route.

For more information check the following link.

https://devdocs.magento.com/guides/v2.3/config-guide/elasticsearch/es-overview.html click here for detailed information.

How to Install Elasticsearch in Ubuntu OS?

Step 1: Install OpenJDK 8

sudo apt-get update

sudo apt install openjdk-8-jdk

Verify the Java installation by running the following command which will print the Java version:

java -version

The output should look something like this:

java version “1.8.0_201”

Java(TM) SE Runtime Environment (build 1.8.0_201-b09)

Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

Step 2: Install Elasticsearch

Now that OpenJDK 8 is installed, run the below commands to add Elasticsearch GPG key by importing it.

Note: GPG is an encryption technique.Gnu Privacy Guard is an implementation of OpenPGP (Open Pretty Good Privacy). 

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

The command above should provide the output “OK”, which means that the key has been successfully imported and packages from this repository will be considered trusted.

Next, add the Elasticsearch repository to the system.

sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

Note: Change 7.x in the command above with the version you need.

Once the Elasticsearch repository is added and enabled, run the following commands to update apt package list and install Elasticsearch.

sudo apt-get update

sudo apt install elasticsearch

Elasticsearch service will not start automatically after the completion of the installation process. To start the service and enable the service, run:

sudo systemctl start elasticsearch.service

sudo systemctl enable elasticsearch.service

If you’re running a single host server and the clients are connecting from the same server, then no configuration is required. If the clients will be connecting from remote systems, then you need to allow external clients.

To do that, open the elasticsearch.yml configuration file:

sudo nano /etc/elasticsearch/elasticsearch.yml

Then search for the line that contains network.host, uncomment it, and then change the localhost to: 0.0.0.0

# Set the bind address to a specific IP (IPv4 or IPv6):

#

network.host: localhost

#

# Set a custom port for HTTP:

#

http.port: 9200

#

# For more information, consult the network module documentation.

Save the file and exit

restart elastic search

sudo systemctl restart elasticsearch.service

Note: By default, Elasticsearch listens to the 9200 port for the upcoming HTTP queries

You can verify if the Elasticsearch is running by sending the HTTP request to port 9200 on localhost with the following curl command:

curl -X GET "localhost:9200/"

(or)

By opening the http://localhost:9200/ URL in your browser.

You should see something similar to this:

{

“name” : “zdwJeew”,

“cluster_name” : “elasticsearch”,

“cluster_uuid” : “9bLHkEejTUaiJQ-fHbrtyA”,

“version” : {

“number” : “5.6.16”,

“build_hash” : “3a740d1”,

“build_date” : “2019-03-13T15:33:36.565Z”,

“build_snapshot” : false,

“lucene_version” : “6.6.1”

},

“tagline” : “You Know, for Search”

}

Congratulations, at this point you have installed Elasticsearch on your Ubuntu server.

Step 3: How to Configure Elasticsearch within Magento?

At this point, your elastic search engine is ready to process queries/requests. In order to configure elastic search in Magento, perform the following updates.

  1. Log in to the Magento Admin.
  2. Navigate to Stores > Settings > Configuration > Catalog > Catalog > Catalog Search.
  3. Based on the following figure shown from the Search Engine list, select the correct Elasticsearch version.

Ensure the following fields have the valid details:

  • Elasticsearch Server Hostname – Enter the complete qualified hostname or IP address of the machine running Elasticsearch. By default, the value will be localhost.
  • Elasticsearch Server Port – Enter the Elasticsearch web server proxy port. By default, the value will be 9200.
  • Elasticsearch Index Prefix – Enter the Elasticsearch index prefix. If you use a single Elasticsearch instance for more than one Magento installation (Staging and Production environments), you must specify a unique prefix for each installation. By default, the value will be magento2.
  • Enable Elasticsearch HTTP AuthClick Yes, only if you have enabled authentication for your Elasticsearch server. If so, provide the valid username and password in the required fields.

Step 4: Click Test Connection

         You will see either:

         Successful! Test again?

         or

        Connection failed! Test again? 

If you get a ‘connection failed!’ message, make sure the elastic server is available and the given IP Address, Port, Username, Password, and all the other details are valid.

That’s it!  Now your store is ready to provide a rich and smooth search experience to your customers!

Paymetric Iframe Implementation to Resolve PCI Compliance in Magento 2

$
0
0
PCI Compliance - Magento 2

What is PCI Compliance?

PCI Compliance upholds a set of security standards relating to the protection of card data during the time of occurrence and completion of a financial transaction.

The Payment Card Industry Data Security Standard (PCI DSS) pertains to companies of any size that accept credit card payments. If your company aims to accept card payments, along with the store, process, and transmit cardholder data, you need to host your data securely with a PCI compliant hosting provider.

A PCI compliant hosting provider should provide multiple layers of defense, along with a secure data protection model that merges physical and virtual security methods. The virtual security method includes authorization, authentication, and passwords, etc., whereas physical security includes restricted access and server, storage, and networking cabinet locks, according to Computerworld.com

PCI v3.0 – SAQ A Compliant

When implementing either of the following integration methods, the Merchant has no way to access the raw card data in support of PCI v3.0 SAQ A compliance. Either the IFrame or the entire payment page is hosted within the payment gateway center depending upon which method you choose. This method is more recommended, as it is more secure than the other method.

  • IFrame
  • Hosted

PCI v3.0 – SAQ A-EP Compliant

When implementing either of the following integration methods, while no card numbers are entered within the Merchant’s environment in support of PCI v3.0 SAQ A-EP compliance, the Merchant does have access to the raw card number through JavaScript and therefore must ensure it is not sent to the server.

  • Form Post
  • Ajax

When implementing the Form Post or Ajax integration method, the developers must ensure that they do not post nor send raw card numbers in their environment.

PCI - DSS

As an added security measure, sensitive authentication data, including card validation codes or PIN numbers, must never be stored after authorization – even if this data is encrypted.

Paymetric Payment method

A well-known payment method that prevents credit card fraud with Address Verification System (AVS) is Paymetric. There is an extension available for Magento 1, as well as Magento 2. This payment method is used to tokenize and authorize credit card data before the order is placed. Paymetric’s payment method overwrites the default credit card method to provide a payment process while in the checkout process.

Paymetric Payment Method

PCI compliance while using Paymetric

Paymetric’s payment method overwrites the default Credit Card (CC) method to tokenize and authorize service on that. The credit card form displays on the checkout page in order to obtain the credit card details from the cardholder or customer. Getting the credit card data directly from the eCommerce site and storing it into a database is PCI compliance. So what should we do to avoid this? There’s a solution provided by the Payment Card Industry Data Security Standard (PCI DSS).

Here is a tricky solution to overcome that issue:

Paymetric provides an iframe form to process credit card data and returns a token to authorize. Therefore, we need to implement this iframe form instead of a default credit card form. Using an iframe credit card form to process credit card data provides the tokenization response. We will receive that tokenized data, which will set the payment data and submit the order. With submitting the tokenized data instead of an actual credit card form, Magento will not be accepting that, so we need to change or avoid the default credit card validation by using the token data from the Paymetric method to process the authorization and payment.

For this process, we will need to follow the steps below:

  1. Create an XML with the required input fields and validation, then place it inside the helper directory or anywhere that could be accessible by the helper function in the Paymetric module. These XML files are provided by Paymetric, along with their documentation. The XML file will look something like shown below.

<iFramePacket>
		<hostUri>{{domain_url}}</hostUri>
		<cssUri>{{css url}}</cssUri>
	</iFramePacket>
	<merchantHtml>
		<htmlSection class="merchant_paycontent">
			<xiProperties error-class="xiInputError">
				<errorTooltip class="errorTooltip" show-effect="fadeIn" show-duration="5000" hide-effect="fadeOut"
			hide-duration="5000"/>
			</xiProperties>
			<cardDropdownSection>
				<tag name="div" class="card_type_xiframe right_column">
					<label for="cardType" text="Card Type"/>
					<tag name="span" class="xiframe_required">*</tag>
					<ddlCardType id="cd" default-text="Credit Card Type">
						<items></items>
					</ddlCardType>
					<validationMsg for="cardType" class="valmsg"/>
				</tag>
				<tag name="div" class="card_number_xiframe left_column">
					<label for="cardNumber" text="Credit Card Number"/>
					<tag name="span" class="xiframe_required">*</tag>
					<tboxCardNumber tokenize="true" class="textbox-paymetric"/>
					<validationMsg for="cardNumber" class="valmsg"/>
				</tag>
				....
			</cardDropdownSection>
		</htmlSection>
	</merchantHtml>

  1. Next, add a function in helper to get the iframe URL using Paymetric configuration details. Then, pass on this URL to a particular UI component of the payment method.
  2. Display an iframe form in the checkout page, and hide the default credit card form using JavaScript or CSS. Paymetric provides a JS to load and process the iframe operations, so we will need to include this JS into our credit card for renderer knockout JS.
  3. Design the iframe form like your actual form (optional). The CSS URI is used for styling the iframe.
  4. While hitting the ‘place order’ button in the checkout page, we need to add a function to submit the iframe form and get the response token from the Paymetric.
  5. Collect and pass access and signed tokens to the helper function for verification.
  6. If tokens are verified, then populate those details into an actual credit card form and place the order. (Here, the credit card number is not populated, and we did not get a credit card number from the Paymetric. Instead, we used a token number as the card number.)
  7. After it populates the data, continue the checkout process to place the order. (If we get any error in the authorization process, we need to perform all the steps again from step 2.)

Paymetric IFrame Form

This is one of the solutions that we have applied on several websites to solve the PCI compliance issue. Based on the website and platform, it may vary. If you found this blog helpful, then please do let us know if you have any queries.

 

How to Crack Magento 2 Solution Specialist Certification?

$
0
0
Magento 2 Certified Solution Specialist

I am not sure whether your strategy of preparing things syncs with mine. Though, I would like to share a few things with you that I have followed and which helped me in passing the certification. I hope that this will support your preparation, if you are planning to take the Magento 2 Solution Specialist Certification soon.

Let’s not discuss “What is the purpose of this Certification” or “Whom it is meant for” (Blah, Blah, Blah), as there are a heap of sources which tell you that. Let’s get into the preparation directly.

Areas to lookup:

Ecommerce                                       – 08 Questions

Magento Architecture                     – 13 Questions

Magento Admin and StoreFront  – 18 Questions

Business and Applications             – 08 Questions

Catalog                                                 – 13 Questions

Total = 60 Questions

Duration = 90 minutes

Pass Percentage = 67 or above

Preparation Tips:

  • Swift Otter Guide – This is similar to practicing “அ/A” on a blackboard when we started our education. So this guide is only a footpath, and we will still have to construct our road to success over it.
  • Magento 2 Official Docs – This is the material that is going to firm our construction. For every topic you see in the Swift Otter guide, just navigate to the official document to get a clear understanding of the respective concepts. Please only concentrate on the test-related areas. Another advantage of reading an official document is that you might have some key points mentioned, some of which might be asked in the examination directly.

Magento 2 Certified Solution Specialist

Some of the main Topics that I covered in Magento 2 Docs are:

Magento 2 Scope Configuration

Magento 2 Order Processing

Magento 2 Order Management & Order Processing Work-flow

Magento 2 B2B module

Magento 2 B2B Company Account

SEO and Google Tools

NewRelic APM

Blackfire.io

Magento 2.3 Cloud Architecture

Magento 2 Industry Compliance

Magento 2 Taxes

  • Explore and Practice Magento Enterprise – Theory is never enough. Working with multiple Magento Enterprise Cloud projects eased me into finding out what exactly Magento has on its plate. I would recommend that you install a vanilla Magento Enterprise 2.3.x and explore all the features that Magento has on its plate and get familiar with it.
  • Google – This test involves a lot of business laws like PCI, GDPR, VAT, etc. So find some external online sources to have a clear understanding about all of them – eCommerce VAT – Europe GuideMagento GDPR, and also search for references of other general concepts on the topic until you are more familiar with it.
  • Take Swift Otter Practice Test – This will help you analyze the parts where you are lagging and help you identify where you need to concentrate more. The practice test won’t be similar to the actual exam, but it will feed you some confidence. (Take this test only after you are done with the preparation, because trying the test before the preparation just to test yourself could break your confidence.)
  • Other Practice Questions (Optional) – Since the test not only focuses on Magento, but also the concepts of eCommerce and Business, it would be helpful to go through the available Magento 1 Solution Specialist Questions to predict the type of questions that will be asked in the real exam. If you are doing this, please make sure you are not getting confused on the features of Magento 1 and 2.

And, that’s it! Get ready to crack your Magento 2 Certified Solution Specialist Exam. Feel free to comment below if you have any further questions or doubts. We’re happy to answer!

Declarative Schema in Magento 2.3

$
0
0
Magento 2.3

Magento 2.3 has introduced a new feature called the Declarative Schema, which plays a major role in going beyond simply installing and updating the schema process. Previously, in all Magento versions, developers would write a PHP script for installing and updating data in the database.

Various scripts were required for:

  1. Installing and updating the schema.
  2. Installing and updating data.
  3. Managing other operations when Magento was installed or upgraded.

The Schema Listener Tool converts Magento 2.3 migration scripts into a declarative schema. 

The declarative schema approach allows developers to declare the final desired state of the database and has the system adjust to it automatically, without performing redundant operations. Developers are no longer forced to write scripts for each new version. In addition, this approach allows data to be deleted when a module is uninstalled.

We can handle the Data Definition Language (DDL) and Data Manipulation Language (DML) in Declarative Schema.

How does Declarative Schema help developers?

  1. Installing and upgrading a code can be handled in a single XML file.
  2. Time-consuming
  3. Performance improvements

How to configure Declarative Schema in Magento 2.3?

We are going to see the entire details of the declarative schema interface in this blog. Using DDL and DML we can perform the following operations:

  1. Create a table
  2. Drop a table
  3. Rename a table
  4. Add a column to the table
  5. Drop a column to the table
  6. Change column type
  7. Rename a column
  8. Add an Index
  9. Create a foreign key
  10. Drop a foreign key
  11. Recreate a foreign key

Step 1: Create a table

We hope that everyone’s already aware of how to create a custom module in Magento. We are going to be creating a custom module in the format below.

<magento_root_directory> app / code / < vendor_name > / < module_name >

We have created a DCKAP_DeclarativeSchema on the following directory:

<magento_roor_directory> / app / code / DCKAP / DeclarativeSchema

Create db_schema.xml file after creating the custom module in the following directory:

<magento_roor_directory> app / code / DCKAP / DeclarativeSchema / etc / db_schema.xml

We have created a table name called custom_table with four different entities (entity_id, reference_id, title, description, timestamp) in db_schema.xml. We must create db_schema_whitelist.json once we create a database table using declarative schema.

Use the following Magento command to create db_schema_whitelist.json file for your custom module:

>> bin/magento setup:db-declaration:generate-whitelist –module-name=DCKAP_DeclarativeSchema

You can create a db_schema_whitelist.json file manually or by using the above command, it depends on the developers choice.

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+	<table name="custom_table" resource="default" comment="Create table using declarative schema">
+		<column xsi:type="int" name="entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="Entity Id"/>
+		<column xsi:type="int" name="reference_id" padding="10" unsigned="true" nullable="false" comment="Reference Id"/>
+		<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
+		<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
+		<column xsi:type="timestamp" name="time" comment="Time"/>
+		<constraint xsi:type="primary" referenceId="PRIMARY">
+			<column name="entity_id"/>
+		</constraint>
+	</table>
</schema>

Top node

The top node represents the schema node, which is located in the schema.xsd file.

<schema xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”        xsi:noNamespaceSchemaLocation=”urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd”>

The location of the schema.xsd file is: <magento_root_directory>/vendor/magento/framework/Setup/Declaration/Schema/etc/schema.xsd

Table node

We can create more than one table in the same db_schema.xml file, each table node creates a new table in the database. A table node can contain the following attributes:

  1. Name: The name of the table
  2. Engine: SQL engine, this value must be InnoDB or memory.
  3. Resource: The database shard on which to install the table. This value must be default, checkout, or sales.
  4. Comment: Table comment

The table node contains three different types of subnodes:

  1. Column
  2. Constraints
  3. Index

Column node

The column node defines inside the table node, each column node has its own declaration. A column node can contain the following attributes:

  1. Type: the column type should contain one of the blob (includes blob, mediumblob, longblob), boolean, date, datetime, int (includes smallint, bigint, tinyint), real (includes decimal, float, double, real), text (includes text, mediumtext, longtext), timestamp, varbinary, and varchar.
  2. Name: name of the column 
  3. Padding: indicates the size of the integer column
  4. Unsigned: indicates if the column contains positive and negative values or only positive values
  5. Nullable: indicates if the column can be nullable
  6. Comment: indicates the comment of the column 
  7. Length: indicates the length of a column

Constraints node

The constraints node can contain the following attributes:

  1. Typeprimary, unique, or foreign
  2. Referrence_id : a custom identifier that is used only for relation mapping in the scope of db_schema.xml files

Step 2: Drop a table

We have to remove the entire table node in the db_schema.xml file, and the table will be removed once you run an upgrade command (php bin/magento setup:upgrade).

The following example is used to remove custom_table in the database:

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
-	<table name="declarative_table" resource="default" engine="innodb" comment="Create table using declarative schema">
-		<column xsi:type="int" name="entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="Entity Id"/>
-		<column xsi:type="int" name="reference_id" padding="10" unsigned="true" nullable="false" comment="Reference Id"/>
-		<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
-		<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
-		<column xsi:type="timestamp" name="time" comment="Time"/>
-		<constraint xsi:type="primary" referenceId="PRIMARY">
-			<column name="entity_id"/>
-		</constraint>
-	</table>
</schema>

Step 3: Rename a table

We have to change the name of the table or migrate the data from one table to another name using an onCreate attribute in the source table node and also specify the table name in the onCreate attributes itself.

The onCreate attribute declaration should be:

onCreate=”migrateDataFromAnotherTable(table_name)”

Please note that migrating the data from another table and renaming columns at the same time is not supported.

When renaming a table, remember to regenerate the db_schema_whitelist.json file because the old database name should be present in the old db_schema_whitelist.json file.

Use the following example for changing new_custom_table instead of custom_table.

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
+	<table name="new_custom_table" onCreate="migrateDataFromAnotherTable(custom_table)">
-	<table name="custom_table">
		<column xsi:type="int" name="entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="Entity Id"/>
		<column xsi:type="int" name="reference_id" padding="10" unsigned="true" nullable="false" comment="reference Id"/>
		<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
		<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
		<column xsi:type="timestamp" name="time" comment="Time"/>
		<constraint xsi:type="primary" referenceId="PRIMARY">
			<column name="entity_id"/>
		</constraint>
	</table>
</schema>

Step 4: Add a column to the table

We are going to add a new column in the respective database table in the db_schema.xml file. We have added a comment column in the custom_table.

When adding a new column into the table, remember to generate the db_schema_whitelist.json file.

The following example adds the comment column:

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
<table name="custom_table">
	<column xsi:type="int" name="entity_id" padding="10" unsigned="true" identity="true" nullable="false" comment="Entity Id"/>
	<column xsi:type="int" name="reference_id" padding="10" unsigned="true" nullable="false" comment="Reference Id"/>
	<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
	<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
+	<column xsi:type="varchar" name="comment" nullable="false" length="255" comment="comment"/>
	<column xsi:type="timestamp" name="time" comment="Time"/>
	<constraint xsi:type="primary" referenceId="PRIMARY">
		<column name="entity_id"/>
	</constraint>
   </table>
</schema>

 Step 5: Drop a column from a table

We have removed the comment column by deleting its column node. To drop a column declared in another module, redeclare it with the disabled attribute set to true.

It is possible to drop a column only if it exists in the db_schema_whitelist.json file.

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
	<table name="custom_table">
		<column xsi:type="int" name="entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="Entity Id"/>
		<column xsi:type="int" name="reference_id" padding="10" unsigned="true" nullable="false" comment="Entity Id"/>
		<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
		<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
-		<column xsi:type="varchar" name="comment" nullable="false" length="255" disabled="true" comment="comment"/>
		<column xsi:type="timestamp" name="time" comment="Time"/>
		<constraint xsi:type="primary" referenceId="PRIMARY">
		<column name="entity_id"/>
		</constraint>
	</table>
</schema>

Step 6: Change the column type

We have changed the type of the title column from varchar to text.

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
	<table name="custom_table">
		<column xsi:type="int" name="entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="Entity Id"/>
		<column xsi:type="int" name="referrence_id" padding="10" unsigned="true" nullable="false" comment="Reference Id"/>
-		<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
+		<column xsi:type="text" name="title" nullable="false" comment="Title"/>
		<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
		<column xsi:type="timestamp" name="time" padding="10" comment="Time"/>
		<constraint xsi:type="primary" referenceId="PRIMARY">
			<column name="entity_id"/>
		</constraint>
	</table>
</schema>

Step 7: Rename a column

We have changed the description column name to body. The column should be changed in the database, but the data hasn’t been updated to the column yet. For that, we have to migrate the data from one column to another using an onCreate attribute.

onCreate=”migrateDataFrom(entity_id)”

When renaming a column, remember to regenerate the db_schema_whitelist.json file so it contains the new name in addition to the old one.

The following example is used to rename the description column to body with migrating the data.

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
	<table name="custom_table">
		<column xsi:type="int" name="entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="Entity Id"/>
		<column xsi:type="int" name="referrence_id" padding="10" unsigned="true" nullable="false" comment="Reference Id"/>
		<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>  
-		<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
+		<column xsi:type="varchar" name="body" onCreate="migrateDataFrom(description)" nullable="false" length="255" comment="Body"/>
		<column xsi:type="timestamp" name="time" padding="10" comment="Time"/>
		<constraint xsi:type="primary" referenceId="PRIMARY">
			<column name="entity_id"/>
		</constraint>
	</table>
</schema>

Step 8: Add an Index

The following example adds the INDEX_REFERENCE index to the custom_table table.

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
	<table name="custom_table">
		<column xsi:type="int" name="entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="Entity Id"/>
		<column xsi:type="int" name="reference_id" padding="10" unsigned="true" nullable="false" comment="Reference Id"/>
		<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
		<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
		<column xsi:type="timestamp" name="time" padding="10" comment="Time"/>
		<constraint xsi:type="primary" referenceId="PRIMARY">
			<column name="entity_id"/>
		</constraint>
+		<index referenceId="INDEX_REFERENCE" indexType="btree">
+			<column name="reference_id"/>
+		</index>
	</table>
</schema>

Step 9: Create a foreign key

The following example is used to add a new foreign key using a constraint node. Create a reference type as foreign in the constraint node, which indicates the foreign key for the custom_table from the reference table called reference_custom_table.

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
	<table name="custom_table">
		<column xsi:type="int" name="entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="Entity Id"/>
		<column xsi:type="int" name="reference_id" padding="10" unsigned="true" nullable="false" comment="Reference Id"/>
		<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
		<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
		<column xsi:type="timestamp" name="time" comment="Time"/>
		<constraint xsi:type="primary" referenceId="PRIMARY">
		<column name="entity_id"/>
		</constraint>
+		<constraint xsi:type="foreign" referenceId="ADD_REF_FOR_CUSTOM_TABLE" table="custom_table" 
+			column="referrence_id" referenceTable="reference_custom_table" referenceColumn="reference_column" 
+			onDelete="CASCADE"/>
	</table>
</schema>

Step 10: Drop a foreign key

The following example removes the ADD_REF_FOR_CUSTOM_TABLE foreign key by deleting the constraint node. Use disable attribute is true when you are going to declare the constraint node to the other module.

It is possible to drop a foreign key only if it exists in the db_schema_whitelist.json file.

<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
	<table name="custom_table">
	<column xsi:type="int" name="entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="Entity Id"/>
	<column xsi:type="int" name="reference_id" padding="10" unsigned="true" nullable="false" comment="Reference Id"/>
	<column xsi:type="varchar" name="title" nullable="false" length="255" comment="Title"/>
	<column xsi:type="varchar" name="description" nullable="false" length="255" comment="Description"/>
	<column xsi:type="timestamp" name="time" comment="Time"/>
	<constraint xsi:type="primary" referenceId="PRIMARY">
		<column name="entity_id"/>
	</constraint>
-	<constraint xsi:type="foreign" referenceId="ADD_REF_FOR_CUSTOM_TABLE" table="custom_table" 
-		column="referrence_id" referenceTable="reference_custom_table" referenceColumn="reference_column" 
-		onDelete="CASCADE"/>
	</table>
</schema>

Step 11: Recreate a foreign key

We have to add disable attribute is true to the respective constraint node. The following example is used to explain how to recreate a PRIMARY key for the new_entity_id column.

<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
	<table name="custom_table">
		<column xsi:type="int" name="new_entity_id" padding="10" identity="true" unsigned="true" nullable="false" comment="New Entity Id"/>
		<constraint xsi:type="primary" referenceId="PRIMARY" disabled="true"/>
		<constraint xsi:type="primary" referenceId="NEW_PRIMARY">
			<column name="new_entity_id"/>
		</constraint>
	</table>
</schema>

The following example, extracting from the vendor/magento/module-catalog/etc/db_schema.xml file, defines the catalog_product_entity table.

<table name="catalog_product_entity" resource="default" engine="innodb" comment="Catalog Product Table">
	<column xsi:type="int" name="entity_id" padding="10" unsigned="true" nullable="false" identity="true" comment="Entity Id"/>
	<column xsi:type="smallint" name="attribute_set_id" padding="5" unsigned="true" nullable="false" identity="false" default="0" comment="Attribute Set ID"/>
	<column xsi:type="varchar" name="type_id" nullable="false" length="32" default="simple" comment="Type ID"/>
	<column xsi:type="varchar" name="sku" nullable="true" length="64" comment="SKU"/>
	<column xsi:type="smallint" name="has_options" padding="6" unsigned="false" nullable="false" identity="false" default="0" comment="Has Options"/>
	<column xsi:type="smallint" name="required_options" padding="5" unsigned="true" nullable="false" identity="false" default="0" comment="Required Options"/>
	<column xsi:type="timestamp" name="created_at" on_update="false" nullable="false" default="CURRENT_TIMESTAMP" comment="Creation Time"/>
	<column xsi:type="timestamp" name="updated_at" on_update="true" nullable="false" default="CURRENT_TIMESTAMP" comment="Update Time"/>
	<constraint xsi:type="primary" referenceId="PRIMARY">
		<column name="entity_id"/>
	</constraint>
	<index referenceId="CATALOG_PRODUCT_ENTITY_ATTRIBUTE_SET_ID" indexType="btree">
		<column name="attribute_set_id"/>
	</index>
	<index referenceId="CATALOG_PRODUCT_ENTITY_SKU" indexType="btree">
		<column name="sku"/>
	</index>
</table>

We are at the end of this blog and we hope that everyone now has an idea of how to use Magento 2.3 to perform DDL and DML operations in Magento 2.3 using declarative schema.

Custom File Upload Attribute for Category In Magento 2

$
0
0
File upload attribute in Magento 2

Running a successful eCommerce business has a lot to do with the incorporation of minute nuances from the nook and corner of stages like design, development, and implementation. A small hitch in any part of the aspect might have a huge impact on the overall result of the digital business. On that note, not having an essential attribute like File Upload Attribute for Category in Magento 2 made implementation difficult.

There are enough options to upload a File with extensions like JPG, PNG, JPEG, etc in Magento 2, but it was difficult to find the one that could support files with extensions like PDF, TXT, DOC, etc. Enough analyses had to be done to stop this from being a barrier to upload files. Finally, it was sorted out using a code that was exclusively developed for this requirement.

Find the step-by-step code that enables the file upload attribute below.

Implementation of File Upload with Magento 2

Step 1:
Create InstallData.php inside your custom Module. 
Here we have a Module in the name of DCKAP/Category

Inside DCKAP/Category/Setup/InstallData.php

<?php
namespace DCKAP\Category\Setup;
use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface;
/**
 * @codeCoverageIgnore
 */
class InstallData implements InstallDataInterface
{
    /**
     * EAV setup factory.
     *
     * @var EavSetupFactory
     */
    private $_eavSetupFactory;
    protected $categorySetupFactory;
    /**
     * Init.
     *
     * @param EavSetupFactory $eavSetupFactory
     */
    public function __construct(EavSetupFactory $eavSetupFactory, \Magento\Catalog\Setup\CategorySetupFactory $categorySetupFactory)
    {
	        $this->_eavSetupFactory = $eavSetupFactory;
        $this->categorySetupFactory = $categorySetupFactory;
    }
    /**
     * {@inheritdoc}
     *
     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
     */
    public function install(
	        ModuleDataSetupInterface $setup,
        ModuleContextInterface $context
    ) {
	        /** @var EavSetup $eavSetup */
        $eavSetup = $this->_eavSetupFactory->create(['setup' => $setup]);
        $setup = $this->categorySetupFactory->create(['setup' => $setup]);         
        $setup->addAttribute(
	                \Magento\Catalog\Model\Category::ENTITY,
                'manual',
                [
	                'type' => 'varchar',
                    'label' => 'User Manual Document',
                    'name' => 'User Manual Document',
                    'input' => 'image',
                    'backend' => 'Magento\Catalog\Model\Category\Attribute\Backend\Image',
                    'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
                    'visible' => true,
                    'required' => false,
                    'user_defined' => true,
                    'group' => 'General Information'
                ]
            );
    }
}

Here we can use Backend option and Input type as Image itself, we can control that later in UI component and di(Dependency Injection).

Step 2:
Create a category_form.xml file on location DCKAP\Category\view\adminhtml\ui_component

<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="content">
        <field name="manual">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">string</item>
                    <item name="source" xsi:type="string">category</item>
                    <item name="label" xsi:type="string" translate="true">User Manual Document</item>
                    <item name="visible" xsi:type="boolean">true</item>
                    <item name="formElement" xsi:type="string">fileUploader</item>
                    <item name="elementTmpl" xsi:type="string">ui/form/element/uploader/uploader</item>
                    <item name="required" xsi:type="boolean">false</item>
                    <item name="sortOrder" xsi:type="number">40</item>
                    <item name="uploaderConfig" xsi:type="array">
                        <item name="url" xsi:type="url" path="dckap_category/category_manual/upload"/>
                    </item>
                </item>
            </argument>
        </field>
    </fieldset>
</form>

Step 3:
Add below code in DCKAP/Category/etc/di.xml
Here we can include the file extension types inside allowedExtensions section.

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="DCKAP\Category\Controller\Adminhtml\Category\Manual\Upload">
    <arguments>
        <argument name="imageUploader" xsi:type="object">Magento\Catalog\CategoryImageUpload</argument>
    </arguments>
</type>
<virtualType name="Magento\Catalog\CategoryImageUpload" type="Magento\Catalog\Model\ImageUploader">
    <arguments>
        <argument name="baseTmpPath" xsi:type="string">catalog/tmp/category</argument>
        <argument name="basePath" xsi:type="string">catalog/category</argument>
        <argument name="allowedExtensions" xsi:type="array">
            <item name="pdf" xsi:type="string">pdf</item>
            <item name="txt" xsi:type="string">txt</item>
            <item name="doc" xsi:type="string">doc</item>
        </argument>
    </arguments>
</virtualType>
<preference for="Magento\Catalog\Model\Category\DataProvider" type="Ey\Catalog\Model\Category\DataProvider" />
</config>

Step 4:
Create Upload.php file on location DCKAP/Category/Controller/Adminhtml/Category/Manual

DCKAP\Category\Controller\Adminhtml\Category\Manual\Upload
This is a Controller File Where we need to perform our Custom File Upload action

<?php
namespace DCKAP\Category\Controller\Adminhtml\Category\Manual;
use Magento\Framework\Controller\ResultFactory;
/**
* Agorae Adminhtml Category Image Upload Controller
*/
class Upload extends \Magento\Backend\App\Action
{
/**
* Image uploader
*
* @var \Magento\Catalog\Model\ImageUploader
*/
protected $imageUploader;
/**
* Uploader factory
*
* @var \Magento\MediaStorage\Model\File\UploaderFactory
*/
private $uploaderFactory;
/**
* Media directory object (writable).
*
* @var \Magento\Framework\Filesystem\Directory\WriteInterface
*/
protected $mediaDirectory;
/**
* Store manager
*
* @var \Magento\Store\Model\StoreManagerInterface
*/
protected $storeManager;
/**
* Core file storage database
*
* @var \Magento\MediaStorage\Helper\File\Storage\Database
*/
protected $coreFileStorageDatabase;
/**
* @var \Psr\Log\LoggerInterface
*/
protected $logger;
    /**
    * Upload constructor.
    *
    * @param \Magento\Backend\App\Action\Context $context
    * @param \Magento\Catalog\Model\ImageUploader $imageUploader
    */
    public function __construct(
	        \Magento\Backend\App\Action\Context $context,
        \Magento\Catalog\Model\ImageUploader $imageUploader,
        \Magento\MediaStorage\Model\File\UploaderFactory $uploaderFactory,
        \Magento\Framework\Filesystem $filesystem,
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        \Magento\MediaStorage\Helper\File\Storage\Database $coreFileStorageDatabase,
        \Psr\Log\LoggerInterface $logger
        ) {
	        parent::__construct($context);
        $this->imageUploader = $imageUploader;
        $this->uploaderFactory = $uploaderFactory;
        $this->mediaDirectory = $filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA);
        $this->storeManager = $storeManager;
        $this->coreFileStorageDatabase = $coreFileStorageDatabase;
        $this->logger = $logger;
    }
    /**
    * Check admin permissions for this controller
    *
    * @return boolean
    */
    protected function _isAllowed() {
	        return $this->_authorization->isAllowed('DCKAP_Category::category');
    }
    /**
    * Upload file controller action
    *
    * @return \Magento\Framework\Controller\ResultInterface
    */
    public function execute() {
	        try {
	            $result = $this->imageUploader->saveFileToTmpDir('manual');
            $result['cookie'] = [
	                        'name' => $this->_getSession()->getName(),
                        'value' => $this->_getSession()->getSessionId(),
                        'lifetime' => $this->_getSession()->getCookieLifetime(),
                        'path' => $this->_getSession()->getCookiePath(),
                        'domain' => $this->_getSession()->getCookieDomain(),
                        ];
        } catch (\Exception $e) {
	            $result = ['error' => $e->getMessage(), 'errorcode' => $e->getCode()];
        }
        return $this->resultFactory->create(ResultFactory::TYPE_JSON)->setData($result);
    }
}

Step 5:
Finally, create DataProvider.php file on location DCKAP\Category\Model\Category

<?php
namespace DCKAP\Category\Model\Category;
class DataProvider extends \Magento\Catalog\Model\Category\DataProvider{
	protected function getFieldsMap()
    {
	    $fields = parent::getFieldsMap();
        $fields['content'][] = 'manual'; // custom image field
        return $fields;
    }
}

Now it is all done! Once the code is run, an option to upload the file will be included. This is how the exact output looks like.

Screenshot


How Does Magento Abandoned Cart Extension Work?

$
0
0
Magento Abandoned Cart Extension

An abandoned cart is an online shopping cart that a customer adds items to but exits the website without purchasing those items. The Abandoned Cart extension helps in automatically sending triggered emails to recover all your customers’ (registered users and guest visitors) forgotten carts and then pushes them to return to your online store and complete the checkout easily. 

The admin can track cart recoveries from the admin panel, create custom email notification templates, and schedule alerts with different discount percentages.

Moreover, it also helps to reduce cart abandonment rates and encourages customer loyalty by offering attractive discount codes enclosed in the emails.

Why do we need an Abandoned Cart Extension?

On average, more than 70% of online shoppers abandon their carts at checkout. This means that 3 out of 4 customers add something to their cart and leave without making the payment.

The Abandoned Cart Extension helps in effectively turning lost purchases into completed orders by sending in smart automated reminders, with or without a discount coupon.

Overview

The Abandoned Cart email module lets you create an unlimited number of abandoned cart emails with attractive designs, along with default email templates. It also includes free discount coupons, details of a product added to the cart, and a direct link to restore the cart to make your message more eye-catching. Also, you can specify the height and width of product images included in the email reminder.

Recovery emails are sent to customers based on the rules you define in the backend. With the Abandoned Cart extension, you can effectively create, manage, and cancel rules according to the specified cart conditions. Besides which, it is also possible to set a certain period after a cart is considered abandoned and stop sending reminders after a customer recovers the cart.

The emails can be sent automatically at the specified time or manually from the backend. This feature is critical for customer engagement since one reminder is not always enough to make a shopper go back to your store. It can keep your history of the sent emails and track the click-through rate of recovery emails, as well as analyze if restoring the shopping cart led to the order on your website.

It offers various email templates that can be easily customized according to your expectations and requirements. You can also create other email templates by yourself. The email will help in reminding customers about abandoned items in the shopping cart by displaying product images, as well as short descriptions in the template.

Email Templates

Email Templates

Email Templates

Email Templates

Email Templates

Configure Rules for Email Campaigns

Due to high flexibility, Abandoned Cart lets you set up rule conditions based on different parameters (e.g., conditions combination, product attribute combination, product subselection, and cart attributes).

For each rule, you can set flexible conditions for emails that dispatch:

  • Product conditions for precise targeting.
  • Cart conditions to narrow down the audience.
  • Customer group conditions to segment the customers.
  • Store view conditions to allow multi-language marketing.
  • Send abandoned cart reminders to promote purchases.

Abandoned Cart Email Rule

Abandoned Rule

Schedule

In case you don’t want to send emails immediately, you can set the schedule for those emails with an estimated time. If you set the email that will be sent after five days, the schedule will be activated, and after five days, the emails will be sent automatically. You can set the shopping cart rule for the customer’s re-purchase with Magento 2 abandoned cart recovery. You can also add more rules or delete any unnecessary rules.

Abandoned Cart Email Rule

Abandoned Cart Email Rule

Test Email Campaign

For each abandoned email, you can choose to send any desired customer the Matched Shopping Cart Function. There is a list of abandoned customers, and you can choose any of them, and you can send a test email before releasing it officially.

Test Email Campaign

Google Analytics

To analyze the effectiveness of the email campaign’s performance, you can effortlessly build your campaigns with the Google Analytics account. Besides that, it’s possible to control all the clicks on recovery links with the display of all abandoned items shown in the email. With the abandoned cart email for Magento 2, it is easy to set all the information for campaigns in the analytics tab.

Abandoned Cart Email Rule

Configuration

It is very easy to configure in the backend with clear parts of each function. It just takes one click to set up the powerful operation of recovering abandoned cart emails, contributing to the increase of conversion rates, and getting more sales for your store.

Abandoned Cart Email Configuration

Now, you can recover all your customers by reminding them with triggered emails about their abandoned carts and make them return to your eCommerce store using the Magento 2 Abandoned Cart Extension.

Applying a Data Patch on the Declarative Schema in Magento 2.3

$
0
0
Data Patch on Declarative Schema in M2

Declarative Schema

Magento 2.3 brings a new feature called the Declarative Schema, which allows a developer to facilitate the Magento database installation (Installschema) and upgrading (Upgradeschema) processes, without performing any additional work, i.e. writing version updates for each new installation/upgrading process in etc/module.xml

Create a Table Using the Declarative Schema

app/code/DCKAP/Datapatch/etc/db_schema.xml

<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
	<table name="customer_contactdetails" resource="default" engine="innodb" comment="Customer Details">
    	<column xsi:type="smallint" name="id" padding="6" unsigned="false" nullable="false" identity="true" comment="ID"/>
    	<column xsi:type="varchar" name="customer_name" nullable="false" length="25" comment="Name"/>
    	<column xsi:type="varchar" name="customer_email" nullable="false" length="25" comment="Email"/>
    	<column xsi:type="varchar" name="contact_no" nullable="false" length="255" comment="Contact No" />
    	<constraint xsi:type="primary" referenceId="PRIMARY">
        	<column name="id"/>
    	</constraint>
	</table>
</schema>

Run the command:

php bin/magento setup:db-declaration:generate-whitelist --module-name=DCKAP_Datapatch

Create a custom module, as shown in the file structure below.

 

Data Patch - Custom Module

Data Patch

A data patch is a class that contains data modification instructions. Through the Data Patch Versioning, all the InstallData and UpgradeData will be replaced.

It is defined in a <Namespace>/<Module_Name>/Setup/Patch/Data/<Patch_Name>.php file, and implements \Magento\Setup\Model\Patch\DataPatchInterface.

Step 1: Create a Model and Resource Model for Creating a Table as Usual

i.app/code/vendor/module/Model/Contactdetails

<?php
namespace DCKAP\Datapatch\Model;
use Magento\Framework\Model\AbstractModel;
class Contactdetails extends AbstractModel{
	protected function _construct()
	{
		$this->_init("DCKAP\Datapatch\Model\ResourceModel\Contactdetails");
	}
}
?>

ii.app/code/vendor/module/Model/ResourceModel/Contactdetails

<?php
namespace DCKAP\Datapatch\Model\ResourceModel;
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
class Contactdetails extends AbstractDb{
	public function _construct()
	{
		$this->_init("customer_contactdetails", 'id');
	}
}
?>

Step 2: Create a Datapatch

DataPatchInterface must implement three functions: apply(), getDependencies() and getAliases()

PatchVersionInterface must implement one function: getVersion()

apply() function is used to define your core logic for installing/upgrading data to the database.

getAliases() function defines aliases for the patch class. In this case, the class name could possibly change, and if it does, we should supply the old class-name here, so that it doesn’t get executed a second time.

getDependencies() function contain the class name of dependent patches. This functionality notifies Magento to execute the “patches”. We first define it here, before the patch script.

getVersion() function can return a version number of the patch. If the version number of the module is higher than the version we specify in our patch, then it will not get executed. If it is equal to or lower than the version here, it will be executed.

app/code/DCKAP/Datapatch/Setup/Patch/Data/AddData.php

<?php
namespace DCKAP\Datapatch\Setup\Patch\Data;
use Magento\Framework\Setup\Patch\DataPatchInterface;
use Magento\Framework\Setup\Patch\PatchVersionInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use DCKAP\Datapatch\Model\ContactdetailsFactory;
Use DCKAP\Datapatch\Model\ResourceModel\Contactdetails;
class AddData implements DataPatchInterface, PatchVersionInterface
{
	private $contactDetailsFactory;
	private $contactDetailsResource;
	private $moduleDataSetup;
	public function __construct(
		ContactdetailsFactory $contactDetailsFactory,
		Contactdetails $contactDetailsResource,
		ModuleDataSetupInterface $moduleDataSetup
	)
	{
		$this->contactDetailsFactory = $contactDetailsFactory;
		$this->contactDetailsResource = $contactDetailsResource;
		$this->moduleDataSetup=$moduleDataSetup;
	}
	public function apply()
	{
		//Install data row into contact_details table
		$this->moduleDataSetup->startSetup();
		$contactDTO=$this->contactDetailsFactory->create();    	   
        $contactDTO->setCustomerName('John')->setCustomerEmail('andrew@email.com')
        ->setContactNo('9988884444');
		$this->contactDetailsResource->save($contactDTO);
		$this->moduleDataSetup->endSetup();
	}
	public static function getDependencies()
	{
		return [];
	}
	public static function getVersion()
	{
		return '1.0.1';
	}
	public function getAliases()

	{
		return [];
	}
}

Step 3: Run the Commands

php bin/magento setup:upgrade

php bin/magento cache:flush

After running the above commands, the data will be added to the customer_contactdetails table.

Data Patch - Run Command

The patch is run only once. You can find the patch id and name in the patch_list table.

Data Patch - Run Command

How to Re-execute the Patch?

  • Remove the value from the patch_list
  • Run bin/magento setup:upgrade

That’s it! We are done now. Hope this blog was helpful to you on learning how to apply the Data Patch on the Declarative Schema in Magento 2.3. If you have any queries, please feel free to leave a comment below.

The Best Magento Extensions/Modules for Your Online Store

$
0
0
Magento Extensions & Modules

Magento 2 is a powerful and leading eCommerce platform which provides eCommerce merchants with a cart system that’s flexible. The eCommerce platform has seen enormous growth in recent years due to its robust features. 

Magento extensions help in adding custom features and functionalities for enhancing your online store, thus leading to an increase in customers along with an increase in eCommerce revenue. In this blog, we have listed the best extensions that are compatible with Magento 2.3.

Order Processing

  • Quick Order
  • Tax Exemption
  • Advanced Sample Order

Credit points and Promotions

  • Reward Points
  • Special Promotions

Customer Management

  • Ajax Login
  • Customer Attribute Manager

Search

  • Algolia Search
  • Ajax Search for Magento 2

Order Processing

Today, every customer wishes to purchase more products with less time. Enabling a customer to purchase more by spending lesser time is very tricky. But, the extensions mentioned below will do the trick.

1. Quick Order

Are you tired of navigating to every web page to order your product? Don’t worry; the quick order extension will help in saving your valuable time. At any point, a user visits an online store, he/she will attempt to look for the particular items, thus requesting the items rapidly, without exploring the pages to discover the items. The Quick Order request is an extension that will encourage the buyer with the use of placing an order in a jiffy, along with providing a great UI experience. 

Quick Order

Highlights:

  • Buyers can look for and request the items by using the quick order request popup, without having to waste time by exploring different pages.
  • Using this popup, customers can order simple and configurable products.
  • Various items can be effectively included using dynamic columns in the popup, where customers can also proceed to the checkout page from the popup itself.
  • B2B customers can add multiple products quickly by specifying the SKU and the quantity of the products from a text area in the popup.
  • The admin can change the number of rows to be displayed in the popup, which is used to order the products.
  • The admin can change the separator for the SKU and quantity from the backend settings.
  • The admin can also change the number of characters needed for the product’s auto-suggest to work in the popup.
  • Smoothen the procedure of mass product requests by using CSV file import.

Vendor: DCKAP

2. Tax Exemption

The Tax Exemption extension is used to give tax exempt advantages to qualified customers. For getting approval, customers can upload their tax exemption certificates from the “my account” section. Once the admin reviews and approves the request, customers can receive the tax-exempt option on the checkout page. The admin can additionally set the expiration for the tax exemption from the “customer account” section.

Tax Exemption

Highlights:

  • The tax exemption can be enabled/disabled at any time from the Magento backend.
  • Have the ability to set an expiration date for the tax exemption.
  • Once the tax exemption date expires, the customer would not be able to get the tax exemption on the checkout page. This can automatically be controlled.
  • When the customer uploads the tax exemption certificate, the administrator will be notified via email.
  • Once the admin approves the tax exemption, the customer will get a notification via email.
  • The admin can configure the email address that will receive all the tax exemption request emails.
  • The admin can also manage the tax exemption customer details on a separate menu and send the notification email to the customer about the certificate expiration details.

Vendor: DCKAP

3. Advanced Sample Orders

Do you have a fear of product quality? Through the Advanced Sample Order extension, customers can order samples before making a bulk purchase of the original product. Here, the sample order gets processed as a regular order and provides analytical information.

Advanced Sample Orders

Highlights:

  • Ordering the samples has been based on specific products and customer groups so that the admin can restrict the ordering of samples.
  • It provides an additional feature to set a price for both original and sample orders.
  • Different prices can be given to samples at a fixed price or a percentage of the regular price — for example, 200% of the original price. Fixed prices will not be applicable to a configurable, grouped, and downloadable product, as the prices are dynamic as per user selections.
  • You can purchase both samples and normal orders in a single request.
  • You can also give samples for free, based on the price settings of the samples.
  • The sample products can be easily identified in any order, both in front-end and back-end.
  • It works only for Single, Configurable, Grouped, and Bundle Products.

Vendor: DCKAP

Credit points and Promotions

Promotions are one of the key factors for gaining more customers. This helps in increasing the number of store visitors and effectively boost up sales. The extensions mentioned below will help with the promotions and motivate the customers to purchase more and more.

1. Reward Points + Referral program

Customers can now purchase using their reward points rather than paying money. The concept of reward points encourages customers to make use of their credit points for their purchases. Reward Points Programs allow customers to earn points on every purchase, where they can redeem these points on their next purchase. An expiration date for the reward points can also be set.

Reward Points + Referral program

Highlights:

  • Design an effective loyalty program.
  • Reward customers for every profitable action.
  • Gamify the shopping experience by using a tiered loyalty program.
  • Motivate existing customers to refer their friends and family.
  • Integrate your store with other systems via API.

Vendor: Mirasvit

2. Special Promotions

Special customization on cart price rules will take your site to a whole new level. Offering free products, gifts, and discounts will send an invite that lures the customers to visit your site regularly for more offers. 

Special Promotions

Highlights:

  • Apply discounts for both the original and special prices.
  • The promotion rules are also created based on the customer and order attributes.
  • Display all types of promotions on the frontend so that the user can easily select and use them based on their necessity.
  • The edit option will also be available for coupons.
  • These advance promotions will provide extraordinary service to customers.

Vendor: MageDelight

 Customer Management

Customers play a vital role in the success of an eCommerce store. The unique data of each customer is managed using customer attributes. Customer attributes are the key to customer management. The extensions mentioned below help in managing the customers and their information in Magento 2.     

1. Customer Attribute Manager

Customer attributes help merchants to maintain the unique data of every customer. Customer attributes produce information that is required to support the order, fulfillment, and customer management processes. This will be very useful during the checkout process. 

Customer Attribute Manager

Highlights: 

  • Admin can create custom attributes in the Magento backend without any limitation.
  • These attributes will help in getting adequate information from customers during registration.
  • Easy to send and retrieve the data from the customer account.

Vendor: DCKAP

2. Ajax Login

With Ajax Login, users can register and login in an easy and faster way. The users can log in through a pop-up window without having to refresh the current page, and it also helps in retrieving forgotten passwords by not having to refresh the current page. Ajax Login reduces the loading time of the end client. It removes URL redirection and provides a simple approach for customers to log into their accounts. For instance, if you need to sign in with a default Magento installation, tapping the “sign in” top link will load another new page (the login page). With Ajax Login, tapping the “sign in” top link will display a popup that the users can log in without having to reload another page. 

Ajax Login

Highlights: 

  • It gives the best user experience instead of having to wait for the page to load.
  • It increases the probability of the user login action.

Vendor: DCKAP

Search

Generally, shoppers visit an eCommerce site without having a clear idea of what they are looking for. So, they use the search engine to search for the product they desire. If the search results are quickly found, the purchase rate will seemingly tend to get high.

1. Algolia Search

Algolia is the speediest and most reliable search experience for Magento. Algolia Instant Search allows you to easily replace your current Magento search with an autocomplete and instant search results page that updates the products and categories in real-time. The results show up instantly as the user types with no delay, hence leading to what the customers are exactly looking for.

 Algolia Search

Highlights: 

  • The results are shown automatically as the user types, and the immediate search results are updated in real-time with products and categories for a site.
  • In order to provide a fast and appropriate search, the Algolia search engine uses a way through a process called indexing.
  • Be able to auto-complete search results on an instant search page.
  • Customer engagement will be increased for your store.

Vendor: Magento Marketplace

2. Ajax Search for Magento 2

This search has been developed with Ajax functionality. The search results will show up in the popup box after the user has typed the first character in the search box. The Ajax Search extension helps in increasing the conversion rate for your eCommerce business.

Magento 2 - Ajax Search

Highlights: 

  • Auto Suggestion for the typed letters in the search box.
  • It Supports up to 10,000 SKUs 
  • Support for multiple languages.

Vendor: Mageplaza

The Magento extensions/modules mentioned above will help in bringing out the best of your eCommerce store. We have come to the end of this blog, and we hope that this blog was helpful to you. If you have any queries, please feel free to leave a comment down below.

How to Showcase Bestseller Products in Magento 2?

$
0
0
Magento 2 Bestseller Product Module

The ‘Bestseller Products’ section helps in finding products that are in the list of top-selling or frequently bought products. In other words, when a product is top-rated and has been sold in vast numbers, it is termed as a ‘Bestseller.’ In this blog, we will show you how to display the bestseller products in Magento 2.

Let’s get started by creating the bestseller product module, as shown in the file structure below.

Magento Bestseller Product Module

Step 1:

Create a block to get the bestseller product collection.

app/code/DCKAP/BestSellerProducts/Block/BestSellerProduct.php

<?php
namespace DCKAP\BestsellerProducts\Block;

class BestSellerProduct extends \Magento\Framework\View\Element\Template{

	protected $_resourceFactory;
	protected $_imageHelper;
	protected $_cartHelper;
	protected $product;
	public function __construct(
    	\Magento\Catalog\Block\Product\Context $context,
    	\Magento\Reports\Model\ResourceModel\Report\Collection\Factory $resourceFactory,
    	\Magento\Catalog\Model\Product $product,
    	array $data = []
	) {
    	$this->_resourceFactory = $resourceFactory;
    	$this->product = $product;
    	$this->_imageHelper = $context->getImageHelper();
    	$this->_cartHelper = $context->getCartHelper();
    	parent::__construct($context, $data);
	}
 
	public function imageHelperObj(){
    	return $this->_imageHelper;
	}
	public function getProduct($id){
     	return $this->product->load($id);
	}
	/**
 	To get featured product collection
 	*/
	public function getBestsellerProduct(){
 	$resourceCollection = $this->_resourceFactory->create('Magento\Sales\Model\ResourceModel\Report\Bestsellers\Collection');
 	$resourceCollection->setPageSize(10);
 	return $resourceCollection;
	}
   
	public function getAddToCartUrl($product, $additional = [])
	{
  	return $this->_cartHelper->getAddUrl($product, $additional);
	}
	 
	public function getProductPriceHtml(
    	\Magento\Catalog\Model\Product $product,
    	$priceType = null,
    	$renderZone = \Magento\Framework\Pricing\Render::ZONE_ITEM_LIST,
    	array $arguments = []
	) {
    	if (!isset($arguments['zone'])) {
        	$arguments['zone'] = $renderZone;
    	}
    	$arguments['zone'] = isset($arguments['zone'])
        	? $arguments['zone']
        	: $renderZone;
    	$arguments['price_id'] = isset($arguments['price_id'])
        	? $arguments['price_id']
        	: 'old-price-' . $product->getId() . '-' . $priceType;
    	$arguments['include_container'] = isset($arguments['include_container'])
        	? $arguments['include_container']
        	: true;
    	$arguments['display_minimal_price'] = isset($arguments['display_minimal_price'])
        	? $arguments['display_minimal_price']
        	: true;

    	$priceRender = $this->getLayout()->getBlock('product.price.render.default');

    	$price = '';
    	if ($priceRender) {
        	$price = $priceRender->render(
            	\Magento\Catalog\Pricing\Price\FinalPrice::PRICE_CODE,
            	$product,
            	$arguments
        	);
    	}
    	return $price;
	}
}

Step 2:

Create a view file.

app/code/DCKAP/BestSellerProducts/view/frontend/templates/bestsellerproducts.phtml

<?php
$product_collection = $this->getBestsellerProduct();
?>
<?php if ($product_collection):?>
<div class="block widget block-bestseller-products grid">
	<div class="block-title">
    	<b class="heading"><?php  echo "Bestseller Products"; ?></b>
	</div>
	<div class="block-content">
    	<div class="products-grid grid">
        	<ol class="product-items">
            	<?php $iterator = 1; ?>
            	<?php foreach ($product_collection as $item):
                	$_product =$block->getProduct($item->getProductId());
                	?>

                	<?php echo($iterator++ == 1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
                	<div class="product-item-info">
                    	<?php
                    	$image_url = $block->imageHelperObj()->init($_product, 'product_page_image_small')
                        	->setImageFile($_product->getFile())
                        	->resize($this->getProductimagewidth(),$this->getProductimageheight())
                        	->getUrl();
                    	?>
                    	<a href="<?php  echo $_product->getProductUrl() ?>" class="product-item-photo">
                        	<img src="<?php echo  $image_url;?>" alt="<?php echo $this->escapeHtml($_product->getName()) ?>" />
                    	</a>
                    	<div class="product-item-details">
                        	<strong class="product-item-name">
                            	<a title="<?php echo $block->escapeHtml($_product->getName()) ?>"
                               	href="<?php echo $_product->getProductUrl() ?>"
                               	class="product-item-link">
                                	<?php echo $block->escapeHtml($_product->getName()) ?>
                            	</a>
                        	</strong>
                        	<?php
                        	echo $this->getProductPriceHtml($_product);
                        	?>
                        	<div class="product-item-actions">
                            	<div class="actions-primary">
                                	<?php if ($_product->isSaleable()): ?>
                                    	<?php if ($_product->getTypeInstance()->hasRequiredOptions($_product)): ?>
                                        	<button class="action tocart primary"
                                                	data-mage-init='{"redirectUrl":{"url":"<?php  echo $block->getAddToCartUrl($_product) ?>"}}'
                                                	type="button" title="<?php echo __('Add to Cart') ?>">
                                            	<span><?php echo __('Add to Cart') ?></span>
                                        	</button>
                                    	<?php else: ?>
                                        	<?php
                                        	$postDataHelper = $this->helper('Magento\Framework\Data\Helper\PostHelper');
                                        	$postData = $postDataHelper->getPostData($block->getAddToCartUrl($_product), ['product' => $_product->getId()]);
                                        	?>
                                        	<button class="action tocart primary"
                                                	data-post='<?php echo $postData; ?>'
                                                	type="button" title="<?php echo __('Add to Cart') ?>">
                                            	<span><?php echo __('Add to Cart') ?></span>
                                        	</button>
                                    	<?php endif; ?>
                                	<?php else: ?>
                                    	<?php if ($_product->getIsSalable()): ?>
                                        	<div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                    	<?php else: ?>
                                        	<div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                    	<?php endif; ?>
                                	<?php endif; ?>
                            	</div>
                        	</div>
                    	</div>
                	</div>
                	<?php echo($iterator == count($product_collection)+1) ? '</li>' : '' ?>
            	<?php endforeach ?>
        	</ol>
    	</div>
    	<?php endif;?>

Step 3:

Create routes.xml

app/code/DCKAP/BestSellerProducts/etc/frontend/routes.xml

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
	<router id="standard">
    	<route frontName="bestseller" id="bestseller">
        	<module name="DCKAP_BestSellerProducts"/>
    	</route>
	</router>
</config>

Step 4:

Create a layout to render the block and view file.

app/code/DCKAP/BestSellerProducts/view/frontend/layout/bestseller_index_index.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
	<body>
    	<referenceContainer name="main">
        	<block class="DCKAP\BestSellerProducts\Block\BestSellerProduct" name="best.seller.products" template="DCKAP_BestSellerProducts::bestsellerproducts.phtml"/>
    	</referenceContainer>
	</body>
</page>

Step 5:

Create a controller to check the best seller grid.

app/code/DCKAP/BestSellerProducts/Controller/Index/Index.php

<?php
namespace DCKAP\BestSellerProducts\Controller\Index;

use Magento\Framework\App\Action\Context;

class Index extends \Magento\Framework\App\Action\Action {
	private $pageFactory;
	public  function __construct(
    	\Magento\Framework\View\Result\PageFactory $pageFactory,
    	Context $context)
	{
    	parent::__construct($context);
    	$this->pageFactory=$pageFactory;
	}

	public function execute()
	{
    	return $this->pageFactory->create();
	}
}

Step 6:

Install the module.

Now, go to the browser: Type your Magento Store URL/Bestseller

Magento 2 Bestseller Product Module

Note: We can also call this block on the CMS page with our custom CSS.

{{block class="DCKAP\BestSellerProducts\Block\BestSellerProduct" 
template="DCKAP_BestSellerProducts::bestsellerproducts.phtml"}}

Bestseller products help in quickly identifying the top-rated products in an eCommerce store. You can now easily display the bestseller products using the Magento 2 module. We hope this blog was helpful to you. If you have any queries, please feel free to leave a comment below.

 

 

8 Irresistible Reasons To Migrate To Magento 2

$
0
0
Reasons-to-Migrate_banner-Feature Image-Final

There are over 240,000 shops using Magento 1.x.  After the release of Magento 2 most of the Magento merchants expressed the same thought – Why should we move from Magento 1 to Magento 2?

Magento 2 – An Irresistible Digital Commerce Solution

All good software platforms continue to evolve based on the changing business needs. Magento 1 is a successful eCommerce platform. In fact it is #1 PLATFORM IR TOP 1000 – 2015 and #1 PLATFORM IR B2B 300 – 2015.

Magento 2 is the next natural step in the evolution. It has been designed to overcome some of the key challenges in Magento 1.

1. Modernized Technology Stack

Magento 2 has upgraded the minimum versions of the technology stack. This means for e.g. that PHP 5.5 is the minimum version supported. Likewise MySQL 5.6, HTML5, CSS3 are now standard.

2. Better Performance and Scalability

The most important feature of Magento 2 is the built-in full page cache. This FPC supports varnish as back-end.

The load time for the home, product and category pages on the first view will be fast (less than 1.5 sec per page) and faster when the cache is enabled (less than 0.75 sec per page).

1

Magento 2.0 is also compatible with varnish 4, and the HHVM 3.6 which enables to compile PHP code on the fly. Magento 2 will be faster than Magento 1 because there’s a lot more front-end stuff that gets pre-compiled or done with AJAX in Magento 2.

It is possible to do database sharing by functional area. (i.e.) the product information is stored in a different DB server and this retrieves product information faster for users who are browsing for that information.

On the other hand, check out information can be stored in another DB server, making check out process smooth and seamless.This enables scaling.

3. Pages Load Faster

Magento 1.x need dozens of JS to be loaded just to build a single page. This has been reduced in Magento 2 making the page load faster.

JavaScript management has been improved with the move from prototype JS to JQuery and Require JS. JavaScript Bundling has also been implemented to reduce the page load time. 

4. Smooth Customization

The code base has been re-structured so that everything specific to a module resides under a single directory for that module. Magento 2 now uses the defacto PHP package manager, Composer (https://getcomposer.org/), to manage the installation of modules.

The business logic and presentation logic have also been separated so that it is easy to customize and maintain customization even when product patches are installed. 

5. Seamless Integration of Third Party Modules

Magento 2 has published well-defined APIs that serve as interface to modules.

This ensures that code changes within the module do not affect external modules and vice versa. This helps in customizing and enhancing the modules.

6. Clean, Modern Code Base

The bad and legacy code is removed in Magento 2. There’s no easy way to leave the non-optimized code in place for Magento 2 sites.

Reasons-to-Migrate-to-Magento-2-Final

7. Easier Installations and Upgrades

Magento 2 has been designed to make installing patches and upgrades easier.  This greatly helps merchants because it is important for them to keep upgrading to the latest versions in order to enjoy the latest product features and functionalities. Easier installations also enables smooth installations of security patches improving site security.

8. Minimizes Testing Efforts

Magento 2 has been developed  using modern automated test strategies. This means that developers can now write test cases to ensure that the customizations they have done has not broken any of the core functionalities .

Now functional testing can be done using Magento Test Framework (MTF).  MTF is an open source cross-platform solution (that is, does not depend on a specific operating system).  MTF enables you to quickly develop functional tests for the Magento application. These tests can be performed at any time. You can run a single test independently, many tests together (that is, a test suite), or you can run all available tests.

MTF minimizes the effort of user interaction testing. 

Now is the Time to Migrate

Merchants are embracing Magento 2 and if you are looking to stay at the top of your game, NOW is the time to do the upgrade.

It is best to go with Magento 2 trained Solution Partners and who have Magento Certified Developers in the migration team. Such partners understand the complexities and intricacies of migrating from Magento 1.x to Magento 2.

Magento 2 Abandoned Cart – The Definitive Guide

$
0
0
Magento 2 Abandoned Cart

Introduction

Magento 2, being a popular and powerful platform in eCommerce, has a number of extensions that serve to enhance the user experience and contribute to the overall performance of several online storefronts. The Magento 2 Abandoned Cart is one such extension. It is one of the most eCommerce friendly extensions which eliminates the loss in revenue by interacting with your customers. The following article takes you through the benefits of the Magento 2 Abandoned Cart Extension and how it can help your eCommerce venture grow more:

What is an Abandoned Cart?

Abandoned cart refers to lost revenue to your business when a customer adds a product to their cart and exits the website without purchasing. Recent surveys have found the global average shopping cart abandonment rate to be 70%. This means you are likely to lose 7 valuable prospects out of every 10 customers who visit your online store. So, what shall you do to protect your business from such a situation? How do you manage these abandoned carts in your online store? Well, you have a practical solution right away.

 

Abandoned Cart Rate

 

The only effective way to recover the lost revenue is to make those prospects return to your shop through targeted abandoned cart and follow-up emails. Abandoned cart emails have a great impact on sales which has an average open rate of 41% and click-through rates of 39%. Magento 2 abandoned cart extension is a great solution for your online store to transform incomplete transactions into successful deliveries through personalized auto-reminders to customers.

The end result of this is to bring customer’s attention to their dropped out carts and convert them into completed purchases once the notification email is sent. Even though we see a number of plugins that try to solve this problem to an extent, I recommend you to try abandoned cart email extension for Magento 2. Before knowing further about this extension, you should be aware of how abandoned cart affects B2B and B2C.

Why an abandoned cart extension necessary for B2B and B2C?

A B2B customer is unlikely to make a quick decision as in a B2C environment. The decision-making process is very gradual when it comes to B2B where the customer is already aware of their requirement before they step into your eCommerce store. Considering the B2C segment, the decision is made by an individual whereas in B2B it is taken by the whole organization.  B2C online storefronts are designed to make a purchase on a smaller scale where the user’s purchases for themselves. B2B users play a vital role here by differentiating themselves as they execute a purchase on a large scale for a company/business entity.

Abandoned cart B2C vs B2B

 

The loss in revenue that occurs in a single abandoned cart from a B2B site is enormous than a B2C store. In B2B, a well-established relationship is built before a user visits the eCommerce store. Abandoned cart rates may appear to be higher in B2C as there is a boundless number of individuals who visit an online store to purchase millions of products per day but, they do not incur huge losses to the B2C business when considering a single abandoned cart. The revenue loss multiplies for B2C in the long run which also creates panic and an urge for a solid solution among the eCommerce business owners.

Now that you know the need for this profitable extension to restore losses in B2B as well as B2C, It is also necessary to know what purpose and other beneficial features that it brings to your business. Here I have listed the top-most features/benefits and tips to target potential customers using Magento abandoned shopping cart extension.

Magento 2 Abandoned Cart Features/Benefits

Automated Emails

One of the primary benefits of this extension is to recover the lost sales by sending follow-ups and gift coupons through automated emails. There are situations where the customer accidentally leaves the website without purchasing, in such cases, sending automated reminders about products will help motivate them to complete the online transaction.

Abandoned cart rules allow you to filter the audience based on customer type, store, and specific cart items. As a result, you will end up creating unique rules for different visitor segments, enabling you to acclimate the extension making it effective to your business model.

Personalize Magento abandoned cart email to encourage customers and provide them a conviction of your services on which they can rely on. Specifically targeted emails to the customers through this way will add more revenue and create loyalty towards your business.

Track & Measure

Analyze the performance of the email campaign whenever the customer takes action. Tracking comes handy when you provide the email campaign details in the “Analytics” tab. You can also monitor the abandoned cart items through the recovery links in the campaign. Google Analytics gives you the possibility to analyze how many customers have been converted into buyers and eventually, lets you gain experience to strategize effective email campaigns in the future.

Customized Email Templates

This powerful extension allows you to customize emails by analyzing customer’s behavior and deliver them tailor-made designs to boost sales. You can design your own customized abandoned cart email templates for an email campaign. This can include a list of abandoned items, a short description, and a discount code along with a strong call to action button which urges the customer to complete the purchase.

Shopping Cart Recovery

The Magento 2 Abandoned Cart Email extension is unimaginable while converting website visitors into returning customers. A notification is sent to the users with an attractive discount code asking if they wish to continue with the checkout process. The extension makes the process easier for the customers by directing them to the ‘Checkout Now’ page where they can complete their orders smoothly.

Abandoned Cart Blacklist

Blacklist feature in Magento abandoned cart email extension is for improving the customer experience where you can add particular customers’ emails to blacklist to restrict sending reminders to them. An import option is also available to fetch the list of customers who should be added to the blacklist. Finally allowing you to eliminate a number of emails from your campaigns to enhance efficiency.

Boost Sales with Coupons

It is observed that discounted codes are helpful in attracting potential customers who engage in online shopping. Adding coupons with expiration to your emails will motivate your users to complete their transaction. Customize your coupon based on the type, priority, and discount you wish to offer to various types of customer base. You can even set a minimum cart value before the coupon is enabled. Magento abandoned cart email enables administrators to create unlimited coupons with rebate codes. These coupons grab the attention of the online store visitors and allow them to complete their purchase on the abandoned item successfully.

Easy Configuration

Abandoned Cart Emails extension helps you to get rid of attempts to sort out intricate follow-up email rules and extension settings. This Magento 2 abandoned cart recovery is very easy to configure in backend with transparent parts of each function. Having a straightforward configuration and an intuitive interface, it allows you to recover abandoned cart email with just one-click, thereby scaling-up the conversion rate and multiplying sales for your store.

Email templates for Abandoned cart

This is a perfect example of an abandoned cart email with skilled copy-writing, strong CTA and personalized content.

 

Abandoned cart email template

 

Here’s another example of an abandoned cart email that lists out the cart items along with personalized content for the customer.

 

template abandoned cart

Conclusion

An abandoned cart email extension is inevitable for any B2B or B2C business to recover the lost revenue. Our Magento abandoned cart email extension will work like a charm to enhance any size of business that operates in the Magento platform. Brand loyalty and customer experience will also upsurge with personalized mail content through this extension, making way to a successful eCommerce business.

Talk to our Magento development team at DCKAP to convert your abandoned cart into valuable relationships with customers and skyrocket your sales revenue. We are more than happy to improve your business and see our clients prosper.

References

A Complete Guide To Magento Development and Design

$
0
0
Magento Development and Desin

Magento is expected to deliver $224 billion in revenue through online sales by 2020. Being the most preferred platform in the eCommerce industry, Magento will be able to achieve such numbers in revenue through a well developed and aesthetically designed online store. Magento Development and Design plays an important role in determining the success of your Magento 2 website. Read more to explore the number of must-haves to be considered when you have decided to design and develop your Magento 2 store.

Magento Design – The Essentials

The First Impression

Initiate the design process by brainstorming how you want your online store to appear from the end-user perspective. Aesthetics is one of the primary aspects a customer will expect while entering your website for the first time. Ensure your website stays a champion which refuses to give an opportunity for your customer to bounce from your website and provide business to your competitor. Make sure it has all the necessary aspects of the user experience, specifically user-friendly catalog menu, detailed product catalog, advanced search functionality, flawless shopping cart experience, and easy one-step checkout process.

Magento 2 Theme

Themes are the most essential part of a website that determines the look of your online storefront. There are numerous eCommerce ready themes that let you add custom templates, better layouts, and unique style to your Magento 2 website. Simplified installation process is an added advantage in Magento 2 themes which also include a step by step installation guide to make you feel no less than an expert. A Perfectly designed Magento theme will create a positive impact on your business.

Choosing the Right Theme

This tedious task is easily accomplished if you consider these three critical elements for your Magento store.

  • Consistent color is one of them that gives a very good appeal to you as a brand. This is the reason why many developed brands use colors to represent their industry. The food industry predominantly uses the red color to showcase their brands. For example KFC, Kellogg’s, Coca-Cola, etc. Likewise, your Magento 2 theme should have a consistent color to make your customers recognize your brand.

 

  • Good font choice, a primary element among the three, that adds a professional look to your website. A font equipped with clear, legible and professional font style will provide accurate information to your customers. Choose a theme that goes in hand with your brand guidelines and maintain the same font throughout.

 

  • Proper Visual hierarchy of your website content is the third and most important element that makes way for choosing the right theme for your business. Prioritize your website content to communicate your business objectives with your website visitors. This approach clearly lets you convey all of your website information and helps to create a better user experience. Choose a theme that has options to let you organize your website information at ease.

Voice Ordering

The next-generation feature of the Magento theme is voice ordering. Arising growth in artificial intelligence has resulted in voice assistants and human-friendly voice search features. Magento 2 themes allow you to perform voice ordering that benefits and resolves problems for a disabled person. This, in turn, increases the chances of users who have such accessibility issues, thereby rewarding your online store with more completed orders.

Theme Customization

Customization provides the utmost comfort to any online store owner who can choose, modify and remove any specific feature required to their business needs. The factors responsible for achieving flawless customization involves the nature of your business, size of business and customer base. Such customization can be implemented through Magento 2 Themes which are available for any type of business that ranges from free to paid Magento themes.

Responsive Design

A website that lacks responsive design tends to lose its trust from 94% of the website visitors. Another study reveals that websites specifically designed for mobile have seen a 62% increase in sales. The need for responsive design in today’s world has made Magento to prioritize this need for every eCommerce store. The customer base in your business will be accessing your online store through a myriad of devices. Magento’s mobile-first approach made its themes adjustable to any size of screens of users. This unique responsive design creates opportunities for better search engine rankings, quality content with relevance to the user’s query, and more traffic to your Magento website.

Vitabilis

Top-Notch UI/UX

Magento 2 becomes so powerful when the user interaction comes into play. After being convinced with your Magento store design and theme, the user will look for easy navigation and valuable information on your website. It is of primary importance to get the attention of the user during the shopping process. Below is a list of hindrances that affects the engagement of the user with your online store.

 

  • Make it Simple – Overcrowding your product grid will scatter the user’s attention. Do not list too many products and make the user experience discomfort in finding the required product. Display products with details restricted to a single product alone. Build a Strong and concise path to create a natural sales funnel that directs the user to complete the checkout process.

 

  • Rich Images – Use informative product images with high quality to attract customers. A customer will expect images from various angles and dimensions. You can also choose to provide them additional features to customize products before making a purchase. This will enhance the user experience to the highest level possible.

 

  • More Payment Options – Never create a frustrating shopping experience by focusing on fetching customer information during the checkout process. Your goal is to close the sale on your Magento store. Instead, Provide more payment options to let them decide their preferred payment method.

 

hot-tool

Prioritize Call-to-Actions

Call-to-Action (CTA) is an additional feature to a webpage that makes the user/customer to take any action on your website. It can be a purchase, login form, signup form or any subscription. A website with poor CTA is likely to lose the majority of its sales and conversions. To protect your business from such loss, make sure the CTA’s are well placed, have a strong text for a positive decision from the customer, and are easily accessible. Make navigation easy for your customers and direct them to specific parts of a website through perfectly made CTA buttons.

solid

Make it Conversion-Friendly

Placing your promotional blocks and sliding banners at the right place will increase sales for your Magento website. Ensure your website is optimized for SEO and incorporate social media links to enhance user experience and to improve brand visibility. Reviews, feed-backs and customer ratings included in your website are an added advantage to gain more trust from your website visitors.

Convert these website visitors to customers by strategizing your unique selling points such as easy return policies, risk-free shopping, and free delivery charge for products above certain price rules. Your conversion-friendly Magento store is ready if you assimilate all the above options with the help of professional Magento website designers.

Magento Development

Prior to exploring much about Magento development service, You need to understand the need for it and be ready to answer the question “Why?”

Why Magento Development Service?

Magento development Service is essential for the proper functioning of your website and to provide a seamless shopping experience to your customers. Developing a fully-functioning Magento 2 website involves years of expertise, knowledge on the Magento platform and certified Magento developers. The advantages of Magento development are improved speed and performance. The dual advantage is achieved only when the website is equipped with proper SEO, profitable extensions, better hosting and QA services. Now explore these advantages of Magento development service in detail.

Magento Development and Design

Improved Speed

According to a research done on online retail performance, a 100-millisecond delay in website load time brings down your conversion rate by 7 percent. Speed becomes an integral part when it comes to the advantages of Magento development.

Once you install Magento for your online store, it will be in default mode. Use this default mode to test and configure your Magento store. Switch to production mode once you decide to make your website open for customers. Production mode is optimized to provide better performance of the website. Proper utilization of production mode will give you the most out of user experience.

Advanced SEO Features

Your Magento  website should rank better in the search engines in order to reach your customers organically. Magento platform offers Advanced SEO Features to your business that improves your website ranking in search engines. Some of the most important SEO features of Magento 2 are:

  • Rich Snippets – Rich snippets are data pulled from the structured data present in the HTML of a website when a search query is performed in Google. The pulled data is displayed as the top relevant result in the SERP(Search engine results page). This rich snippet feature is supported in Magento 2 by default. This is an added advantage to your Magento 2 website that facilitates this feature without the need for an external plugin or extension.

 

  • Auto-Generated Meta tags – To reduce the burden of an SEO expert, Magento 2 has come up with this new feature that adds metadata for products. You can configure this under the Product Fields Auto – Generation option available inside the catalog menu. Meta-title, meta-description, and meta-keywords are automatically added once the default template has been created. This feature reduces effort towards SEO for large stores that have a vast product list.

 

  • XML Sitemap – Images contribute to generating traffic to your website. Adding images to the sitemap is quite essential when a search bot indexes the website. Magento 2 automatically adds images to the sitemap enabling your website to rank better in search results. Another added advantage is that search engine crawl with zero-error is now achievable through automated submission of your XML Sitemap to Robots.txt.

Code Re-usability

As a best practice, Reuse codes and avoid repetitive/duplicate codes. You can split the code based on functionality and store it as logical units to increase code re-usability. By doing this, your Magento website is easy to maintain from the development perspective.

You can use the code for the future development of any functionality or themes if you create it keeping a generic solution in mind.

Profitable Extensions

Most of the eCommerce business deal with inventories and require real-time inventory management solutions. Managing the cart and orders has been a tedious process in large online stores that deal with large product categories. Extensions in Magento 2 help you in identifying and solving these requirements. Magento 2 has several extensions that help you improve the performance of your online store with a one-click installation. Integrating these extensions on your Magento 2 website will help you with:

  • Inventory Management
  • Transaction Log Management
  • Update inventory through push Notifications
  • Order Management
  • Multiple-store support
  • Recovering Abandoned Carts

Choose the right Magento Hosting Service

The hosting choice for your Magento website should be reliable and provide enough support to your business during critical needs. Always make it a priority to consider these factors before choosing a Magento Hosting service:

  • Scalability – Adequate resources to handle the current situation is not enough for your website. You might not know when a server crash will occur due to a lack of server resources. This will happen often in eCommerce stores that handle seasonal sales. Fast server scalability will save your Magento 2 store from such unexpected situations.

 

  • Dedicated Support – Avoid frustrating situations where you immediately require customer support from your hosting provider to solve a server error. Be equipped with a hosting service that provides dedicated 24 x 7 x 365 support with skilled professionals to solve your problem immediately.

 

  • Server Uptime & Response Time– These two factors are responsible for your customer to experience faster load time once they enter your Magento 2 store. Go for a hosting service provider who guarantees 99.9% server uptime and has a fast response time to enhance the user experience. Gain trust among your customers by providing a Magento 2 website that loads lightning fast.

I hope these factors will be your preliminary requirements before deciding a hosting provider. Now you will be able to choose the right hosting service provider for your Magento 2 website.

Integration Services

Unlock unlimited possibilities by integrating your Magento 2 website with ERP(Enterprise Resource Planning) and CRM(Customer Relationship Management) software. Reduce the manual effort involved in entering the information for every customer activity and boost productivity. Your Magento store has plenty of integration options to automate the repetitive manual operation and replace them with excellent customer service.

  • ERP Integration – Integrate your Magento 2 Store with any ERP to realize the full potential of automation.  Automate your core processes by connecting your business endpoints with different areas of an enterprise. Implementing an ERP solution to your Magento website will result in lower operational costs, improved agility and consistent infrastructure.

 

  • CRM Integration – Popular CRM solutions like Zoho, Salesforce, and HubSpot can be integrated with your Magento 2 website to improve employee productivity.  Bridge the gap between your customers and the sales team to effectively improve communication through CRM Integration. Customized marketing activities can be performed by analyzing reports, dashboards, and analytics on customer data.

QA Services

The Magento store owner must ensure the proper functioning of the website throughout the eCommerce journey. Quality assurance is of prime importance to any online business. Identify defects and fix them with the help of the best Magento QA service providers. It is necessary to monitor the quality of the development process through multiple QA testing such as:

  • End-to-End application testing
  • Performance Testing
  • Compatibility Testing
  • Automation Testing
  • Integration Testing
  • Payment Gateway Analysis
  • Regression Testing
  • Ensuring all the above tests being done, The quality of your Magento store is assured.

Take the right decision now

A perfectly designed and technically developed Magento website is a dream come true to many Magento store owners. Obtain all the above features and solutions from DCKAP, a Magento development company with a team of certified Magento professionals and 14+ years of expertise in successfully delivering projects. Our dedicated team will customize your Magento store as per your business requirements and ensure you stay ahead of your competitors.


Magento 2.4 Features & Updates: What You Need To Know?

$
0
0
Mgaento 2.4 Features

We know that during this pandemic, brick and mortar stores are aiming to make a footprint in digital commerce. This is one of the primary reasons why Magento has come up with their new version which in-turn focuses to help merchants to capture new opportunities in the current commerce scenario and also helps them in preparing for the future.

MAGENTO 2.4 has released and the features listed ensure a win-win for both merchants and customers.

Lets us dive into Magento 2.4 Features and enhancements for both open source and commerce edition:

This release includes all the improvements that were included in Magento 2.3.5-p1, with 100 new fixes to core code and 30 security enhancements.

HIGHLIGHTS

The following are the highlights of Magento 2.4 Features:

Purchase Approval Workflow

New approval workflow functionality has been introduced as an important highlight in Magento 2.4 features. This functionality helps us to enable B2B companies to customize their approval process by using a simple form.

Seller Assisted Shopping

This feature allows merchants to login to their customer’s website to improve the customer experience and deliver exceptional services. With the help of this functionality admin can help the customers in multiple ways:

→ Troubleshooting in any part of the buying process

→ Helping customers through any custom functionality

→ Also, admin can place orders and request quotes in order to save customers time.

In-store Pickup

This In-store Pickup in Inventory Management which is formerly known as Multi-Source Inventory (MSI) allows merchants to select the physical inventory locations that are eligible to be the customer’s pickup location. It also facilitates customers to quickly find the near-by location to pick up during their checkout process.

New Media Gallery

Creating content, maintaining, and keeping it fresh can be time-consuming. Magento 2.4 comes with a completely rebuilt Media Gallery that performs up to 30 times faster and strengthens our integration with Adobe Stock. We can now:

  1. Easily maintain the images by knowing how often and where those images are used throughout.
  2. With new image attributes, it is easy for us to search and filter the images.
  3. The updated Adobe stock Integration will move image licensing and management workflow into a new media gallery that will save time.

PWA Development

Magento has introduced the latest version of PWA Studio which introduces a new Venia storefront. As many of them including merchants, partners, and developers adapt to PWA Studio Magento is continuing to make it faster, and more cost-effective to launch PWA Studio with Magento.

SECURITY AND PLATFORM UPDATES 

Security-only patch  (M2.3.5 p2)

Customers can now install a single security patch as a fix without applying hundreds of all other functional fixes by installing this Magento 2.3.5.2 patch.

Substantial Security Enhancements

To avoid certain vulnerabilities Magento had given additional features that protect your admin which includes

  • Over 30 security enhancements that help close Remote Code Execution (RCE) and Cross-site Scripting (XSS) vulnerabilities.
  • Two-factor authentication (2FA) is now mandatory for the Magento Admin. It is activated by default and cannot be shown.
  • It also secures Cloud SSH Access by providing Multi-factor Authentication.
  • Template filter strict mode is enabled by default.
  •  Data rendering for UI data providers has been disabled by default in order to restrict malicious users to execute arbitrary javascript.
  • New Security Policy.

Platform Upgrades

  • PHP 7.4 support introduced and 7.1, 7.2 has been deprecated.
  • Though PHP 7.4 uses the latest PHP unit testing framework, the PHP unit 9.x is supported and PHP unit 6.5 is deprecated.
  • ElasticSearch 7.6x is now the default catalog search engine. Versions 2.x has been removed and 5.x and 6.x have been deprecated.
  • MySQL 8.6 support introduced and 5.6 is no longer supported.
  • MySQL Catalog Search engine has been removed and the Elastic search engine has been replaced by default. All the merchants must have to install the elastic search engine to use Magento 2.4
  • To reflect the transitioning of the Zend Framework to the Linux Foundations Lamda project, Zend Framework has been deprecated from Magento 2.4.
  • Core Integration of the Signifyd Fraud Protection Code has been removed.
  •  Braintree integration from the core has also been removed.

OTHER ENHANCEMENTS

  • With this release, all the third-party payment methods have been removed.
  • Paypal Express checkout integration has been migrated to the latest Paypal Javascript SDK.
  • Everyone must use the command line to install or upgrade Magento that is Web Setup Wizard has been deprecated.
  • Composer update plugin automates all the previous manual process.
  • Many Optimization on Redis performance.
  • Faster quick order and reordering that is the increase of 25-30% add to cart performance.

So finally the new release to Magento 2.4 will surely offer amazing growth and hosting features for your store. Use this to your advantage and it will surely help you make the mark you wish to in the world of Digital Commerce.

 

Cyber Monday And Black Friday Sales: How To Get Your Magento Store Ready?

$
0
0
Black Friday sales

The countdown has finally begun for that time of the year when you start prepping up marketing strategies to catch up with the euphoria of Cyber Monday and Black Friday sales. With 93.2 million buyers, 2019 witnessed online shopping sales hitting an all-time record of $7.4 billion on Black Friday, amounting to a 14% ascent in online shopping.

As we all know, 2020 has turned out to be a contrast to 2019. However, here comes the reason for you to breathe a sigh of relief. As per Adobe Analytics, Black Friday and Cyber Monday sales are expecting a 20% upsurge in 2020. Despite the growing concerns around the COVID-19 pandemic, eCommerce is expected to witness an upward hike by October, which is likely to even surpass the entire eCommerce transactions of the whole of 2019.     

So, you need to be prepared to cope up with the rush by choosing the right eCommerce platform. Make sure that your choice regarding the perfect eCommerce platform should be on fleek to save yourself from any last-minute muddle.

Here’s how Magento 2.4 becomes your perfect eCommerce platform for Cyber Monday and Black Friday Sales

With Black Friday and Cyber Monday around the corner, eCommerce sales are predicted to witness huge traffic like never before- the two crucial days to attract customers. With the increased and efficient performance of Magento, you can convert them into regular customers as well. Here is how Magento can be your lifesaver.

Magento PWA Studio

With new updates, Magento 2.4 has made great advancements in developing progressive web applications, i.e. PWA. This innovative technology curates the development of app-like sites that are really quick in their functioning. It is compatible with any device or browser. The responsive design of PWA makes it mobile-friendly, which is inevitably the need of the hour. According to Statista, by 2021, 53.9% of eCommerce sales are expected to be carried out through mobile phones.

It is only natural that on days like Black Friday and Cyber Monday, your potential customers will be on a shopping spree as expected. The best way that you can make them glued onto your eCommerce site is by providing unparalleled navigation through your site without creating any inconvenience.

So Magento 2.4 comes with PWA integration that would reward a better experience for the users, which can eventually benefit your eCommerce sales. With the Magento PWA Studio, you will be freed from the expenditure of managing native apps, thereby balancing your expense. You just need to upgrade your website into a PWA. Another huge advantage that awaits you is its offline feature, users can easily check out the eCommerce store if they have paid a visit before.

By providing a mobile-app experience, user’s convenience is ensured. It enables the cross-platform feature. So, with single web code, your website can be run on different platforms. Magento PWA enhances the loading speed of your website through which you can lure more customers as well by providing them a credible shopping experience.

Two-Factor Authentication

With the increase in web traffic, security has been a major concern that could bog you down. Despite Magento being a safe and secure platform, it has come up with the exceptional feature of two-factor authentication or 2FA with the help of which you can double your security measures. By enabling this new feature, Magento Admin UI can only be accessed with two steps of authentication, thereby enhancing the security measures of eCommerce sites.

2FA comes into place by default and for obvious reasons, it shouldn’t be disabled. Through the two-factor authentication, Magento 2.4 adds an extra measure of security for your eCommerce site. This additional security measure will prevent any sort of unauthorized access of the malicious user to your website. As the busy days of Black Friday and Cyber Monday are fast approaching, the last thing that you have to be worried about is security.

Inventory management

One of the most essential features of Magento, inventory management feature can save you from a great deal of embarrassment. For any eCommerce business owner, going out of stock is undoubtedly the scariest nightmares on such busy days as Black Friday and Cyber Monday. But, the advanced warehouse management tool availed by Magento 2.4 can avoid such unwanted hurdles.

With this tool, you can keep track of your inventories in different warehouses. Thus, you can make sure that enough stock is available to boost sales. All you have to do is enable the ‘Manage Stock’ option, and then the product will automatically track the status of stock’s availability. You will receive regular updates as and when the customers shop. Moreover, Magento developers offer automated integration between ERP, CRM, and eCommerce sites, thereby enabling you to have a better understanding of activities along with enhanced management.

You can also track the customer’s shopping history and provide them personalized shopping experience, which can eventually boost up sales. Magento equips you with the required tools to ensure you will never face an out-of-stock situation. You can foresee any probable crisis beforehand and take precautions so that you can earn brownie points among the customers. With this feature, you will be better equipped to deal with the rush of Black Friday shopping spree without fretting over the availability of stock.

In-Store Pickup Delivery Method

As days pass by, the shopping habits of customers are witnessing gradual changes. In-Store pickup, which was earlier christened as Multi-Source Inventory, is crucial for merchants as well as customers. With this option, you can display the location of your brick and mortar store on Store Locator. Now, the customers can place the order online and collect it from your store. This feature of Magento 2.4 serves two purposes- increase online traffic to your eCommerce website as well as foot traffic to your store.

Black Friday sales resorting to In-Store Pickup and curbside shopping is expected to gather pace amid the current situation. This phase can be utilized to boost your sales through the In-Store Pickup. With this feature, your sales activities can gain momentum on such busy days.

The In-Store Pickup method will eventually help you gain more popularity since your store will be highlighted on a customized Google Map that can be displayed anywhere on your site. With the HTML5 code of this customized map, customers will get a clear idea about their distance to the stores around them and choose the store that is closer to them. Their convenience will ultimately work in your favor, adding more regular customers to your growing list. You can use this as an eCommerce strategy to boost your sales. 

Product Recommendation

Efficient product recommendation tool is imperative to keep the customers glued to your eCommerce site. This tool can be of great benefit during days like Black Friday and Cyber Monday when you can experience heavy online traffic. 

Powered by Adobe Sensei, product recommendation feature of Magento 2.4 utilizes machine learning algorithms and artificial intelligence to gather an idea about visitor’s search and shopping history. Thus, Magento 2.4 provides personalized product recommendations. Subsequently, it can also add up to your advantage of gaining more regular customers even after the euphoric shopping season wears off.

With this feature, recommendations can be displayed on the pages of each product. Once a customer comes searching for that particular product, not only does the person reach the target page but also gets hold of the recommendation displayed on that particular page. There is no better eCommerce strategy than this to woo customers into buying additional items.

On a busy shopping day, you can expect multiple shoppers to go through the same process. You can thus provide a personalized shopping experience to each customer, attracting them more and more to your eCommerce site even on regular days.

Is your Magento store all set for the holiday season sales? Here is your checklist!

Keep all your worries about the growing pandemic aside, and gear up for the festive mood of Black Friday and Cyber Monday. You are about to reap a boost in sales. There is no better time than now to develop strategies to woo online shoppers.

  • Ensure unparalleled web experience

The most important factor that directs the customers to your eCommerce website rests with the web performance. Since both; Black Friday and Cyber Monday would result in increased traffic to your eCommerce site, it should be fully equipped to handle the upsurge. 

One of the basic factors to look into is the time taken to load your webpage. Easy navigation and sufficient website speed hook the potential customers to your site. According to Google, two seconds is the accepted time to ensure website acceptability. This factor is necessary, especially during Black Friday where you can grab customer attention.

  • Proper understanding of inventory

You shouldn’t miss out on any information regarding your inventory. As you expect a great rush, you can’t afford to face the panicky ‘out-of-stock situation’. It can affect your future business and customer retention as well. Keeping your inventory in check is one of the foremost eCommerce tips that you should adopt in order to make the most out of Black Friday sales. The proper usage of advanced warehouse management systems can help you wriggle out of such disasters.   

  • Marketing strategy

Marketing is one of the strongest pillars of any business, which you cannot overlook. An ideal marketing plan for Black Friday sales can hike your sales manifold. With proper eCommerce strategy, you can improve the SEO ranking of your website.

Effective use of email marketing, Google Ads, or advertising via Facebook can increase the visibility of your website among the masses. Providing gift cards is another smart move towards enhancing online traffic. Make your offers and deals hit the bull’s eye, pulling the potential customers to your eCommerce store.

  • Abandoned cart campaign

Abandoned cart campaigns can be your trump card to gain online traffic to your site especially during Black Friday and Cyber Monday. One of the most effective eCommerce strategies, the abandoned cart campaign can boost your Black Friday sales in ways you have never imagined.

As pointed out by Baymard, by improving the functionality of a site, its conversion rate can shoot up by 35.26%. So, sending abandoned cart messages through email or web push notification can serve as a reminder to those shoppers, eventually pushing them to land up on your eCommerce site.

  •  Search performance

An enhanced search performance creates a better shopping experience for customers. It helps in easy navigation through your eCommerce store instead of backing out midway. Ensure that your Magento store is well equipped to provide a friction-less search performance.

Also ensure that displaying maximum search results, instant search and autocomplete are intact. Additionally, maximum search results provision displays bestsellers, so the customers can get more idea about your reach in the market, subtly enticing them to search for more.   

Executing a proper eCommerce strategy highly depends on the capability of the eCommerce platform that you choose. Moreover, it also depends on the developers who design your website the way you want it to be. Now here comes the big question. 

Whom should you rely on?

Developing your eCommerce website effectively and efficiently requires your heart and soul in it. You can’t afford to go wrong in choosing the right eCommerce platform for your website. But you are in the right direction if you are to opt for Magento 2.4. So now, what’s next? Obviously, relying on the right Magento development team

Another question arises at this point- whom to trust? You can find a plethora of Magento development agencies when you browse. Be wise to choose the right one. Let’s look at some of the factors that could help you make the right decision.

  • Look for a Magento partner
  • Grab a look at the Magento portfolio of the agency
  • A good case study can open the door to their expertise in the field
  • A well-defined website can give a sneak-peak into their work and culture 

While making the decision on the Magento developers, be sure enough to ensure that your project will be safe in their hands.  

Why DCKAP?

With DCKAP, you can tick off all the tips from the checklist above making it the first and foremost reason for you to be on the right track. Taking its baby-steps in 2005, DCKAP has 15 years of experience in the field, placing us on the higher rung of digital commerce specialists. Our expertise in providing the right solutions have helped us in the successful completion of projects that best suit our clients. We, at DCKAP, offer you the best services that can help you gear up your eCommerce website.    

Amidst all the worries and changing predicaments, the two most awaited days, Black Friday and Cyber Monday are about to knock on your doors. Grab the opportunity and make the most out of them. Prepare your eCommerce website well in advance to the heavy online traffic that you are about to experience.

Going Digital: How Does Choosing Right B2B eCommerce Platform Help Distributors?

$
0
0
B2B eCommerce platform

“You can’t wait for customers to come to you. You have to figure out where they are, go there and drag them back to your store.”- Paul Graham

With the world becoming more and more digital, now is the right time for you to revamp your distribution methods. Embracing B2B eCommerce using the right B2B eCommerce platform will help you stay on the radar and grow further. According to Statista, B2B eCommerce sales are expected to bring in $1.8 trillion in 2023. And, as per Accenture, 86% of US-based B2B companies with over $500M in annual revenues have already implemented a B2B eCommerce solution. So, if you haven’t explored the digital space yet, what are you waiting for?

While you read this blog, you will get to know the reason behind B2B eCommerce being the next big thing for distributors. Also, what’s more? You are sure to have a better idea about the right eCommerce platform and how Magento 2.4 can come up with a solution for all your impediments. 

 

B2B eCommerce platform

Let’s start with the most basic question. 

Why Do Distributors Need eCommerce?

In a B2B environment, a distributor’s role is not just restricted to managing inventory. You bridge the connectivity gap between B2B manufacturers and customers by optimizing sales processes, reducing costs, and even offering post-sales services. 

With effective channelization of operations, you can accelerate response times and enhance brand reputation, refuting the general misconception about the distributor’s role being limited to stocking shelves and taking orders. In this fast-paced world, carrying out your activities from a brick and mortar store alone can be quite overwhelming. This is why adapting to the changing trends becomes imperative and eCommerce is the perfect way to connect with your potential buyers. 

So how can eCommerce benefit you? 

Transparency

As buyers have become particular about their shopping habits, transparency holds the key to your B2B eCommerce sales. It has the power to influence their decisions. You can provide accurate details about product availability, pricing, and any additional charges clearer than your brick and mortar store. 

All the information will be readily available for the visitors, reducing added efforts from both sides. A B2B eCommerce website will help you convey the exact idea about your sales activities, ranging from promotions to the minute details of your store. Maintaining a transparent website will also develop a trust factor among customers.   

Enhance visibility

Going digital will benefit you in bringing in more traffic with each passing day. By adopting specific strategies, you can increase your reach among the masses, making you a known name. With the implementation of proper SEO strategies, you can improve the search engine ranking of your eCommerce website. 

With the improved ranking, there are greater chances of potential customers visiting your website and by maintaining a reliable B2B eCommerce website, you can turn them into regular customers as well. Moreover, a strong web presence will enhance your brand reputation, thereby widening the business opportunities and triggering sales.     

Ensure speed and scalability

By expanding your business to cater to a large section of customers with B2B eCommerce websites, you will now be a part of the dynamic market. There is no better way than eCommerce if you are planning to scale up your enterprise. You can ensure speed and scalability through an efficiently designed website. 

Creating the least inconvenient shopping experience will automatically lead to a boom in sales. As obvious as it sounds, online traffic can be handled gracefully through eCommerce platforms rather than managing foot traffic via traditional methods. Improved search engine rankings and faster page loading rate will add up to enhance scalability. Proper scalability ensures managing your operations better, even as you witness unparalleled growth. 

Upselling and cross-selling 

Compared to the traditional distribution methods, upselling and cross-selling can bring in more revenue through the B2B eCommerce platform. You can display higher-priced alternatives to the products that are currently being considered by the customers. 

From email marketing strategies to displaying product recommendations, customers can be led to buying higher-priced or additional products. By creating an algorithm, B2B customers can be shown all the related products as well as the best-sellers. Through efficient upselling and cross-selling, you can also promote your products while luring them to buy more. B2B eCommerce platform

Customer experience

Distribution operations can be made easier with the right B2B eCommerce website. Through digital platforms, you can understand the shopping history of your customers. This, in turn, helps in providing a personalized shopping experience the next time they visit your website. 

Presenting dynamic pricing and online product catalogs can further strengthen your ties with your B2B customers. Quicker navigation, simpler check-out options, and multiple payment gateways together can help you gain more regular customers. Good experience would result in lower customer churn, which again indirectly heightens the profitability rate. 

Choosing to go digital is your first step to success. The next major step is the choice of the right platform to support your B2B eCommerce. There are a plethora of B2B eCommerce platforms for you to choose from. But choosing the right one makes all the difference.

Magento 2.4: The Right B2B eCommerce Platform

The commerce edition of Magento 2.4 has come up with exciting features for B2B eCommerce websites. The new features of Magento 2.4 are particularly designed to enhance the performance of the website, ensure security, and provide a better experience for the customers.

Purchase Approval Workflow

Specifically introduced for the Commerce edition, the Purchase Approval Workflow is one of the major features of Magento 2.4. Through the Purchase Approval Workflow, B2B companies can customize their approval process using a simple form. Approval rules will be designed according to the shipping costs, order value, and number of SKUs.

Verifying and managing customer’s order is more efficient, saving your time and effort. Approvers receive notifications when in need of a review, and can approve, reject, or even comment on the orders placed. Buyers will receive a notification at each stage, ensuring transparency.       

The timely notifications and intact processes will ultimately strengthen the buyer’s trust in you. Through the Purchase Approval Workflow, a very convenient way of purchase process comes to place, making it a win-win situation for both the parties. 

Seller Assisted Shopping

A perfect way to enhance customer engagement, the Seller Assisted Shopping feature strives to do away with any problems that the customer faces while placing an order. In case the customer gets stuck midway due to any problems or confusion, admins can analyze and solve those issues by accessing the customer’s account. 

With the Magento 2.4 commerce edition, your role as a trusted distributor becomes stronger, enhancing customer relations. Apart from troubleshooting, you can even enhance the customer experience by helping them create a wishlist. Custom functionalities like product configuration can be easily presented to the customer, which was otherwise possible only through a storefront experience.

Most importantly, Seller Assisted Shopping can save the time of your customers as you can place orders or create quotes on their behalf. Through this feature, the convenience of the customers is secured, a factor that could pull them into your B2B eCommerce website more often. Thus, indirectly this feature of Magento 2.4 can increase revenue and sales.

New Media Gallery

According to a recent study, the images that you provide can gain 94% more views from your customers. A perfectly organized B2B eCommerce website should include an equally organized gallery. As a distributor, you are most likely to have large inventory, so categorizing and arranging them is quite a task unless you don’t choose the perfect B2B eCommerce platform.  

A completely rebuilt feature of Magento 2.4, New Media Gallery is an improved version that can work 30 times faster. With an enhanced media gallery you can manage and sort media files on the server. Even though functionalities of the already existing media storage remains the same, this new version is integrated with Adobe Stock. With this integration, licensing stock preview image is made simpler. You can now license them from the media gallery itself.

New Media Gallery comes with an increased user interface and can be enabled through a simple process. You can now filter, sort, and search images without much effort. Assessing the storefront image usage with this tool is another added advantage. With the new image details that explain when and where images were used across pages or categories, you can easily manage images. 

Upgraded Search Performance

After landing on your website, the first thing that most customers do is search for the products. 76% of customers have stated that enhanced search performance is one of the three most important features that define customer experience. The commerce edition of Magento 2.4 supports Elasticsearch 7.6, which means the default catalog search engine is now Elasticsearch 7.6. It is not powered by MySQL anymore. 

Through this feature, searching for products in the catalog is much easier and simpler than before. Along with synonyms, stop words that are usually ignored by other search engines are supported by Elasticsearch. Language identification enabled in this latest release can predict text in any language, supporting searches in multiple languages.

B2B eCommerce platform

The search results are more accurate, thereby enhancing the performance of your B2B eCommerce website. Its algorithm sorts dates and numbers real quick, making the Elasticsearch 7.6 faster than the previous versions, providing an unparalleled end-user experience.    

Security and Performance Upgrades

The two most important factors of any B2B eCommerce website are its security and performance. B2B wholesalers, manufacturers, and distributors can scale up their operations with the Magento 2.4 security and performance upgrades. Among the major security enhancements in Magento 2.4, two-factor authentication enabled in the new version secures the admin portal from any malicious users. Magento 2.4 caters to over 30 security enhancements that could eradicate cross-site scripting and remote code execution vulnerabilities.

With a shift to Vendor Bundled Extension, all updates regarding your B2B operations are made available. Scope for scalability of your business is assured through Redis optimization that helps you to cope with increasing online traffic. Also, through this optimization, pages will load 43% faster.  

B2B eCommerce platform for distributors

Apart from these features for your eCommerce website, B2B integration is another factor that ensures the scalability of your business.

Integration Possibilities and Solutions for B2B eCommerce

B2B integration is optimizing, integrating, and automating all your operations that could enhance your connectivity with customers, manufacturers, and other trading partners. With proper integration solutions through Enterprise Resource Planning (ERP) and Product Information Management (PIM), the success of your entity is guaranteed.

With ERP integration, you can easily manage and coordinate with back-office functions connected to inventory, finance, or human resource. You will have a wider understanding of all areas of your business, a benefit that eCommerce puts forward which is otherwise nearly impossible. 

A Microsoft Windows-based software package, Epicor Prophet 21 or P21 ERP system assists wholesale distribution by zooming in on various processes including shipping, warehouse management, supply chain management system, and so on, which provides foundation for distribution. Order entry, accounts receivable, accounts payable, and order management are few among the intricate modules supported by Epicor P21.

Since distribution involves handling large volumes of inventory, you might get stuck with the huge data entry procedure. Here is where PIM integration comes to your rescue. It supports product catalog consistency while storing and managing information of products in a single database. Additionally, PIM enhances SEO ranking of your website as it calls for detailed and clear product information.

With the suitable B2B integration, reaching the pinnacle of success will not be an exaggerated thought. To substantiate this, let’s take a look at how Moody Price sets itself as a real-time example of ideal businesses transformation through the right Magento platform and integration solution.

  • What’s next?

Since your role as a distributor involves connectivity with manufacturers, wholesalers, and retailers, projecting your eCommerce website to cater to their expectations and customer satisfaction are the main ingredients for your success. Make sure you choose the perfect B2B eCommerce platform that would fit your needs. With the Magento features explained above and the right integration, you can ensure the scalability of your B2B eCommerce website. The most crucial part lies in the next step- selecting the right Magento developers.

DCKAP- Your One-Stop Solution

With over 15 years of experience, DCKAP works closely with you at every step, right from developing your B2B eCommerce website on the ideal B2B eCommerce platform to maintaining it to reach its full potential. Being the certified Magento solutions partner with expertise in providing the right service, our in-house developers strive to ensure that you host the perfect online store just the way you want it.  

In these changing times, adaptability is the doorway to success. It is time for you to move on from the traditional practices to embrace the new ones. With the right eCommerce platform, your rung in the digital arena will only scale up, securing you with a bright future. 

6 Irresistible Reasons to Choose Magento Web Design For Your eCommerce Storefront

$
0
0
Magento web design

The arena of eCommerce is experiencing massive changes that are eventually driving B2B/B2C merchants to go digital. The e-retail sector is expected to hit a revenue of $638 billion by 2022. In these changing times, moving to eCommerce is the best way for you to thrive. 

Setting up the online storefront alone does not ensure growth unless it is supported by a flawless eCommerce web design. Studies show that 90% of the customers will return to your website if they are guaranteed a seamless user experience through the perfect web design.

Good web design requires the best eCommerce platform to implement it. Among the numerous eCommerce platforms, Magento 2.4 tops the chart with its optimal features that provide you with the best eCommerce store that gives room for the perfect web design. 

As you read through the blog, you will get to know why the web design forms the heart of your eCommerce website, and how Magento web design can be at your service in providing all the features that you dreamt of your website.    

Magento web design for eCommerce website

Top 3 Reasons Why a Good Web Design Makes All the Difference

Exercising the power to either make or break your business, good web design is also the deciding factor that lures customers to your online storefront, increasing the possibilities for a higher conversion rate. 

Here lie the reasons:

Ensures Convenience 

With eCommerce gaining more attention, customers have plenty of online stores to choose from. But, what could make your eCommerce website their favorite rests with providing a convenient shopping experience that an efficient web design offers. Easy navigation, top-notch search performance, and a well-designed website ensure repeat customers with a decrease in bounce rates.   

An organized eCommerce website will present your business in a better light, increasing the trust factor. The responsive web design also increases your website compatibility with multiple devices ranging from desktops to mobile devices. Since the revenue from shopping via smartphone is expected to hit $420 billion by 2021, gear up your eCommerce website to hit the bull’s eye with the perfect web design.

Boost Sales

Finer web design will result in the proper managing of the product catalog. You can decide where to display your products or execute your promotion strategies in such a manner that the visitors will be left with no choice than to notice them. Indirectly, this can add to their additional purchase, boosting your sales.  

The ideal web design utilizes color coding in various CTAs or Call To Action buttons. Hence, you can enjoy the perks of the perfect web design as you can now effectively segregate primary and secondary CTAs using different colors. So, visitors can be easily guided through your eCommerce website, luring them to be regular customers. 

Boost sales with good web design

Increased Trust Factor

An eCommerce website with a flawless design and pleasing aesthetics will influence the customer’s perception of your brand reputation. This benefits in enhancing the trust factor among your customers. Sales are expected to witness a boost with the increase in brand reputation, while proving that the web design has a stronghold in increasing the revenue and sales volume.

An attractive and well organized online storefront will increase repeat customers. While it sets your store apart from the other competitors, you will not regret the expenditure incurred for putting up your well-designed eCommerce website as you will reap the benefits of the Return On Investments.

Make Your eCommerce Website Conversion-Friendly With Magento Web Design

For setting up an eCommerce website, you need an exceptional eCommerce platform that could provide your dream online storefront. As you are about to dive deeper into the digital space, you are likely to be surrounded by a wide number of eCommerce platforms. But among all these options, what makes Magento your perfect eCommerce platform that assures enhanced scalability and conversion rate of your business? 

1. Improved UI/UX

User Interface and User Experience are the heart and soul of any eCommerce website. An improved UI/UX leads to an upsurge in the conversion rate by 200% and 400% respectively. With simplicity as the key element, the UX/UI design strategy adopted by Magento paves way for easy navigation, a fully functional website, and an enhanced shopping experience.

An optimal UX/UI design will eventually increase customer acquisition, automatically leading to higher conversion rates. Through Magento 2.4, you can provide an unmatched user interface, catering to the target customers. Through the effective search performance aided by Elasticsearch 7.6 that supports partial search and multilingual searches, Magento 2.4 takes the user experience to another level. 

With the new version, pages load faster by 43% and a quicker checkout process is enabled. Through proper sequences, Magento enhances UI/UX strategies in driving the customers to your eCommerce website by presenting an aesthetically pleasing design.  

2. Responsive Web Design

Resorting to the best responsive web design is imperative as 74% of the users are likely to return to sites that guarantee adaptability. The responsive web design of Magento 2.4 gives an unparalleled viewing experience irrespective of the wide range of devices that the customers use. 

Magento 2.4 has to its credit Magento Blank and Luma themes, which enhances the compatibility of your eCommerce store with mobile phones. These in-built themes serve as the foundation for your eCommerce store that is more feasible than curating your theme from scratch. You are bound to experience increased conversion rates with the seamless organization of catalog pages that could fit into any device. 

Moreover, the PWA Studio feature supported by Magento 2.4 enables the designing of app-like sites. The convenience of the users is assured through its cross-platform feature and faster loading of pages, giving reasons for them to return to your store.

responsive web design of Magento

3. Easy Content Management

A strong content drives steady users to your eCommerce website. By choosing the right eCommerce platform, you can make the users see exactly what and where you want them to. With the default Magento CMS functionality, you can use CMS pages to display simple content to pages that require complex designs. Handling CMS pages in Magento does not require an expert understanding of coding or HTML. You can add text or media through a simple process. 

By applying the layout design and templates of your choice, you will have an upper hand in generating innovative content to increase online traffic. With the CMS pages of Magento, there is a higher chance of increasing the SEO as you have the freedom to set the URL and metadata. 

The unique Magento codebase will help you in developing custom made modules with which you could exercise full control over your eCommerce website and the content that it displays. Maintenance and updates of the content in Magento 2.4 are much simpler than other eCommerce platforms.

4. Advanced SEO

Since the Magento eCommerce platform is designed to improve the SEO ranking of your website, optimizing your product pages and content will come in handy. Proper optimization and advanced SEO ranking invite more customers to your website, increasing the possibilities for higher conversion rates. 

Apart from the in-built SEO optimization tactics, Magento 2.4 also caters to custom SEO implementation to increase your visibility in various search engines. The unique design of Magento can keep track of the visitors. This aids you to have a wider understanding of your customers more to provide a more personalized shopping experience. Such SEO-optimized websites host better functionalities than others.

Additionally, a sitemap index can be put to use in your eCommerce website, and hence, through a simple process, it can be sent to various search engines. According to a recent study, 57% of the B2B merchants rely on improving SEO in generating leads and a better conversion rate.  

Magento web design provides advanced seo features

5. Theme Customization

Magento web design equips you with customizing your eCommerce website to suit your requirements. Despite the theme customization being a time-consuming process, you can easily reap its benefits with its enhanced performance. Better user engagement and higher conversion rates are the two direct impacts of a fully customized online storefront.

Magento 2.4 provides endless customization possibilities through ensuring support with the best designs and advanced functions. Numerous free or paid themes are at your service. Choosing the right theme upon which you lay the foundation of your store will further save your time. Effective customization also increases your brand reputation, calling in more customers. 

A customized eCommerce website can provide product information in a more structured way to the customers, improving their convenience. An organized and well-coordinated website will improve customer retention while lowering bounce rates and buying friction. While ensuring scalability, there is no better feature than theme customization of Magento that will enable you to have hands-on experience in designing the eCommerce website that is tailor-made to your business.

6. AI-Powered Personalization

With the Product Recommendations feature powered by Adobe Sensei, Magento has deployed Artificial Intelligence and machine learning technology to provide a personalized shopping experience to customers. Going a step higher, you can indirectly trigger customers to sort out the products they want by recommending your products that they might want to have a look at.

The AI-powered personalization will help you in learning the shopping behavior through the machine learning algorithms. This will eventually target the right customers with the right products, guaranteeing a hike in conversion rates, better customer interaction and increased revenue. 

As an eCommerce platform, Magento supports nine different ‘Product Recommendation’ options including ‘Trending’, ‘Most Purchased’, and ‘Recommended for You’, which you could place on appropriate pages in your eCommerce website. As the numbers show, this feature of Magento web design successfully entices around 91% of customers to buy more. 

The place ‘Product Recommendation’ acquires in expanding conversion rates is second to none. By effectively utilizing this feature, your sales will skyrocket through additional purchases, upselling, and cross-selling.  

web design

How To Choose the Right Magento Web Development Agency?

Your growth lies in the choice that you make. Going for the right Magento development agency is the most vital part of setting up your eCommerce website. Before you take the deep plunge, there are certain factors to consider that decide whether your Magento developers can live up to your expectations.

Look For Magento Solution Partner

Choosing a Magento Solution partner is the first step in ensuring the scalability of your eCommerce website. The Magento Solution Partner program gives full freedom in utilizing the Magento ecosystem, thereby letting them have the upper hand in developing your eCommerce website more exceptionally than others.

As opposed to others, Magento solution partners have a wider knowledge of various Magento implementations, its designs, developments, and other integration solutions. Additionally, they also offer high-quality standards that the non-partners are incapable of. The certified developers of the partner company are trained to excel in designing and developing your online storefront in the Magento eCommerce platform.

Strong Technical Portfolio

Always go for the Magento developers who have a strong portfolio. Since your eCommerce website requires a permanent footing on the digital space, make sure that the developers are well equipped in expertise to provide you with all the requirements. 

Look for the companies that the Magento development agency has worked with, and take a look at the work that they have done. This will help you get a better understanding of their expertise in implementing custom extensions and other functionalities. The developers with a good portfolio show their capability in the perfect execution of their projects.

Reasonable Pricing

The affordable pricing structure is one of the most basic criteria that you have to look into. Look at the pricing packages that they offer and make sure it’s not over the top. Take a look at their after-hours support while inquiring about their additional charges. Having a clear idea about the third-party extensions that they provide will also help you plan your budget accordingly.

Always rely on the Magento development agency that lists out the intricate details of the expected expenditure to be incurred while undertaking a project. Also, ensure that the pricing meets the quality standards required for your Magento eCommerce store.

Maintenance Support

The work of any Magento development company does not end with the successful implementation of your eCommerce website. Providing a post-deployment service is necessary to ensure whether there is any problem with the website that is to be addressed. Look for the Magento developers that provide adequate maintenance support. 

If the company does provide the support, then you need not worry about the timely upgrades as their in-house developers will take care of it. Maintenance support is crucial in enhancing the smooth user experience and in increasing the performance of your eCommerce website. 

Reviews and Testimonials

Going through the testimonials and client reviews can be of great help. Testimonials give a wide picture of the way the Magento development agency functions. You can be assured that your eCommerce website is safe in their hands. A good Magento development agency prioritizes the needs of its clients rather than thrusting their ideas on them. A good review ensures this transparency relating to the nature of their interaction and work culture. 

good reviews matter

Look for a company that has long years of experience as they will be equipped to handle uncalled problems. So, skimming through the testimonial is the best way to understand how your chosen Magento development agency converts their years of expertise into fruitful projects.  

DCKAP- Your Trusted Magento Solution Partner

With over 15 years of experience in the arena of digital commerce, DCKAP converts your dreams into reality. As Magento Solution Partner, our in-house Magento developers will design and develop the best eCommerce website with impeccable features that drive more customers into your store. 

Our expertise in delivering the right solutions reflects the successful execution of our projects. We will ensure that you host the perfect eCommerce store. With the best services offered by DCKAP, shed all your worries and dream big. 

Exclude specific script to Move bottom – Magento Developer’s Solution

$
0
0


Magento provides lots of updates on each version, to improve their previous version and functionalities. Each feature had some exclusive issue, which needed to be fixed.

As like any other features, we had some exclusive situations. Thus we as a developer need to provide a solution for that. I would like to share one of my precious issue and solution, which I failed to find a solution on Google. Hence fixed on my own. I would be glad if this helps you.

Issue:

In Magento version 2.3.0 and later, they provided an admin configuration, which helps to improve the site performance.

Admin -> Store -> Configuration -> Advanced -> Developer (Enabled only on Developer mode). JavaScript settings -> Move JS code to the bottom of the page

If the above setting is enabled, then all the scripts will move to the bottom of the page which loads. This seriously, helps a lot to on page speed.

Unfortunately, we had a situation in which we need to load a script tag on our Order Success Page, next to the “Continue Shopping” button. That script is supposed to load the Survey form.

But the client enabled the above mentioned features, hence whenever we load the page, it goes to the bottom of the page. Which means, after footer the script loaded. Because of that the Survey form loaded after Footer.

This is really meaningless, hence our client requested us to fix this, without affecting Magento’s default feature and page speed.

Hence we were supposed to analyse the feature and started to build an customization for it.

Here is the solution we drive for this case.

Solution:

We created a separate module for this, called DCKAP_Core

Step 1:

Create di.xml in the below mentioned path and paste the below content.

Path: DCKAP/Core/etc/frontend

Code:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Theme\Controller\Result\JsFooterPlugin" type="DCKAP\Core\Controller\Result\JsFooterPlugin" />

</config>

Step 2:

Create Controller file named JsFooterPlugin.php in the below path.
Path: DCKAP/Core/Controller/Result

Content:

<?php

namespace DCKAP\Core\Controller\Result;

use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Store\Model\ScopeInterface;
use Magento\Framework\App\Response\Http;

/**
* Plugin for putting all js to footer.
*/
class JsFooterPlugin extends \Magento\Theme\Controller\Result\JsFooterPlugin
{
private const XML_PATH_DEV_MOVE_JS_TO_BOTTOM = 'dev/js/move_script_to_bottom';

/**
* @var ScopeConfigInterface
*/
private $scopeConfig;

/**
* @param ScopeConfigInterface $scopeConfig
*/
public function __construct(ScopeConfigInterface $scopeConfig)
{
$this->scopeConfig = $scopeConfig;
parent::__construct($scopeConfig);
}

/**
* Put all javascript to footer before sending the response.
*
* @param Http $subject
* @return void
*/
public function beforeSendResponse(Http $subject)
{
$content = $subject->getContent();
$script = [];
if (strpos($content, '</body') !== false) {
if ($this->scopeConfig->isSetFlag(
self::XML_PATH_DEV_MOVE_JS_TO_BOTTOM,
ScopeInterface::SCOPE_STORE
)
) {

$pattern = '#<script[^>]*+(?<!text/x-magento-template.)>.*?</script>#is';
$content = preg_replace_callback(
$pattern,
function ($matchPart) use (&$script) {
if (strpos($matchPart[0], 'excluded') !== false) {
return $matchPart[0];
} else {
$script[] = $matchPart[0];
return '';
}

},
$content
);
$subject->setContent(
str_replace('</body', implode("\n", $script) . "\n</body", $content)
);
}
}
}
}

And run the deploy comments like

php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy

Now your customization is over. In our above customization, we will check whether a particular tag has a key word called “excluded”.

If the script tag which is mentioned with “excluded”, then that particular script won’t move to the bottom of the page.

Example:

<script src='https://www.dckap.com/js-file.js’ type='text/javascript' excluded ></script>

<script src='https://www.dckap.com/js-file-2.js' type='text/javascript'></script>

In the above example, js-file-2.js will move to bottom of the page, whereus js-file.js will remain the same.

Viewing all 135 articles
Browse latest View live