不幸的是,這是不可能的。爲了這個工作,你必須重寫Mage_Adminhtml_Block_Page_Menu
類。
我建議修改_buildMenuArray
方法,以支持「external_url」配置在adminhtml.xml像這樣
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>
記住重寫類並且不要修改核心類。
儘可能防止類覆蓋。 – hakre 2015-04-03 19:42:39
你說的對,當然可以的話,應該防止課程重寫。在這種情況下,這是不可能的,因爲這是按照原始問題的要求在新窗口中打開鏈接('target ='_blank'')的唯一方法。 – Rinda 2015-04-07 10:20:58