如何设置外部URL链接到Magento管理菜单

时间:2015-04-03 11:55:30

标签: php xml magento magento-1.7

我正在开发一个模块,我使用adminhtml.xml在Magento管理员中创建了一个菜单。

现在我想将其中一个菜单链接到外部网址并设置target="blank"。但我不确定如何在adminhtml.xml中执行此操作。这是我的代码。

<?xml version="1.0"?>
<config>
    <menu>
        <system>
            <children>
                <convert translate="title">
                    <children>
                        <importmagmi translate="title" module="importexport">
                            <title>MagMi Importer</title>
                            <action><url helper="https://externalurl.com"/></action>
                            <sort_order>100</sort_order>
                        </importmagmi>
                    </children>
                </convert>
            </children>
        </system>
    </menu>
</config>

当我在外部网址之前检查其添加当前域名时。例如:http://mydomainname.com/https://externalurl.com

我想知道如何只设置外部网址?

3 个答案:

答案 0 :(得分:3)

<action>标记内,您可以放置​​模块的module/controller/action

然后创建此操作并添加如下内容:

public function locationAction()
{
    $this->_redirectUrl('http://www.example.com/');
}

有关Magento控制器操作中的标准重定向实现,请参阅Mage_Core_Controller_Varien_Action::_redirectUrl

答案 1 :(得分:1)

不幸的是,这不是开箱即用的。为此,您必须覆盖Mage_Adminhtml_Block_Page_Menu类。

我建议修改_buildMenuArray方法以支持&#34; external_url&#34; adminhtml.xml中的config选项如此

if( $child->external_url ) {
    $menuArr['url'] = (string)$child->external_url;
    $menuArr['is_external'] = true;
} 
elseif ($child->action) {
    $menuArr['url'] = $this->_url->getUrl((string)$child->action, array('_cache_secret_key' => true));
} else {
    $menuArr['url'] = '#';
    $menuArr['click'] = 'return false';
}
分别为

getMenuLevel方法

$html .= '<li ' . (!empty($item['children']) ? 'onmouseover="Element.addClassName(this,\'over\')" '
            . 'onmouseout="Element.removeClassName(this,\'over\')"' : '') . ' class="'
            . (!$level && !empty($item['active']) ? ' active' : '') . ' '
            . (!empty($item['children']) ? ' parent' : '')
            . (!empty($level) && !empty($item['last']) ? ' last' : '')
            . ' level' . $level . '"> <a ' . ($item['is_external'] ? 'target="_blank" ' : '') . 'href="' . $item['url'] . '" '
            . (!empty($item['title']) ? 'title="' . $item['title'] . '"' : '') . ' '
            . (!empty($item['click']) ? 'onclick="' . $item['click'] . '"' : '') . ' class="'
            . ($level === 0 && !empty($item['active']) ? 'active' : '') . '"><span>'
            . $this->escapeHtml($item['label']) . '</span></a>' . PHP_EOL;

然后您可以添加到您的配置

<?xml version="1.0"?>
<config>
    <menu>
        <system>
            <children>
                <convert translate="title">
                    <children>
                        <importmagmi translate="title" module="importexport">
                            <title>MagMi Importer</title>
                            <external_url>https://externalurl.com</external_url>                                <sort_order>100</sort_order>
                        </importmagmi>
                    </children>
                </convert>
            </children>
        </system>
    </menu>
</config>

请记住重写类,不要修改核心类。

答案 2 :(得分:-1)

<?php
$url = 'http://example.com';
$this->_redirectUrl('http://example.com');

Mage::app()->getResponse()->setRedirect($url)->sendResponse();

Mage::app()->getFrontController()->getResponse()->setRedirect($url)->sendResponse();
?>