How to Get All Stores of All Websites in Magento 2

 Steps to Get All Stores of All Websites in Magento 2:

Step 1: Go to the below file path


app\code\Vendor\Extension\etc\di.xml


Then add the code as follows


<?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\Store\Block\Switcher" type="Vendor\Extension\Block\Switcher"/>

</config>

Step 2: Now move to the following file path


app\code\Vendor\Extension\Block\Switcher.php


After that add the following code snippet


<?php

namespace Vendor\Extension\Block;

 

use Magento\Directory\Helper\Data;

use Magento\Store\Model\Group;

use Magento\Store\Model\Store;

use Magento\Framework\App\ActionInterface;

use Magento\Framework\App\ObjectManager;

use Magento\Framework\Url\Helper\Data as UrlHelper;

 

/**

 * Switcher block

 *

 * @api

 * @since 100.0.2

 */

class Switcher extends \Magento\Store\Block\Switcher

{

    /**

     * @var bool

     */

 

    protected $_storeInUrl;

    /**

     * @var \Magento\Framework\Data\Helper\PostHelper

     */

 

    protected $_postDataHelper;

    /**

     * @var UrlHelper

     */

 

    private $urlHelper;

    /**

     * @param \Magento\Framework\View\Element\Template\Context $context

     * @param \Magento\Framework\Data\Helper\PostHelper $postDataHelper

     * @param array $data

     * @param UrlHelper $urlHelper

     */

 

    public function __construct(

        \Magento\Framework\View\Element\Template\Context $context,

        \Magento\Framework\Data\Helper\PostHelper $postDataHelper,

        array $data = [],

        \Magento\Framework\Url\Helper\Data $urlHelper = null

    )

    {

        $this->_postDataHelper = $postDataHelper;

        parent::__construct($context, $postDataHelper, $data);

        $this->urlHelper = $urlHelper ?: ObjectManager::getInstance()->get(\Magento\Framework\Url\Helper\Data::class);

    }

      /**

     * @return array

     */

 

    public function getRawAllStores()

    {

        $websites = $this->_storeManager->getWebsites();

        $stores = [];

        foreach ($websites as $website)

        {

            $websiteStores = $website->getStores();

            foreach ($websiteStores as $store)

            {

                /* @var $store \Magento\Store\Model\Store */

                if (!$store->isActive())

                {

                    // continue;

                }

                $localeCode = $this->_scopeConfig->getValue(

                    Data::XML_PATH_DEFAULT_LOCALE,

                    \Magento\Store\Model\ScopeInterface::SCOPE_STORE,

                    $store

                );

                $store->setLocaleCode($localeCode);

                $params = ['_query' => []];

                if (!$this->isStoreInUrl())

                {

                    $params['_query']['___store'] = $store->getCode();

                }

                $baseUrl = $store->getUrl('', $params);

                $store->setHomeUrl($baseUrl);

                $stores[$store->getGroupId()][$store->getId()] = $store;

            }

        }

        return $stores;

    }

}

Step 3: Finally, run the below commands


php bin/magento setup:di:compile

php bin/magento cache:flush

Comments

Popular posts from this blog

Add Admin User name and Action name in Order Comment Section through Action Performed from Sales Order Grid in Magento 2

How to Update Product Stock Programmatically in Magento 2

How to Set and Get Cookie in Magento 2