Рассмотрим такой момент, как создание title в меню Joomla. По умолчанию этот атрибут для меню в движке Joomla отсутствует и прописать его нигде нельзя. Плагины и компоненты для вывода title в меню Joomla мне не встречались, но исправить ситуацию можно немного модифицировав несколько файлов. Итак приступим…
1. Для начала добавим поле в админке для ввода title ссылки.
В файле administrator/components/com_menus/views/item/tmpl/form.php после кода:
<tr>
<td class="key" align="right">
<?php echo JText::_( 'Alias' ); ?>:
</td>
<td>
<input class="inputbox" type="text" name="alias" size="50" maxlength="255" value="<?php echo $this->item->alias; ?>" />
</td>
</tr>
Вставляем код:
<!-- Title menu Joomla -->
<tr>
<td class="key" align="right">
<?php echo JText::_( 'Linktitle' ); ?>:
</td>
<td>
<input class="inputbox" type="text" name="linktitle" size="50" maxlength="255" value="<?php echo $this->item->linktitle; ?>" />
</td>
</tr>
<!-- Title menu Joomla END -->
2. Добавим языковую переменную.
В файле administrator/language/ru-RU/ru-RU.com_menus.ini
После:
ALIAS=Псевдоним
вставляем:
LINKTITLE=Title ссылки
3. Теперь нам нужно добавить поле в базу данных. Заходим в phpMyAdmin и выполняем запрос (Вкладка SQL), если меняли префик, то правим jos_menu на свойпрефикс_menu
ALTER TABLE `jos_menu` ADD `linktitle` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;
4. В файле libraries/joomla/database/table/menu.php
После кода:
class JTableMenu extends JTable {
Вставляем
var $linktitle = null;
5. Далее выводим title ссылки в лицевой части сайта.
В файле modules/mod_mainmenu/helper.php находим код:
default:
case 0:
// _top
$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;
И заменяем его на код:
default:
case 0:
// _top
if ($item->linktitle != null)
{
$data = '<a title="'.$item->linktitle.'" href="'.$tmp->url.'">'.$image.$tmp->name.'</a>';
} else {
$data = '<a title="'.$item->name.'" href="'.$tmp->url.'">'.$image.$tmp->name.'</a>';
}
break;
case 1:
// _blank
if ($item->linktitle != null)
{
$data = '<a title="'.$item->linktitle.'" href="'.$tmp->url.'" target="_blank">'.$image.$tmp->name.'</a>';
} else {
$data = '<a title="'.$item->name.'" 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);
if ($item->linktitle != null)
{
$data = ‘<a title=”‘.$item->linktitle.'” href=”‘.$link.'” onclick=”window.open(this.href,\’targetWindow\’,\”.$attribs.’\’);return false;”>’.$image.$tmp->name.'</a>’;
} else {
$data = ‘<a title=”‘.$item->name.'” href=”‘.$link.'” onclick=”window.open(this.href,\’targetWindow\’,\”.$attribs.’\’);return false;”>’.$image.$tmp->name.'</a>’;
}
break;
6. В файле modules/mod_mainmenu/legacy.php находим код:
$txt = '<a href="' . $mitem->url . '" class="' . $menuclass . '" ' . $id . '>' . $mitem->name . '</a>';
И заменяем на код:
if ($mitem->linktitle != null)
{
$txt = '<a title="' . $mitem->linktitle . '" href="' . $mitem->url . '" class="' . $menuclass . '" ' . $id . '>' . $mitem->name . '</a>';
} else {
$txt = '<a title="' . $mitem->name . '" href="' . $mitem->url . '" class="' . $menuclass . '" ' . $id . '>' . $mitem->name . '</a>';
}
Ну вот и все. Теперь наше меню будет обладать атрибутом title, который мы вручную можем прописать из админки. Если оставить поле пустым, в title будет прописан анкор ссылки.