Plessea01

Title в ссылках меню Joomla 1.5

 Ни для кого не секрет, что по умолчанию Joomla не обладает функционалом вывода тайтлов для пунктов меню. И хотя вопрос о том, что поисковые системы будут делать ссылки с тайтлами приоритетными, остаётся спорным, эту ситуацию достаточно легко подправить, произведя небольшую косметическую работу: лишним это не будет.

Да и удобнее это с точки зрения юзера: в title можно сделать расширенное описание - что ждёт пользователя при клике на этом пункте меню.

1. Добавляем поле в админке для ввода title ссылки

В файле administrator/components/com_menus/views/item/tmpl/form.php после кода:

<tr>
<td align="right">
<?php echo JText::_( 'Alias' ); ?>:
</td>
<td>
<input type="text" name="alias" size="50" maxlength="255" value="<?php echo $this->item->alias; ?>" />
</td>
</tr>

вставляем:

<tr>
<td align="right">
<?php echo JText::_( 'Linktitle' ); ?>:
</td>
<td>
<input type="text" name="linktitle" size="50" maxlength="255" value="<?php echo $this->item->linktitle; ?>" />
</td>
</tr>

 

 

2. Добавляем языковую переменную

В файле administrator/language/ru-RU/ru-RU.com_menus.ini вставляем

LINKTITLE=Title ссылки

 

 

3. Добавляем поле в базу данных

Заходим в phpMyAdmin и выполняем запрос:

ALTER TABLE `jos_menu` ADD `linktitle` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ;

 

 Обратите внимание, что если вы меняли префикс БД при установке Джумлы, нужно заменить jos_menu на пройпрефикс_menu

 

 

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 = ''.$image.$tmp->name.'';
 break;
 case 1:
 // _blank
 $data = ''.$image.$tmp->name.'';
 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 = ''.$image.$tmp->name.'';
 break;

и меняем на

default:
 case 0:
 // _top
 if ($item->linktitle != null)
 {
 $data = ''.$image.$tmp->name.'';
 } else {
 $data = ''.$image.$tmp->name.'';
 }
 break;
 case 1:
 // _blank
 if ($item->linktitle != null)
 {
 $data = ''.$image.$tmp->name.'';
 } else {
 $data = ''.$image.$tmp->name.'';
 }
 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 = ''.$image.$tmp->name.'';
 } else {
 $data = ''.$image.$tmp->name.'';
 }
 break;

 

 

6. Если в админке title не прописан...

 В файле modules/mod_mainmenu/legacy.php находим код

и меняем на

if ($mitem->linktitle != null)
 {
 $txt = 'url . '" ' . $id . '>' . $mitem->name . '';
 } else {
 $txt = 'url . '" ' . $id . '>' . $mitem->name . '';
 }

Здесь мы проверяем: если в админке поле title заполнено вручную - это значение выведется в соответствующем пункте меню, а если поле остаётся пустым - в title будет прописан заголовок пункта меню.

Всё, наслаждаемся.

Добавить комментарий


Защитный код
Обновить

Copyright © 2007-2017. Здесь живёт Жора Дорфман.