Снятие блокировки
Joomla имеет привычку блокировать элементы при редактировании. Делается это для исключения коллизий. Но если с сайтом работает неколько пользователей, то это может доставлять некоторые неудобства. Например, пользователь1 начал редактировать статью и при этом закрыл браузер или перешел на другую страницу не сохранив изменения и не нажав кнопку "Отмена". В результате пользователь2 не может редактировать эту статью. Для снятия блокировки надо иметь права администратора и воспользоваться меню "Инструменты" -> "Сброс блокировок".
Работа с файлами
Часто встречается, что для повышения безопастности сайта - настраивают права доступа таким образом, что из скриптов PHP невозможно модифицировать файлы, находящиеся в системных папках сервера. При этом существует возможность изменять их через FTP. В Joomla существует возможность работать с файловой системой не напрямую (через встроенные функции), а через класс JFile. Этот класс является оберткой для системных функций, а также может работать через протокол FTP. Естественно, протокол FTP должен быть разрешен в системных настройках и должен быть указан адрес хоста, логин и пароль для входа.
Для использования класса JFile нужно подключить требуемый файл.
jimport('joomla.filesystem.file');
Все функции класса статические. Подробней их можно посмотреть в файле описания класса.
Upload файла
Для получения информации о загруженом файле используем стандартный метод
$file = JRequest::getVar( 'file', '', 'files', 'array' );
Первый параметр - это имя поля ввода. В результате получаем массив со стандартными полями, как при использовании $_FILES
Дальше - проверяем файл и сохраняем его. В переменной $filepath строка с именем файла; куда именно нужно сохранить загруженный файл.
$uploaded=true;
$err="";
if (!MediaHelper::canUpload( $file, $err )) {
$uploaded=false;
} else
{
if (JFile::upload($file['tmp_name'], $filepath))
{
$uploaded=true;
} else
{
$uploaded=false;
$err='Can\'t save file '.$filepath;
}
}
Для проверки файла используется класс MediaHelper Он входит в состав стандартного компонента Joomla media. Ниже продемонстрирован пример подключения нужного файла в контроллер админской компоненты:
require_once( dirname(dirname(__FILE__)).DS.'com_media'.DS.'helpers'.DS.'media.php' );
Вход без знания пароля
В том случае когда известени логин администратора Joomla, а пароль по каким-то причинам не подходит, то самый быстрый способ попасть в админку - это модифицировать код авторизации.
Находим файл /plugins/authentication/joomla.php. Открываем его на редактирование и находим строку
if ($crypt == $testcrypt)
и делаем так, чтобы условие всегда было истиным. Например, вот так
if (1||$crypt == $testcrypt)
Входим в админку с правильным логином и любым паролем. После этого штатными средствами устанавливаем нужный пароль. И главное теперь - не забыть вернуть старую версию файла, который мы поменяли.