--=REKLAMA=--
Oto szybki sposób dodania klawiszy dostępu w Joomla 1.5. Uwaga: To rozwiązanie ingeruje bezpośrednio w kod Joomla!. Modyfikacja oryginalnych plików może więc być konieczna po kolejnych aktualizacjach Joomla!.
Najpierw uzupełniamy plik component.xml w katalogu /administrator/components/com_menus/models/metadata o definicję parametru, dodając parametr acceskey:
<param name="accesskey" type="text" size="1" default="" label="Accessibility Access Key" description="Accessibility Access Key for the page which this Menu item points to" />
Po uzupełnieniu plik powinien wyglądać jak poniżej:
<?xml version="1.0" encoding="utf-8"?> <metadata> <state> <name>Component</name> <description>Component Parameters</description> <params> <param name="page_title" type="text" size="30" default="" label="Page Title" description="PARAMPAGETITLE" /> <param name="show_page_title" type="radio" default="1" label="Show Page Title" description="SHOW/HIDE THE PAGES TITLE"> <option value="0">No</option> <option value="1">Yes</option> </param> <param name="pageclass_sfx" type="text" size="20" default="" label="Page Class Suffix" description="PARAMPAGECLASSSFX" /> <param name="@spacer" type="spacer" default="" label="" description="" /> <param name="menu_image" type="imagelist" directory="/images/stories" hide_default="1" default="" label="Menu Image" description="PARAMMENUIMAGE" /> <param name="@spacer" type="spacer" default="" label="" description="" /> <param name="secure" type="radio" default="0" label="SSL Enabled" description="PARAMSECURE"> <option value="-1">Off</option> <option value="0">Ignore</option> <option value="1">On</option> </param> <param name="@spacer" type="spacer" default="" label="" description="" /> <param name="accesskey" type="text" size="1" default="" label="Accessibility Access Key" description="Accessibility Access Key for the page which this Menu item points to" /> </params> <advanced /> </state> </metadata>
Następnie zmodyfikuj obsługujący witrynę plik \modules\mod_mainmenu\helper.php, dodając:
// ACCESS KEY HACK - czesc 1 $accessKey = $iParams->get('accesskey'); $tmp->accessKey = $accessKey;
oraz
// ACCESS KEY HACK - czesc 2 if ($tmp->accessKey) $data = '<a href="'.$tmp->url.'" accesskey="'.$tmp->accessKey.'">'.$image.$tmp->name.'</a>'; else $data = '<a href="'.$tmp->url.'" >'.$image.$tmp->name.'</a>';
w funkcji _getItemData($item), jak poniżej:
function _getItemData($item) { $data = null; // Menu Link is a special type that is a link to another item if ($item->type == 'menulink') { $menu = &JSite::getMenu(); if ($tmp = clone($menu->getItem($item->query['Itemid']))) { $tmp->name = '<span><![CDATA['.$item->name.']]></span>'; $tmp->mid = $item->id; $tmp->parent = $item->parent; } else { return false; } } else { $tmp = clone($item); $tmp->name = '<span><![CDATA['.$item->name.']]></span>'; } $iParams = new JParameter($tmp->params); if ($iParams->get('menu_image') && $iParams->get('menu_image') != -1) { $image = '<img src="'.JURI::base(true).'/images/stories/'.$iParams->get('menu_image').'" alt="" />'; } else { $image = null; } // ACCESS KEY HACK - czesc 1 ############################## $accessKey = $iParams->get('accesskey'); $tmp->accessKey = $accessKey; switch ($tmp->type) { case 'separator' : return '<span class="separator">'.$image.$tmp->name.'</span>'; break; case 'url' : if ((strpos($tmp->link, 'index.php?') !== false) && (strpos($tmp->link, 'Itemid=') === false)) { $tmp->url = $tmp->link.'&Itemid='.$tmp->id; } else { $tmp->url = $tmp->link; } break; default : $router = JSite::getRouter(); $tmp->url = $router->getMode() == JROUTER_MODE_SEF ? 'index.php?Itemid='.$tmp->id : $tmp->link.'&Itemid='.$tmp->id; break; } // Print a link if it exists if ($tmp->url != null) { // Handle SSL links $iSecure = $iParams->def('secure', 0); if ($tmp->home == 1) { $tmp->url = JURI::base(); } elseif (strcasecmp(substr($tmp->url, 0, 4), 'http') && (strpos($tmp->link, 'index.php?') !== false)) { $tmp->url = JRoute::_($tmp->url, true, $iSecure); } else { $tmp->url = str_replace('&', '&', $tmp->url); } switch ($tmp->browserNav) { default: case 0: // _top // ACCESS KEY HACK - czesc 2 ############################### if ($tmp->accessKey) $data = '<a href="'.$tmp->url.'" accesskey="'.$tmp->accessKey.'">'.$image.$tmp->name.'</a>'; else $data = '<a href="'.$tmp->url.'" >'.$image.$tmp->name.'</a>'; break; case 1: // _blank $data = '<a href="'.$tmp->url.'" target="_blank">'.$image.$tmp->name.'</a>'; break; case 2: // window.open $attribs = 'toolbar=no,location=no,status=no,menubar=no, scrollbars=yes,resizable=yes,'.$this->_params->get('window_open'); // hrm...this is a bit dickey $link = str_replace('index.php', 'index2.php', $tmp->url); $data = '<a href="'.$link.'" onclick="window.open(this.href,\'targetWindow\',\''.$attribs.'\'); return false;">'.$image.$tmp->name.'</a>'; break; } } else { $data = '<a>'.$image.$tmp->name.'</a>'; } return $data; }
Zaloguj się na stronę zaplecza administracyjnego i otwórz do edycji dowolną pozycję w menu. W sekcji Parametry : System po prawej stronie znajdziesz możliwość ustawienia parametru Klawisz dostępu. Określ go i zapisz nowe ustawienia. Gotowe!