Skip to content

Commit 3aeccd6

Browse files
committed
Fix 'Duplicate links in Default Store View #4'
1 parent 32286b5 commit 3aeccd6

File tree

8 files changed

+115
-50
lines changed

8 files changed

+115
-50
lines changed

Helper/Data.php

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,11 @@
11
<?php
2+
23
namespace Noon\HideDefaultStoreCode\Helper;
34

45
class Data extends \Magento\Framework\App\Helper\AbstractHelper
56
{
67
const XML_PATH_HIDE_DEFAULT_STORE_CODE = 'web/url/hide_default_store_code';
78

8-
/**
9-
*
10-
* @var \Magento\Framework\App\Config\ScopeConfigInterface
11-
*/
12-
protected $scopeConfig;
13-
14-
/**
15-
*
16-
* @param \Magento\Framework\App\Helper\Context $context
17-
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
18-
*/
19-
public function __construct(
20-
\Magento\Framework\App\Helper\Context $context,
21-
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
22-
) {
23-
parent::__construct($context);
24-
$this->scopeConfig = $scopeConfig;
25-
}
26-
279
/**
2810
*
2911
* @return boolean
@@ -36,4 +18,3 @@ public function isHideDefaultStoreCode()
3618
return false;
3719
}
3820
}
39-
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<?php
2+
3+
namespace Noon\HideDefaultStoreCode\Observer;
4+
5+
class RedirectWithoutStoreCode implements \Magento\Framework\Event\ObserverInterface
6+
{
7+
/**
8+
* @var \Magento\Framework\App\Response\RedirectInterface
9+
*/
10+
protected $redirect;
11+
12+
/**
13+
* @var \Magento\Framework\App\ActionFlag
14+
*/
15+
protected $actionFlag;
16+
17+
/**
18+
* @var \Magento\Store\Model\StoreManagerInterface
19+
*/
20+
protected $storeManager;
21+
22+
/**
23+
* @var \Noon\HideDefaultStoreCode\Helper\Data
24+
*/
25+
protected $helper;
26+
27+
/**
28+
* @var \Magento\Framework\UrlInterface
29+
*/
30+
protected $url;
31+
32+
/**
33+
*
34+
* @param \Magento\Framework\App\Response\RedirectInterface $redirect
35+
* @param \Magento\Framework\App\ActionFlag $actionFlag
36+
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
37+
* @param \Noon\HideDefaultStoreCode\Helper\Data $helper
38+
* @param \Magento\Framework\UrlInterface $url
39+
*/
40+
public function __construct(
41+
\Magento\Framework\App\Response\RedirectInterface $redirect,
42+
\Magento\Framework\App\ActionFlag $actionFlag,
43+
\Magento\Store\Model\StoreManagerInterface $storeManager,
44+
\Noon\HideDefaultStoreCode\Helper\Data $helper,
45+
\Magento\Framework\UrlInterface $url
46+
) {
47+
$this->redirect = $redirect;
48+
$this->actionFlag = $actionFlag;
49+
$this->storeManager = $storeManager;
50+
$this->helper = $helper;
51+
$this->url = $url;
52+
}
53+
54+
/**
55+
*
56+
* @param \Magento\Framework\Event\Observer $observer
57+
* @return void
58+
*/
59+
public function execute(\Magento\Framework\Event\Observer $observer)
60+
{
61+
$websiteId = $this->storeManager->getStore()->getWebsiteId();
62+
$defaultStore = $this->storeManager->getWebsite($websiteId)->getDefaultStore();
63+
64+
if (!is_null($defaultStore)) {
65+
$url = $this->url->getCurrentUrl();
66+
$pos = strpos($url, $this->storeManager->getStore()->getBaseUrl() . $defaultStore->getCode());
67+
68+
if ($this->helper->isHideDefaultStoreCode() && $pos !== false) {
69+
$controller = $observer->getData('controller_action');
70+
$url = str_replace('/' . $defaultStore->getCode() . '/', '/', $url);
71+
$this->actionFlag->set('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, true);
72+
$this->redirect->redirect($controller->getResponse(), $url);
73+
}
74+
}
75+
}
76+
}

Plugin/Model/HideDefaultStoreCode.php

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class HideDefaultStoreCode
2424
public function __construct(
2525
\Noon\HideDefaultStoreCode\Helper\Data $helper,
2626
\Magento\Store\Model\StoreManagerInterface $storeManager
27-
){
27+
) {
2828
$this->helper = $helper;
2929
$this->storeManager = $storeManager;
3030
}
@@ -35,16 +35,13 @@ public function __construct(
3535
* @param string $url
3636
* @return string
3737
*/
38-
public function afterGetBaseUrl(\Magento\Store\Model\Store $subject, $url)
39-
{
40-
$websiteId = $this->storeManager->getStore()->getWebsiteId();
41-
$defaultStore = $this->storeManager->getWebsite($websiteId)->getDefaultStore();
42-
if (
43-
$this->helper->isHideDefaultStoreCode()
44-
&& !is_null($defaultStore)
45-
) {
46-
$url = str_replace('/'.$defaultStore->getCode().'/', '/', $url);
47-
}
48-
return $url;
49-
}
38+
public function afterGetBaseUrl(\Magento\Store\Model\Store $subject, $url)
39+
{
40+
$websiteId = $this->storeManager->getStore()->getWebsiteId();
41+
$defaultStore = $this->storeManager->getWebsite($websiteId)->getDefaultStore();
42+
if ($this->helper->isHideDefaultStoreCode() && !is_null($defaultStore)) {
43+
$url = str_replace('/' . $defaultStore->getCode() . '/', '/', $url);
44+
}
45+
return $url;
46+
}
5047
}

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ php bin/magento setup:upgrade
2121

2222
### composer
2323

24-
```
25-
composer config repositories.noon-hide-default-store-code git https://github.com/alex-79/magento2-hide-default-store-code-from-url.git
26-
composer require noon/hide-default-store-code:dev-master
24+
1. Run the command in Magento2 root directory:
25+
26+
```bash
27+
composer require noon/hide-default-store-code
28+
php bin/magento setup:upgrade
2729
```
2830

2931
## Configuration

composer.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22
"name": "noon/hide-default-store-code",
33
"description": "Magento 2 module for hide Default Store Code",
44
"require": {
5-
"magento/magento-composer-installer": "*"
5+
"magento/framework": "^102.0|^103.0",
6+
"magento/magento-composer-installer": "~0.3.0",
7+
"magento/module-store": "^102.0|^103.0",
8+
"magento/module-backend": "^102.0|^103.0"
69
},
710
"type": "magento2-module",
8-
"version": "1.0.1",
11+
"version": "1.0.2",
912
"autoload": {
1013
"files": [
1114
"registration.php"

etc/events.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
3+
<event name="controller_action_predispatch">
4+
<observer name="Noon_HideDefaultStoreCode_RedirectWithoutStoreCode" instance="Noon\HideDefaultStoreCode\Observer\RedirectWithoutStoreCode" />
5+
</event>
6+
</config>

etc/module.xml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
<?xml version="1.0"?>
2-
<!--
3-
/**
4-
* Copyright © 2015 Magento. All rights reserved.
5-
* See COPYING.txt for license details.
6-
*/
7-
-->
82
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
9-
<module name="Noon_HideDefaultStoreCode" setup_version="1.0.1" />
3+
<module name="Noon_HideDefaultStoreCode" setup_version="1.0.2">
4+
<sequence>
5+
<module name="Magento_Store"/>
6+
<module name="Magento_Backend"/>
7+
</sequence>
8+
</module>
109
</config>

registration.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<?php
2+
23
/**
3-
* Copyright © 2015 Magento. All rights reserved.
4-
* See COPYING.txt for license details.
5-
*/
4+
* Copyright © 2015 Magento. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
67
\Magento\Framework\Component\ComponentRegistrar::register(
7-
\Magento\Framework\Component\ComponentRegistrar::MODULE,
8+
\Magento\Framework\Component\ComponentRegistrar::MODULE,
89
'Noon_HideDefaultStoreCode',
910
__DIR__
10-
);
11+
);

0 commit comments

Comments
 (0)