回答
要獲得當前商店的詳細信息,請使用下面的代碼。
$store = Mage::app()->getStore();
$name = $store->getName();
謝謝大家,
我想分享我的調查結果:
- 的index.php呼籲
Mage::run()
- 它調用應用程序/ mage.php :: run()的
- 運行功能有
self::$_app->run(...)
最後呼籲的代碼行Mage_Core_Model_App::run()
功能 Mage_Core_Model_App::run()
包括$this->_initCurrentStore($scopeCode, $scopeType);
_initCurrentStore()
::使用_initStores()
方法將所有網站,組和商店加載到網站,組和商店對象。此功能檢查該網站是網站還是商店組或商店,如果它是一個,那麼它在那裏設置當前商店。如果範圍是基數,那麼它會通過$this->_checkCookieStore()
$this->_checkCookieStore()
::這將從Cookie$this->getCookie()->get(Mage_Core_Model_Store::COOKIE_NAME);
獲取商店類型,它會根據cookie返回的值檢查它是網站,組還是存儲並設置當前店鋪爲$this->_currentStore = $store;
。Mage_Core_Model_App::_checkGetStore()
,這個檢查目前店內與xpath_of_store_url,更新使用網站
當前語言環境時Mage_Core_Model_App::init()
被稱爲設置,init()函數具有$this->_initEnvironment();
具有區域
的設置如果「添加存儲代碼到Url「設置,然後 Magento也根據商店代碼存在於url中檢測商店。 例如domain.com/en/ 它在Mage_Core_Controller_Request_Http :: setPathInfo()
所以實現按優先順序(勝最低)Magento會用以下數據來檢測店:
- 檢查,如果URL中包含存儲代碼 - >使用
- 檢查,如果有店鋪cookie設置
- 使用$ _ SERVER [「MAGE_RUN_CODE」]和$ _ SERVER [「MAGE_RUN_TYPE」]從默認存儲組
- 獲取默認存儲,並且默認存儲組 從默認網站
我正在學習magento certifcation考試,我也不是100%確定地區的回答。我在網上的搜索表明,廣泛接受的答案是:
當調用Mage_Core_Model_App :: init()時設置當前語言環境,init()函數具有$ this - > _ initEnvironment();其中有一個場景設置
似乎某人有人說,每個人都只是複製,但我不知道它是正確的。請參閱Mage_Core_Model_Locale :: __ construct()中的區域設置,但在$ this - > _ initEnvironment()中未調用此構造,因爲在此方法中,Mage_Core_Model_Locale僅用作靜態類。所以這不應該得到的結構運行:
protected function _initEnvironment()
{
$this->setErrorHandler(self::DEFAULT_ERROR_HANDLER);
date_default_timezone_set(Mage_Core_Model_Locale::DEFAULT_TIMEZONE);
return $this;
}
看來,這個功能只能使用從Mage_Core_Model_Locale的常量,以設置時區。時區與區域設置不同。
但是,在Mage_Core_Model_App中,函數getLocale()會正確地實例化區域設置,它應該使構造函數運行,因此運行Mage_Core_Model_Locale :: setLocale。
Mage_Core_Model_App
public function getLocale()
{
if (!$this->_locale) {
$this->_locale = Mage::getSingleton('core/locale');
}
return $this->_locale;
}
Mage_Core_Model_Locale
public function __construct($locale = null)
{
$this->setLocale($locale);
}
public function setLocale($locale = null)
{
if (($locale !== null) && is_string($locale)) {
$this->_localeCode = $locale;
} else {
$this->_localeCode = $this->getDefaultLocale();
}
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
return $this;
}
編輯:
,而我在這,我決定正前方去驗證,如果我是正確與否。要做到這一點,我添加
mageDebugBacktrace(); die();
到法師核心語言環境模型的setLocale()方法。 此方法是當Locale模型在_localeCode屬性上設置值時。換句話說,這是當locale設置的時候。回溯將向我們展示導致它的方法的調用鏈。
結果是這樣的:
[1] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/Locale.php:94
[2] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/Config.php:1348
[3] /var/www/magento/htdocs/app/Mage.php:463
[4] /var/www/magento/htdocs/app/Mage.php:477
[5] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/App.php:1018
[6] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/Translate.php:347
[7] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/Translate.php:179
[8] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/Translate.php:119
[9] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/App/Area.php:146
[10] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/App/Area.php:121
[11] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/App/Area.php:93
[12] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/App.php:774
[13] /var/www/magento/htdocs/app/code/core/Mage/Core/Controller/Varien/Action.php:512
[14] /var/www/magento/htdocs/app/code/core/Mage/Core/Controller/Front/Action.php:64
[15] /var/www/magento/htdocs/app/code/core/Mage/Core/Controller/Varien/Action.php:407
[16] /var/www/magento/htdocs/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php:250
[17] /var/www/magento/htdocs/app/code/core/Mage/Core/Controller/Varien/Front.php:172
[18] /var/www/magento/htdocs/app/code/core/Mage/Core/Model/App.php:354
[19] /var/www/magento/htdocs/app/Mage.php:684
[20] /var/www/magento/htdocs/index.php:87
你可以看到線18應用示範線354是這樣的代碼:
$this->getFrontController()->dispatch();
這是在App模型run()方法。整個方法是這樣的:
public function run($params)
{
$options = isset($params['options']) ? $params['options'] : array();
$this->baseInit($options);
Mage::register('application_params', $params);
if ($this->_cache->processRequest()) {
$this->getResponse()->sendResponse();
} else {
$this->_initModules();
$this->loadAreaPart(Mage_Core_Model_App_Area::AREA_GLOBAL, Mage_Core_Model_App_Area::PART_EVENTS);
if ($this->_config->isLocalConfigLoaded()) {
$scopeCode = isset($params['scope_code']) ? $params['scope_code'] : '';
$scopeType = isset($params['scope_type']) ? $params['scope_type'] : 'store';
$this->_initCurrentStore($scopeCode, $scopeType);
$this->_initRequest();
Mage_Core_Model_Resource_Setup::applyAllDataUpdates();
}
$this->getFrontController()->dispatch();
}
return $this;
}
左右)的整體思路是,語言環境中_initEnvironment(),它是在baseInit的開始調用(設置不正確。也許有人會感到困惑,不知道「默認時區」和「區域設置」之間的區別,但它絕對不是一回事!
- 1. C商店如何知道它屬於哪個C? DICOM
- 2. 如何獲得magento商店?
- 3. 在多個Magento商店中使用BlueSnap
- 4. Magento商店URL
- 5. gcc如何知道使用哪個庫?
- 6. magento多個商店視圖
- 7. 如何知道Magento programmaticaly調用哪個路由器?
- 8. 如何知道Android應用程序來自Google Play商店
- 9. magento商店視圖
- 10. Magento - 使用多選和商店視圖
- 11. 如何獲得Magento商店貨幣
- 12. Magento - 如何獲得商店的國家?
- 13. 如何知道哪個用戶付了?
- 14. 亞馬遜應用商店如何知道哪個設備安裝了該應用程序?
- 15. 如何知道當我的apk在Play商店中更新?
- 16. 軌道服務器如何知道使用哪個route.rb?
- 17. 如何知道在Magento CE
- 18. magento apis用於創建網站,商店和商店視圖
- 19. 將多個商店magento中的一個商店移動到具有多個商店的另一個服務器
- 20. Magento的商店 - SQL錯誤
- 21. Magento的商店 - 通過
- 22. Magento商店ID在cronjob
- 23. Magento的商店 - 擴展
- 24. Magento商店相關文本
- 25. Magento多商店SSL分享
- 26. 按部門在magento商店
- 27. Magento;派遣多商店
- 28. Magento:在商店代碼Dash
- 29. 獲取magento商店列表
- 30. Magento商店返回URL