Как создать и настроить свой веб-сервер на VDS (05 сен 2024)
Осенью самое время заняться установкой и тюнингом своего веб-сервера. Не правда ли?
Хитрости Joomla
- Aleksej
- Автор темы
- Не в сети
- Модератор
Less
Больше
13 года 9 мес. назад #1
от Aleksej
Aleksej создал тему: Хитрости Joomla
Снятие блокировки
Joomla имеет привычку блокировать элементы при редактировании. Делается это для исключения коллизий. Но если с сайтом работает неколько пользователей, то это может доставлять некоторые неудобства. Например, пользователь1 начал редактировать статью и при этом закрыл браузер или перешел на другую страницу не сохранив изменения и не нажав кнопку "Отмена". В результате пользователь2 не может редактировать эту статью. Для снятия блокировки надо иметь права администратора и воспользоваться меню "Инструменты" -> "Сброс блокировок".
Работа с файлами
Часто встречается, что для повышения безопастности сайта - настраивают права доступа таким образом, что из скриптов PHP невозможно модифицировать файлы, находящиеся в системных папках сервера. При этом существует возможность изменять их через FTP. В Joomla существует возможность работать с файловой системой не напрямую (через встроенные функции), а через класс JFile. Этот класс является оберткой для системных функций, а также может работать через протокол FTP. Естественно, протокол FTP должен быть разрешен в системных настройках и должен быть указан адрес хоста, логин и пароль для входа.
Для использования класса JFile нужно подключить требуемый файл.
Все функции класса статические. Подробней их можно посмотреть в файле описания класса.
Upload файла
Для получения информации о загруженом файле используем стандартный метод
Первый параметр - это имя поля ввода. В результате получаем массив со стандартными полями, как при использовании $_FILES
Дальше - проверяем файл и сохраняем его. В переменной $filepath строка с именем файла; куда именно нужно сохранить загруженный файл.
Для проверки файла используется класс MediaHelper Он входит в состав стандартного компонента Joomla media. Ниже продемонстрирован пример подключения нужного файла в контроллер админской компоненты:
Вход без знания пароля
В том случае когда известени логин администратора Joomla, а пароль по каким-то причинам не подходит, то самый быстрый способ попасть в админку - это модифицировать код авторизации.
Находим файл /plugins/authentication/joomla.php. Открываем его на редактирование и находим строку
и делаем так, чтобы условие всегда было истиным. Например, вот так
Входим в админку с правильным логином и любым паролем. После этого штатными средствами устанавливаем нужный пароль. И главное теперь - не забыть вернуть старую версию файла, который мы поменяли.
Joomla имеет привычку блокировать элементы при редактировании. Делается это для исключения коллизий. Но если с сайтом работает неколько пользователей, то это может доставлять некоторые неудобства. Например, пользователь1 начал редактировать статью и при этом закрыл браузер или перешел на другую страницу не сохранив изменения и не нажав кнопку "Отмена". В результате пользователь2 не может редактировать эту статью. Для снятия блокировки надо иметь права администратора и воспользоваться меню "Инструменты" -> "Сброс блокировок".
Работа с файлами
Часто встречается, что для повышения безопастности сайта - настраивают права доступа таким образом, что из скриптов PHP невозможно модифицировать файлы, находящиеся в системных папках сервера. При этом существует возможность изменять их через FTP. В Joomla существует возможность работать с файловой системой не напрямую (через встроенные функции), а через класс JFile. Этот класс является оберткой для системных функций, а также может работать через протокол FTP. Естественно, протокол FTP должен быть разрешен в системных настройках и должен быть указан адрес хоста, логин и пароль для входа.
Для использования класса JFile нужно подключить требуемый файл.
Code:
jimport('joomla.filesystem.file');
Все функции класса статические. Подробней их можно посмотреть в файле описания класса.
Upload файла
Для получения информации о загруженом файле используем стандартный метод
Code:
$file = JRequest::getVar( 'file', '', 'files', 'array' );
Первый параметр - это имя поля ввода. В результате получаем массив со стандартными полями, как при использовании $_FILES
Дальше - проверяем файл и сохраняем его. В переменной $filepath строка с именем файла; куда именно нужно сохранить загруженный файл.
Code:
$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. Ниже продемонстрирован пример подключения нужного файла в контроллер админской компоненты:
Code:
require_once( dirname(dirname(__FILE__)).DS.'com_media'.DS.'helpers'.DS.'media.php' );
Вход без знания пароля
В том случае когда известени логин администратора Joomla, а пароль по каким-то причинам не подходит, то самый быстрый способ попасть в админку - это модифицировать код авторизации.
Находим файл /plugins/authentication/joomla.php. Открываем его на редактирование и находим строку
Code:
if ($crypt == $testcrypt)
и делаем так, чтобы условие всегда было истиным. Например, вот так
Code:
if (1||$crypt == $testcrypt)
Входим в админку с правильным логином и любым паролем. После этого штатными средствами устанавливаем нужный пароль. И главное теперь - не забыть вернуть старую версию файла, который мы поменяли.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
- Автор темы
- Не в сети
- Модератор
13 года 9 мес. назад - 13 года 9 мес. назад #2
от Aleksej
Aleksej ответил в теме Re: Хитрости Joomla
Продолжаем тему.
Рассмотрим, как сделать:
Отображение модуля только на определённых страницах
Чтобы отображать модуль только на определённых страницах, потребуется вставить следующий код:
В этом примере мы выводим позицию модулей user1 только на главной странице.
Отображения модуля по IP-адресу или диапазону адресов
Если нужно, чтобы модули отображались только для определённого IP-адреса или диапазона адресов - используем следующий код:
Итак, для пользователя с IP-адресом 127.0.0.1 позиция модулей user1 будет отображена, а для остальных нет.
Отображение модуля при полном просмотре текста или новости
Для того, чтобы модули отображались лишь при полном просмотре материала, делаем следующее:
Обратите внимание на переменную $task , с ее помощью мы осуществляем проверку.
Отображение модуля только определённому типу пользователей
Выводим модули только для определённых пользователей:
Если на сайт заходит незарегистрированный или неавторизованный пользователь, то в шаблоне загрузятся модули, опубликованные в области user1, а если зарегистрированный — загрузится позиция user2.
Также возможно отобразить модули для определённых групп пользователей:
Рассмотрим, как сделать:
- отображения модуля только на определённых страницах;
- отображения модуля по IP-адресу или диапазону адресов;
- отображение модуля только определённому типу пользователей;
- отображение модуля при полном просмотре текста или новости.
Отображение модуля только на определённых страницах
Чтобы отображать модуль только на определённых страницах, потребуется вставить следующий код:
Code:
<?php
if (($option == '') || ($option == 'com_frontpage')) {
mosLoadModules ( 'user1' );
}
?>
В этом примере мы выводим позицию модулей user1 только на главной странице.
Отображения модуля по IP-адресу или диапазону адресов
Если нужно, чтобы модули отображались только для определённого IP-адреса или диапазона адресов - используем следующий код:
Code:
<?php
if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
mosLoadModules ( 'user1' );
}
?>
Итак, для пользователя с IP-адресом 127.0.0.1 позиция модулей user1 будет отображена, а для остальных нет.
Отображение модуля при полном просмотре текста или новости
Для того, чтобы модули отображались лишь при полном просмотре материала, делаем следующее:
Code:
<?php
if (($option == 'com_content') && ($task == 'view')) {
mosLoadModules ( 'user1' );
}
?>
Обратите внимание на переменную $task , с ее помощью мы осуществляем проверку.
Отображение модуля только определённому типу пользователей
Выводим модули только для определённых пользователей:
Code:
<?php
if (!$my->id) {
mosLoadModules ( 'user1' );
} else {
mosLoadModules ( 'user2' );
}
?>
Если на сайт заходит незарегистрированный или неавторизованный пользователь, то в шаблоне загрузятся модули, опубликованные в области user1, а если зарегистрированный — загрузится позиция user2.
Также возможно отобразить модули для определённых групп пользователей:
Code:
<?php
if ($my->usertype == 'Author') {
mosLoadModules ( 'user1' );
}
?>
Последнее редактирование: 13 года 9 мес. назад пользователем Aleksej.
Спасибо сказали: vitas1978
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Damian
- Не в сети
- Новый участник
Less
Больше
- Сообщений: 1
- Спасибо получено: 0
12 года 5 мес. назад #3
от Damian
Damian ответил в теме Re: Хитрости Joomla
Добрый день.
Что-то не работает. Для Joomla 2.5 точно так же прописывается?
Code:
<?php
if (!$my->id) {
mosLoadModules ( 'user1' );
} else {
mosLoadModules ( 'user2' );
}
?>
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- serge
- Не в сети
- Модератор
Less
Больше
- Сообщений: 986
- Спасибо получено: 146
12 года 5 мес. назад #4
от serge
А я смогу! - А поглядим! - А я упрямый!
serge ответил в теме Re: Хитрости Joomla
Вряд ли. Очень старая ветка форума, все изменилось.
А я смогу! - А поглядим! - А я упрямый!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.