Небольшие хитрости для Joomla

Материал из Newman's WiKi.

Перейти к: навигация, поиск

В основном здесь указаны советы и хитрости, которые были опробованы на Joomla версии 1.5 и старше.

Содержание

Для пользователя

Снятие блокировки

Joomla имеет привычку блокировать элементы при редактировании. Делается это для исключения коллизий. Но если с сайтом работает неколько пользователей, то это может доставлять некоторые неудобства. Например, пользователь1 начал редактировать статью и при этом закрыл браузер или перешел на другую страницу не сохранив изменения и не нажав кнопку "Отмена". В резулате пользователь2 не может редактировать эту статью. Для снятия блокировки надо иметь права администратора и воспользоваться меню "Инструменты" -> "Сброс блокировок"

Для программиста

Работа с файлами

Часто такое встречается, что для повышения безопастности сайта, настраивают права доступа таким образом, что из скриптов PHP невозможно модифицировать файлы находящиеся в системных папках сервера. При этом существует возможность изменять их через FTP. В Joomla существует возможность работать с файловой системой не напрямую через встроенные функции, а через класс JFile. Этот класс является оберткой для системных функций, а так же может работать через протокол FTP. Естественно протокол FTP должен быть разрешен в системных настройках и должен быть указан адрес хоста, логин и пароль для входа.

Для использования класса JFile нужно подключить требуемый файл.

jimport('joomla.filesystem.file');

Все функции класса статические. Подробней их можно посмотреть в файле описания класса.

Upload файла

Для получения информации о загруженом файле используем стандартный метод

$file = JRequest::getVar( 'file', '', 'files', 'array' );

Первый параметр это имя поля ввода. В результате получаем массив со стандартными полями, как при использовании $_FILES['file']

Дальше проверяем файл и сохраняем его. В переменной $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)

Входим в админку с правильным логином и любым паролем. После этого штатными средствами ставим нужный пароль. И главное не забыть вернуть старую версию файла, который мы поменяли.

Личные инструменты