Переделываем компонент 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');
}