这篇文章是由SKY8G编辑者进行编写,在magento 2开发过程中我们常常用到获取Websites, Stores 和Stores Views信息,来做功能模块。
什么是Websites、Stores 、 Stores Views呢?
下面我们详细介绍这个之间的关系和联系,首先了解这三个是什么意思?
1 2 3 | Websites = 网站 Websites = 商店 Stores Views = 商店视图 |
如果你使用的是Magento的系统,那么Magento网站都会有网站(Websites)、商店(Stores)和商店视图(Stores Views)的层次结构。其中Mageto 2系统网站中的网站、商店和商店视图具有一对多的父/子关系。一个网站可以有多个网站点,然后每个网站点又可以有多个商店,而每个商店又可以有多个商店视图。这就是Magento电子商务系统最NB的地方。
上面的如果不太懂,请看下图,这里是magento 2后台系统配置:功能相当强大
Websites:
Magento网站安装后,默认情况下称为“主网站”(Main Website)。你也可以为一个网站设置多个网站,每个网站都有自己的IP地址和域名。
Stores:
一个网站可以有多个商店,每个商店都有自己的主菜单。商店共用相同的产品目录,但是可以有不同的产品选择和设计。同一网站下的所有商店共用相同的管理和结帐。
Store Views:
每个可供顾客使用的商店都是根据特定的“商店视图”呈现的。最初,商店只有一个默认视图。可以添加其他商店视图来支持不同的语言,或者用于其他目的。客户可以使用标题中的语言选择器来更改商店视图。
通过上面的图解和讲解相信你对magento 2的流程懂了。好了,既然你已经懂了,那我们如何在magento 2中获取里面的配置信息,这对magento的开发非常有用。下面我将讲述如何获取这三个信息。
获取Websites、Stores 、 Stores Views的信息
首先我们要创建和自己模块,如何创建Magento 2的模块,请参考这里:如何创建Magento 2的模块,这里面讲解了如何进行magento 2模块的创建和怎么调用Helper类等。这里就不再讲解如何创建模块了。在创建了模块后我们写下如下代码来获取获取Websites, Stores & Stores Views信息
先看看后台的配置的值,我们进行演示:
获取当前Websites Id ,Websites name与Websites Code等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php /** * @WEBSITE https://www.sky8g.com */ namespace Sky8g\Hello\Controller\Test; use Sky8g\Hello\Helper\Data; class Index extends \Magento\Framework\App\Action\Action { protected $_coreRegistry; protected $_pageFactory; protected $_helper; protected $_storeManager; public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Framework\Registry $registry, \Magento\Store\Model\StoreManagerInterface $storeManager, Data $helper, \Magento\Framework\View\Result\PageFactory $pageFactory) { $this->_pageFactory = $pageFactory; $this->_coreRegistry = $registry; $this->_storeManager = $storeManager; $this->_helper = $helper; return parent::__construct($context); } public function execute() { echo '获取当前的website name: ' ,$this->_storeManager->getWebsite()->getName(),'<br/>'; echo '获取当前的website code: ' ,$this->_storeManager->getWebsite()->getCode(),'<br/>'; echo '获取当前的website id: ' ,$this->_storeManager->getWebsite()->getId(),'<br/>'; echo '获取当前的website 排序: ' ,$this->_storeManager->getWebsite()->getSortOrder(),'<br/>'; } } |
输出
1 2 3 4 | 获取当前的website name: Main Website 获取当前的website code: base 获取当前的website id: 1 获取当前的website 排序: 0 |
获取Store Id ,Store name与Store Code等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?php /** * @WEBSITE https://www.sky8g.com */ namespace Sky8g\Hello\Controller\Test; use Sky8g\Hello\Helper\Data; class Index extends \Magento\Framework\App\Action\Action { protected $_coreRegistry; protected $_pageFactory; protected $_helper; protected $_storeManager; public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Framework\Registry $registry, \Magento\Store\Model\StoreManagerInterface $storeManager, Data $helper, \Magento\Framework\View\Result\PageFactory $pageFactory) { $this->_pageFactory = $pageFactory; $this->_coreRegistry = $registry; $this->_storeManager = $storeManager; $this->_helper = $helper; return parent::__construct($context); } public function execute() { $groups = $this->_storeManager->getWebsite()->getGroups(); $storeName = []; $storeViewName = []; foreach ($groups as $key => $group) { $storeName[] = $group->getWebsiteId(); // get store name $storeName[] = $group->getName(); // get store name $storeName[] = $group->getCode(); // get store name $storeName[] = $group->getRootCategoryId(); // get store name $storeName[] = $group->getDefaultStoreId(); // get store name //$groupAllData = $group->getData()); //获取所有group的信息 $stores = $group->getStores(); foreach ($stores as $store) { $storeViewName[] = "这个是store view的信息 :".$store->getName(); // get store view name } } print_r($storeName); print_r($storeViewName); } } |
输出
1 2 3 4 5 6 7 8 9 10 11 12 | Array ( [0] => 1 [1] => Main Website Store [2] => main_website_store [3] => 2 [4] => 1 ) Array ( [0] => 这个是store view的信息 :Default Store View ) |
获取当前 Store View Id ,Store View name与Store View Code等(这个是最常用)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php /** * @WEBSITE https://www.sky8g.com */ namespace Sky8g\Hello\Controller\Test; use Sky8g\Hello\Helper\Data; class Index extends \Magento\Framework\App\Action\Action { protected $_coreRegistry; protected $_pageFactory; protected $_helper; protected $_storeManager; public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Framework\Registry $registry, \Magento\Store\Model\StoreManagerInterface $storeManager, Data $helper, \Magento\Framework\View\Result\PageFactory $pageFactory) { $this->_pageFactory = $pageFactory; $this->_coreRegistry = $registry; $this->_storeManager = $storeManager; $this->_helper = $helper; return parent::__construct($context); } public function execute() { echo '获取当前的store id: ' ,$this->_storeManager->getStore()->getId(),'<br/>'; echo '获取当前的store code: ' ,$this->_storeManager->getStore()->getCode(),'<br/>'; echo '获取当前的store Name: ', $this->_storeManager->getStore()->getName(),'<br/>'; } } |
输出
1 2 3 | 获取当前的store id: 1 获取当前的store code: default 获取当前的store Name: Default Store View |
这是获取所有Magetno 2的store的信息,欢迎的你阅读。