--=REKLAMA=--

Jak dodać klawisze dostepu?

Z Joomla!WikiPL

Wersja Zwiastun (dyskusja | edycje) z dnia 23:27, 13 gru 2013

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

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.'&amp;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('&', '&amp;', $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!‏‎

Dziękujemy za wkład

» Stefan Wajda [zwiastun],