上記のヒントのためにありがとうございます。コアに過負荷をかけることなく、「Magentoのようなモジュール」にコードを統合しました。
作成するための3つのファイルだけがあります。
app/code/local/MyCompany/MyModule/Controller/Varien/Router/Standard.php
app/code/local/MyCompany/MyModule/etc/config.xml
app/etc/modules/MyCompany_MyModule.xml
をapp/etc/modules/MyCompany_MyModule.xml
では、次の興味のないものを貼り付けます。app/code/local/MyCompany/MyModule/etc/config.xml
で
<?xml version="1.0"?>
<config>
<modules>
<MyCompany_MyModule>
<active>true</active>
<codePool>local</codePool>
</MyCompany_MyModule>
</modules>
</config>
ルータ・コンフィギュレーションを貼り付けます。
<?xml version="1.0"?>
<config>
<modules>
<MyCompany_MyModule>
<version>0.1.0</version>
</MyCompany_MyModule>
</modules>
<default>
<web>
<routers>
<standard>
<area>frontend</area>
<class>MyCompany_MyModule_Controller_Varien_Router_Standard</class>
</standard>
</routers>
</web>
</default>
</config>
はまた、 app/code/local/MyCompany/MyModule/Controller/Varien/Router/Standard.php
のロジックを実装する上:
<?php
class MyCompany_MyModule_Controller_Varien_Router_Standard extends Mage_Core_Controller_Varien_Router_Standard {
protected function _checkShouldBeSecure($request, $path='') {
parent::_checkShouldBeSecure($request, $path);
if (!$this->_shouldBeSecure($path) && Mage::app()->getStore()->isCurrentlySecure()) {
$url = $this->_getCurrentUnsecureUrl($request);
Mage::app()->getFrontController()->getResponse()
->setRedirect($url)
->sendResponse();
exit;
}
}
protected function _getCurrentUnsecureUrl($request) {
if ($alias = $request->getAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS)) {
return Mage::getBaseUrl('link', false).ltrim($alias, '/');
}
return Mage::getBaseUrl('link', false).ltrim($request->getPathInfo(), '/');
}
}
残念ながら、そこに問題を修正した観察する何のイベントはなかった...しかし、ルータをオーバーライドすることは(技術的に)置き換えるより(更新用)優れています。追加の知識については
乾杯はまさにそれを発見しました。 –