Skip to content

Commit 4120bdf

Browse files
authored
Merge pull request #31 from mageprince/develop-1.0.7
Solve FAQ url issue
2 parents 379b846 + c8d78ed commit 4120bdf

File tree

3 files changed

+51
-8
lines changed

3 files changed

+51
-8
lines changed

Controller/Index/Index.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public function execute()
6565
$metaDescriptionConfig = $this->helper->getConfig('faqtab/seo/meta_description');
6666

6767
$resultPage->getConfig()->getTitle()->set($metaTitleConfig);
68-
$resultPage->getConfig()->setDescription($metaKeywordsConfig);
69-
$resultPage->getConfig()->setKeywords($metaDescriptionConfig);
68+
$resultPage->getConfig()->setDescription($metaDescriptionConfig);
69+
$resultPage->getConfig()->setKeywords($metaKeywordsConfig);
7070

7171
return $resultPage;
7272
}

Observer/ConfigChange.php

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,18 @@
1212

1313
namespace Prince\Faq\Observer;
1414

15+
use Magento\Framework\App\Config\ScopeConfigInterface;
1516
use Magento\Framework\Event\ObserverInterface;
1617
use Magento\Framework\Event\Observer as EventObserver;
1718
use Magento\Framework\App\RequestInterface;
1819
use Magento\Framework\App\Config\Storage\WriterInterface;
20+
use Magento\UrlRewrite\Model\UrlRewriteFactory;
21+
use Magento\Store\Model\StoreManagerInterface;
1922

2023
class ConfigChange implements ObserverInterface
2124
{
25+
const REQUEST_PATH = 'faq';
26+
2227
/**
2328
* @var RequestInterface
2429
*/
@@ -28,28 +33,66 @@ class ConfigChange implements ObserverInterface
2833
* @var WriterInterface
2934
*/
3035
private $configWriter;
36+
/**
37+
* @var UrlRewriteFactory
38+
*/
39+
private $urlRewriteFactory;
40+
/**
41+
* @var StoreManagerInterface
42+
*/
43+
private $storeManager;
44+
/**
45+
* @var ScopeConfigInterface
46+
*/
47+
private $scopeConfig;
3148

3249
/**
3350
* ConfigChange constructor.
3451
* @param RequestInterface $request
3552
* @param WriterInterface $configWriter
53+
* @param UrlRewriteFactory $urlRewriteFactory
54+
* @param StoreManagerInterface $storeManager
55+
* @param ScopeConfigInterface $scopeConfig
3656
*/
3757
public function __construct(
3858
RequestInterface $request,
39-
WriterInterface $configWriter
59+
WriterInterface $configWriter,
60+
UrlRewriteFactory $urlRewriteFactory,
61+
StoreManagerInterface $storeManager,
62+
ScopeConfigInterface $scopeConfig
4063
) {
4164
$this->request = $request;
4265
$this->configWriter = $configWriter;
66+
$this->urlRewriteFactory = $urlRewriteFactory;
67+
$this->storeManager = $storeManager;
68+
$this->scopeConfig = $scopeConfig;
4369
}
4470

4571
public function execute(EventObserver $observer)
4672
{
4773
$faqParams = $this->request->getParam('groups');
48-
$faqUrlVal = $faqParams['seo']['fields']['faq_url']['value'];
49-
if($faqUrlVal) {
50-
$urlKey = str_replace(' ', '-', $faqUrlVal);
74+
$faqUrlVal = $faqParams['seo']['fields'];
75+
if(key_exists('faq_url', $faqUrlVal)) {
76+
$urlKey = str_replace(' ', '-', $faqUrlVal['faq_url']['value']);
5177
$filterUrlKey = preg_replace('/[^A-Za-z0-9\-]/', '', $urlKey);
5278
$this->configWriter->save('faqtab/seo/faq_url', $filterUrlKey);
79+
$storeId = $this->storeManager->getStore()->getId();
80+
$faqUrl = $this->scopeConfig->getValue(
81+
'faqtab/seo/faq_url',
82+
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
83+
$storeId
84+
);
85+
$urlRewriteModel = $this->urlRewriteFactory->create();
86+
$rewritecollection = $urlRewriteModel->getCollection()
87+
->addFieldToFilter('request_path', self::REQUEST_PATH)
88+
->addFieldToFilter('store_id', $storeId)
89+
->getFirstItem();
90+
$urlRewriteModel->load($rewritecollection->getId());
91+
$urlRewriteModel->setStoreId($storeId);
92+
$urlRewriteModel->setTargetPath($faqUrl);
93+
$urlRewriteModel->setRequestPath(self::REQUEST_PATH);
94+
$urlRewriteModel->setredirectType(301);
95+
$urlRewriteModel->save();
5396
}
5497
return $this;
5598
}

etc/adminhtml/system.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
</group>
2222
<group id="seo" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
2323
<label>Search Engine Optimization </label>
24-
<field id="faq_url" translate="label" sortOrder="10" type="text" showInDefault="1" showInWebsite="1" showInStore="1">
24+
<field id="faq_url" translate="label" sortOrder="10" type="text" showInDefault="1">
2525
<label>FAQ Url</label>
26-
<validate>required-entry</validate>
26+
<validate>required-entry validate-identifier</validate>
2727
</field>
2828
<field id="meta_title" translate="label" sortOrder="20" type="text" showInDefault="1" showInWebsite="1" showInStore="1">
2929
<label>Meta Title</label>

0 commit comments

Comments
 (0)