1

How in custom created module to make the logic of receiving and displaying all links to stores. The display should be on the homepage.

I tried the solution that suggested Google search, but I can’t finish the solution, because I don’t know how to put all the stores on the homepage.

public function __construct(
...,
\Magento\Store\Model\StoreManagerInterface $storeManager
) {
...
     $this->_storeManager = $storeManager;
}
....
private function getStoreData(){
    $storeManagerDataList = $this->_storeManager->getStores();
     $options = array();

     foreach ($storeManagerDataList as $key => $value) {
               $options[] = ['label' => $value['name'].' - '.$value['code'], 'value' => $key];
     }
     return $options;
}
  • How many website you have? – Ranganathan Nov 1 at 8:33
  • @Ranganathan 5, but in the future, I want to automatically add there as new stores arrive – ann karsksya Nov 1 at 9:05
  • 5 websites and each website having stores? – Ranganathan Nov 1 at 9:12
  • @Ranganathan no, no, I have a main site and it has Main Website Store -> Store View1, Store View2, Store View3 ... – ann karsksya Nov 1 at 9:36
  • got it will update my answer – Ranganathan Nov 1 at 9:47
1

You can use default block for this Magento\Store\Block\Switcher

Call phtml file with above block with below code

<?php foreach ($block->getStores() as $store): ?>
    <a href="#" data-post='<?= $block->getTargetStorePostData($store) ?>'>
        <?= $block->escapeHtml($store->getName()) ?>
    </a>
<?php endforeach; ?>

Note: Not only URL can switch the store, you need to set it in cookie using data-post attribute.

Call phtml file from xml like:

<block class="Magento\Store\Block\Switcher" name="all_stores" template="Vendor_Module::stores.phtml"/>

Call phtml file from CMS page like:

{{block class="\Magento\Store\Block\Switcher" name="all_stores" template="Vendor_Module::stores.phtml"}}

Call you phtml from theme.

app/design/frontend/Vendor/Module/Magento_Theme/templates/stores.phtml

anc call from cms block

{{block class="\Magento\Store\Block\Switcher" name="all_stores" template="Magento_Theme::stores.phtml"}}
  • I'm sorry I didn’t answer earlier. I understood correctly, if I insert your example in cms block, will I get all the links to my stores? – ann karsksya Nov 3 at 13:01
  • No problem....Yes.....You can place your phtml in you theme and call it from cms block. I updated the answer. – Ranganathan Nov 4 at 4:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.