@Ostap26

Как подключить созданный мной модуль Magento чтобы он реагировал на events?

Создал модуль в Magento , подключил его в админке, но никак не могу использовать его на сайте. При переходе на главную страницу сайта/index.php должен делать 301 редирект на главную страницу без index.php.
Вот код файлов модуля:
app/local/Mymodule/SEO/etc/config.xml
<?xml version="1.0" ?>
<config>
<global>
    <modules>
        <Mymodule_SEO>
            <version>0.0.1</version>
        </Mymodule_SEO>
    </modules>
          <models>
            <SEO>
                <class>Mymodule_SEO_Model</class>
            </SEO>
        </models>
		<events>
			<controller_action_layout_generate_blocks_before>
				<observers>
					<SEO>
						<type>singleton</type>
						<class>SEO/Observer</class>
						<method>redirect</method>
					</SEO>
				</observers>
			</controller_action_layout_generate_blocks_before>
		</events>
</global>
</config>

app/local/Mymodule/SEO/model/Observer.php:
class Mymodule_SEO_Model_Observer
{
	public function redirect($observer) {
			if($_SERVER['REQUEST_URI'] == "/index.php") {
				header("HTTP/1.1 301 Moved Permanently");
				header("Location: ".Mage::getBaseUrl('web'));
				exit();
      }
}

app/etc/modules/Mymodule_SEO.xml
<?xml version="1.0"?>
<config>
    <modules>
        <Mymodule_SEO>
            <active>true</active>
            <codePool>local</codePool>
        </Mymodule_SEO>
    </modules>
</config>

Пробовал разные events .При переходе на sitedomen.lc/idex.php нечего не происходит. Проверял в админке модуль включен. Также могу вызвать redirect() в созданом в корне сайта файле test.php :
<?php
require_once 'app/Mage.php';
Mage::app();

$Net=Mage::getModel("SEO/observer");
$Net->redirect();
  • Вопрос задан
  • 414 просмотров
Пригласить эксперта
Ответы на вопрос 2
z0rg
@z0rg
senior developer / devops
Ваша задача решается через .htaccess если у вас Apache или через location{} в конфиге если у вас Nginx + включенный rewrite в Magento.

  1. Тест при помощи test.php вообще не корректен.
  2. Вы заюзали событие controller_action_layout_generate_blocks_before. Подумайте теперь по названию как часто оно будет вызываться, очень часто, просто жуть как часто, а вы всего то делаете редирект.
  3. app/local/Mymodule/SEO/model/Observer.php - Model обязательно с большой буквы
Ответ написан
Комментировать
Antiless
@Antiless
если вам не нужен "index.php" в урле, то его можно отключить в System/Configuration/General/Web/Search Engines Optimization/Use Web Server Rewrites: Yes
или, можно зайти в Catalog/URL Rewrite Management / add url rewrite / Create URL Rewrite: custom / Redirect: Permanentl (301)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы