Skip to main content

Posts

Enabling Magento 2 Two-Factor Authentication (2FA) with Google Authenticator

Security is a top priority for every e-commerce store. Since Magento 2.4, Two-Factor Authentication (2FA) has been enabled by default to protect your admin accounts against unauthorized access. If you’re running an earlier version or need to re-enable it, this guide walks you through enabling the Magento 2 2FA module and setting it up with Google Authenticator . What is Two-Factor Authentication in Magento? Two-Factor Authentication adds an extra layer of security to the Magento Admin login. Instead of only requiring a username and password, Magento also requests a one-time passcode (OTP) generated by an authenticator app like Google Authenticator . This ensures that even if your password is compromised, attackers cannot access your store without the second factor. Step 1: Verify 2FA Module Availability Magento 2 ships with the Magento_TwoFactorAuth module. First, check if the module exists in your installation: bin/magento module:status Magento_TwoFactorAuth If it’s listed ...

Using Composer Update is a Crime: Why Magento Developers Should Avoid It

As a Magento developer, managing third-party modules via Composer is essential for keeping your project organized and up to date. However, when installing a new module, there’s one command that might seem tempting, yet can lead to chaos if not used carefully: composer update Yes, you read that right—using composer update can be a crime (against your project, that is). In this blog, we’ll explore why running composer update without caution can be risky, and why you should think twice before pulling the trigger. Let’s break it down. What Does composer update Do? At first glance, composer update seems harmless. When you run it, Composer checks for newer versions of every package listed in your composer.json file and updates them to the latest compatible versions based on your version constraints. That sounds good, right? Why wouldn't you want the latest updates? Well, here's where things get tricky. The Hidden Risk of composer update Running composer update doesn't just u...

Magento - LogRocket Integration

In today’s competitive eCommerce landscape, understanding user behavior is crucial for optimizing customer experiences and improving conversion rates. Magento 2, a powerful and flexible eCommerce platform, allows merchants to customize their online stores extensively. However, monitoring how users interact with these customizations is often challenging. This is where LogRocket, a modern session replay tool, comes into play. Integrating LogRocket with Magento 2 can provide invaluable insights into user behavior, performance bottlenecks, and UX issues. In this blog post, we’ll walk you through the steps to integrate LogRocket with Magento 2, and how this integration can help you improve your store’s performance and user experience. What is LogRocket? LogRocket is a session replay tool that enables you to record and playback user activity on your website. It tracks interactions such as clicks, scrolls, and form inputs, giving you a clear view of how users navigate your store. In addition,...

Magento 2: How to enable cache for a custom EAV attributes?

To prepare for the certification exam, the candidate should know about different cache types and their purpose. The cache is an important and crucial part of the website's performance. One of the caches is the "EAV types and attributes" cache. You can check the list of caches in Magento Admin and by using console commands. Below is the screenshot of the list of caches in admin under System -> Cache Management As of version 2.3.4, Commerce caches all system EAV attributes as they are retrieved. Caching EAV attributes in this manner improves performance, because it decreases the amount of insert/select requests to the DB. However, it increases cache network size as well. Developers can cache custom EAV attributes by running the below command. bin/magento config:set dev/caching/cache_user_defined_attributes 1 This can also be done from the Admin while in Developer mode by setting Stores > Settings Configuration > Advanced > Developer > Caching Settings > Ca...

Magento 2: Maximum Discount Amount

Setting a maximum discount amount for promotions on an e-commerce platform is crucial for maintaining profitability and protecting the business's bottom line. It helps to prevent excessive discounting that could erode margins and devalue products. Additionally, it ensures consistency in pricing strategy and prevents potential revenue loss. Moreover, it fosters customer trust by establishing clear and fair discounting practices, enhancing brand reputation and loyalty. Lastly, it enables effective budget management by limiting the financial impact of promotional activities while still incentivizing purchases. Implementing a "maximum discount amount" customization on core Magento can significantly enhance the platform's flexibility and control over promotional activities. Please follow the below steps to add this feature: Add a new column on salesrule table using db_schema.xml <schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNames...

Unlocking Success: The Vital Role of the Contact Us Page in E-commerce

In the dynamic realm of e-commerce, where digital transactions reign supreme, the significance of customer communication cannot be overstated. Amidst the plethora of factors influencing the success of an online store, one often overlooked yet fundamentally important element is the Contact Us page. This seemingly humble corner of a website holds immense power, serving as a linchpin in fostering trust, resolving issues, and nurturing customer relationships. Let's delve deeper into why the Contact Us page is not just an afterthought but a strategic asset for e-commerce businesses, backed by proven data. Building Trust and Credibility Trust is the cornerstone of any successful e-commerce venture. According to a survey conducted by Edelman, 81% of consumers say that trusting a brand to do what is right is a deciding factor in their purchasing decisions. A prominently displayed Contact Us page with clear contact information, including a physical address, phone number, and email address, ...

A Comprehensive Guide to Configuring Currency in Magento

Configuring currency settings in Magento is crucial for any e-commerce store that operates in multiple countries or deals with customers using different currencies. Correctly setting up currencies ensures smooth transactions and enhances the user experience. In this guide, we'll walk through the steps to configure currency in Magento, helping you tailor your store to meet the needs of your diverse customer base. Step 1: Accessing Currency Configuration To begin, log in to your Magento admin panel. Once logged in, navigate to the Stores tab located on the left-hand side menu. From the dropdown menu under the Stores tab, select Configuration. This will take you to the configuration panel where you can adjust various settings for your Magento store. Step 2: General Currency Settings In the Configuration panel, locate the General section and click on Currency Setup. Here, you'll find options to configure your store's base currency, allowed currencies, and currency rates. Base C...

Magento Cloud - How to connect to Opensearch/Elasticsearch

The magento-cloud CLI tool allows developers and system administrators to manage Cloud projects and environments, conduct routines, and run automated activities. The magento-cloud CLI expands on the features and functionality of the Project Web Interface. After installing the magento-cloud CLI on your local machine, you can use it to administer your Adobe Commerce on Cloud Infrastructure Starter and Pro Integration environments. To install the magento-cloud CLI tool on your local, please follow this link. Once you have CLI installed on your local machine, you will have access to all the commands provided by the Magento cloud team for accessing or managing the project from your local machine. After installing CLI, you can use a command magento-cloud tunnel:single to connect to the dependent app of Magento like Redis, OpenSearch & Database. You can execute  magento-cloud tunnel:single  command with multiple variables where you can pass the project code, environment name, e...

Magento Cloud - Export Data from Production Database

When working for an organization, there are times when you need to export data from the production database. Ideally, you should build a report or export option in Magento admin for this information. However, these are one-time data for which developing a module or backend functionality is not worthwhile. So, for this circumstance, follow the procedures below to retrieve data from the database. Assuming you already know how to do ssh login to the production server. So let's start with logging into your server. Once you log in follow the below steps: Get Database credentials Once you log in, open your env.php file and get the database credentials stored on the server. You will find an array in the env file and get the credentials from the key with the name "db". Prepare SQL Query Prepare your query whatever you want to export and then save it in a SQL file. You can prepare this file directly on the server or locally. If you want to move this file from local to production t...

Sync prices in Magento from ERP system

Price synchronization is a critical aspect of e-commerce applications, and its importance cannot be understated. Price synchronization in e-commerce applications is essential for maintaining consistency, competitiveness, and customer trust. It also streamlines operations, reduces errors, and enables businesses to adapt to market changes, ultimately leading to better customer experiences and increased revenue. So it's important to have a fast and efficient synchronization process for syncing prices from another application to Magento. Let's see how we can achieve this. This is the main function that needs to be called for importing the price. In this, we can see we have imported the price for a multiwebsite setup. If you have a system with a single website, you can remove the loop and use the rest of the code. public function execute() { $prices = []; $websites = $this->systemConfig->getWebsites(); foreach ($websites as $website) { if (...

A Comprehensive Guide to Magento 2 Store Configuration

In the ever-evolving world of e-commerce, Magento 2 stands as a powerful platform that empowers businesses to create and manage their online stores effectively. One of the critical aspects of setting up a successful store is configuring it correctly. In this guide, we'll walk through the essential store settings and configurations in Magento 2. Whether you're a Business Analyst, Product Analyst, Tester, or anyone involved in the e-commerce landscape, this blog will help you understand the vital actions, settings, and configurations needed to optimize your Magento 2 store. Before getting into configuration, we need to understand the multi-website & multi-store & multi-lingual concepts that are supported by Magento. Since this blog series is about configuration, I just want to mention that all configurations are based on stores & websites. In a simple way, we can have different configurations for differe...

Disable Hover on main menu and make it work on click

The main menu in an eCommerce website holds significant importance as it serves as the primary navigational tool for users to explore and access various sections, products, and features of the online store. The main menu helps users discover products, services, and content they might not have been aware of. By presenting various categories and sections prominently, the menu can drive users to explore different parts of the website, increasing the chances of making a sale. The style and layout of the main menu contribute to the website's overall aesthetic & attractiveness. Magento essentially makes use of a jQuery menu widget to deliver all of its default features. By default, the menu appears when you mouse over it. I had a requirement in which I needed to open the menu only when the customer clicked. Because we were using Megamenu, and when it opened, it took up half of the screen. And this might be annoying for customers at times.  So to solve this, I have created a JS ...

Layout Processing Priority

While working in Magento, theme developers need to override the layouts from the core modules. And then the developers using those themes may need to customize them according to their requirements.  Magento always recommends, to ensure stability and secure your customizations from being deleted during the upgrade, not change out-of-the-box module and theme layouts. To make the necessary changes, create extending and overriding layout files in your custom theme or module. When multiple copies of the same layouts are available in a project, developers get confused about the layout's execution. So to understand how the layouts are being processed by the application, see the points below: Layouts from the module's base directory. Then layouts from the module's area directory. If the same layout is customized in multiple modules, then they are merged based on the sequence of modules in the app/etc/config.xml file. Then layouts from the theme's design/frontend/Namespace_Modul...

How to add new cart item attribute in SalesRule Conditions?

Promotions play a crucial role in the success of an eCommerce business. They are essential for attracting customers, increasing sales, building brand loyalty, and staying competitive in the online marketplace. Managing promotions in Magento 2 can be done through the built-in promotional tools and features. Magento 2 offers a flexible and powerful promotion system to create various types of promotions like discounts, coupons, free shipping, etc. But there is always a scope for change in the business requirement for creating a promotion, and we are going to discuss more on this requirement. Currently, Magento provides the below conditions on which you can create your promotion rules. But by following the below steps you can manage and learn to add more options to the cart price rule. Step 1: First, we need to add a plugin for class Magento\SalesRule\Model\Rule\Condition\Product. <?xml version="1.0" ?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance...

Magento 2 - Product Feed

If you operate an online store and want to sell your products, you surely want your offer to be displayed accurately and in the best way possible. Because, in today's competitive market, when customers receive various discounts and offers across all e-commerce platforms, your potential customers, regardless of where you sell, demand exact, complete, and up-to-date product information. As a result, e-commerce sites must create and optimize product feeds. What is Product Feed? The product feed is the most important part of the eCommerce business as it allows the owner to grow their business and marketers to advertise their company's product.  In basic terms, a product feed is a data feed that comprises all of the attributes of a product. Product feed files can be generated in a variety of file formats depending on the system to which the products will be pushed. The most used file formats are XML and CSV. The content of the product feed may vary, but the fundamental goal of the p...

"Asymmetric transaction rollback" in DataPatch

I was working on one of the needs in which I needed to add some new data to the catalog_eav_attribute table. And for that, I've created an update query that will be executed from DataPatch, and the query will be executed to update data in the database when the code is deployed to the server. So I have added below code: public function apply() { $this->moduleDataSetup->getConnection()->startSetup(); $connection = $this->resourceConnection->getConnection(); try { if ($connection->tableColumnExists('catalog_eav_attribute', 'used_in_feed') === true) { foreach ($this->attributes as $attribute) { $query = "UPDATE catalog_eav_attribute SET used_in_feed = 1 WHERE attribute_id = (SELECT attribute_id FROM eav_attribute WHERE entity_type_id = 4 AND attribute_code = '" . $attribute . "')"; $connection->query($query); ...

How to add new field in attribute form in Magento 2?

Magento provide a feature to manage product attributes from the admin. There we can manage how to use that attributes in frontend and backend. And sometimes based on demand, we need additional information for an individual attribute. For example, include an attribute in the product feed. So let's see how we can add a new field to capture the additional value for each attribute. Please follow the below steps: STEP 1: Create a plugin <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nonamespaceschemalocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front"> <plugin name="extension_attribute_edit_form" sortorder="1" type="MageInsight\ProductFeed\Plugin\Block\Adminhtml\Product\Attribute\Edit\Tab\Front"> </plugin></type> </config> STEP 2: Next, we will create the “Front” class ...