Печать

Переделываем компонент Joomla 1.5 под 2.5. Изменения

Если установить компонент Джумлы 1.5 под версией 2.5. Установка "старого" дистрибутива прошла успешно, все файлы скопировались, необходимая для работа таблица в базе данных создалась. Работоспособным оказался вид отчетов, однако вид ввода результатов вызвал Fatal error: Call to a member function redirect() on a non-object. Это нормально, в новой ветке появились новые классы, старые перестали существовать, часть их функционала переехала в другие классы. Будем исправлять, а также в качестве бонуса добавим генерацию "хлебных крошек" (breadcrumbs, PathWay, навигация).

1. Глобальная переменная $mainframe

Функция redirect, вызвавшая фатальную ошибку, принажделит глобальному экземпляру класса $mainframe, который в новой ветке перестал существовать. Вместо него следует использовать JFactory::getApplication():
Таблица миграции Joomla 1.5->2.5

Старый код Joomla 1.5 Новый код Joomla 1.7/2.5
Получение параметров компонента global $mainframe;
$params = &$mainframe->getParams();
$app = &JFactory::getApplication();
$params = $app->getParams();
Редирект global $mainframe;
$mainframe->redirect($url, 'Текст сообщения');
$app = &JFactory::getApplication();
$app->redirect($url, 'Текст сообщения');
Хлебные крошки $pathway =& $mainframe->getPathWay(); $pathway = JSite::getPathWay();


Соответственно во всех файлах компонента следует внести требуемые изменения.

2. Хлебные крошки

Имеет смысл добавить хлебные крошки только для отчетов. В начале файла шаблона Вида \views\showresults\tmpl\default.php добавить:

$pathway = JSite::getPathWay(); 


Сразу после комментария "показываем ДЕТАЛИЗИРОВАННЫЙ ОТЧЕТ по ординатору" добавить код:

$pathway->addItem('Успеваемость ординаторов', progress_url::showresults());
$pathway->addItem($ids[$id]);


Функция showresults, объявленная в хелпере, требует небольшой доработки:

function showresults($id = null)
  {
  return 'index.php?option=com_progress&view=showresults'.
  ($id ? '&id='.$id : null).'&Itemid='.JRequest::getVar('Itemid');
  }
Интересная статья? Поделись ей с другими: