Как добавить атрибут rel к пункту меню Joomla 2.5?

Как добавить атрибут rel к пункту меню Joomla 2.5?

 slikNET    2013-09-04    Joomla 0 комментариев

Из стандартных средств Joomla в пункте меню, в параметрах отображения ссылки можно использовать перечень параметров, такие как: «Описание ссылки», «CSS-класс ссылки» и т.д. сейчас нету смысла все перечислять. Я веду к тому что нет возможности добавить в пункт меню, непосредственно в саму ссылку пункта меню, атрибут rel. В одном из моих проектов понадобился такой функционал. Поискав в интернете, ничего подходящего я не нашел, пришлось сесть самому и во всем разобраться.

И так что нужно сделать для того что бы добавить атрибут rel в пункт меню Jomla:

1) Находим файл administrator/components/com_menus/models/forms/item_alias.xml, после кода

<field name="menu-anchor_css" type="text"
    label="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_LABEL"
    description="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_DESC" />

добавляем следующий код:

<field name="menu-anchor_rel" type="text" label="rel" description="rel" />

2) Далее, в этой же директории правим файл administrator/components/com_menus/models/forms/item_component.xml, после кода:

<field name="menu-anchor_css" type="text"
    label="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_LABEL"
    description="COM_MENUS_ITEM_FIELD_ANCHOR_CSS_DESC" />

добавляем следующий код:

<field name="menu-anchor_rel" type="text" label="rel" description="rel" />

3) И снова в этой директории правим administrator/components/com_menus/models/forms/item_separator.xml, после строк:

<field name="menu_image" type="media"
    label="COM_MENUS_ITEM_FIELD_MENU_IMAGE_LABEL"
    description="COM_MENUS_ITEM_FIELD_MENU_IMAGE_DESC" />

Нужно прописать:

<field name="menu-anchor_rel" type="text" label="rel" description="rel" />

 

И так, получится что в трех файлах item_alias.xml | item_component.xml | item_separator.xml, мы прописали настройки для атрибута rel. Теперь нужно эти настройки вывести. Что для этого нужно:

1) Переходим в модуль меню и открываем файл modules/mod_menu/helper.php. В нем ищем строку

$item->anchor_title = htmlspecialchars($item->params->get('menu-anchor_title', ''), ENT_COMPAT, 'UTF-8', false);

После нее пишем:

$item->anchor_rel = htmlspecialchars($item->params->get('menu-anchor_rel', ''), ENT_COMPAT, 'UTF-8', false);

2) Теперь нужно править следующие файлы. Открываем modules/mod_menu/tmpl/default_component.php. И после строки

$title = $item->anchor_title ? 'title="'.$item->anchor_title.'" ' : '';

Пишем:

$rel = $item->anchor_rel ? 'rel="'.$item->anchor_rel.'" ' : '';

Но это еще не все. Теперь в этом же файле ищем:

switch ($item->browserNav) :
  default:
  case 0: ?>
    <a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
    break;
  case 1:
// _blank ?>
    <a <?php echo $class; ?>href="<?php echo $item->flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
    break;
  case 2:
// window.open ?>
    <a <?php echo $class; ?>href="<?php echo $item->flink; ?>" onclick=" window.open(this.href,'targetWindow', 'toolbar=no,location=no, status=no,     menubar=no, scrollbars=yes, resizable=yes'); return false; " <?php echo $title; ?>><?php echo $linktype; ?> </a>
<?php
    break;
endswitch;

И меняем все это на:

switch ($item->browserNav) :
    default:
    case 0:
?><a <?php echo $rel; ?> <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
  break;
    case 1:
// _blank
?><a <?php echo $rel; ?> <?php echo $class; ?>href="<?php echo $item->flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
  break;
    case 2:
// window.open
?><a <?php echo $rel; ?> <?php echo $class; ?>href="<?php echo $item->flink; ?>" onclick="window.open(this.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a>
<?php
  break;
endswitch;

3) Опять же, открываем modules/mod_menu/tmpl/default_separator.php. Ищем:

$title = $item->anchor_title ? 'title="'.$item->anchor_title.'" ' : '';

После нее добавляем:

$rel = $item->anchor_rel ? 'rel="'.$item->anchor_rel.'" ' : '';

4) И последний файл: modules/mod_menu/tmpl/default_url.php. Открываем и ищем:

$title = $item->anchor_title ? 'title="'.$item->anchor_title.'" ' : '';

После нее пишем:

$rel = $item->anchor_rel ? 'rel="'.$item->anchor_rel.'" ' : '';

Снова в этом файле нужно найти:

switch ($item->browserNav) :
    default:
    case 0:
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
  break;
    case 1:
// _blank
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
  break;
    case 2:
// window.open
    $options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$params->get('window_open');
    ?><a <?php echo $class; ?>href="<?php echo $flink; ?>" onclick="window.open(this.href,'targetWindow','<?php echo $options;?    >');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
  break;
endswitch;

И поменять на:

switch ($item->browserNav) :
    default:
    case 0:
?><a <?php echo $rel; ?> <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
  break;
    case 1:
// _blank
?><a <?php echo $rel; ?> <?php echo $class; ?>href="<?php echo $flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
  break;
    case 2:
// window.open
    $options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$params->get('window_open');
    ?><a <?php echo $rel; ?> <?php echo $class; ?>href="<?php echo $flink; ?>" onclick="window.open(this.href,'targetWindow','<?php echo $options;?>');     return false;" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
  break;
endswitch;

И после всех этих действий в админке появится параметр rel, который выводится в ссылку пункта меню

rel_for_items_joomla2.5

И вот что получилось

rel_for_items_joomla2.5_result