Joomla 4. Компонент K2 и форк K2ForJ4 (18 янв 2024)

Если вас, как и меня, достало выслушивать (вычитывать) бесконечные обещания разработчика K2 опубликовать версию компонента K2 под Joomla 4 (без чего невозможно реализовать апгрейд from Joomla 3 to Joomla 4) - воспользуйтесь форком K2ForJ4. Который в данный момент установлен и без каких-либо проблем работает на этом веб-сайте.

Хитрости Joomla

Больше
13 года 2 мес. назад #1 от Aleksej
Aleksej создал тему: Хитрости Joomla
Снятие блокировки

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)

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 1
Больше
13 года 2 мес. назад - 13 года 2 мес. назад #2 от Aleksej
Aleksej ответил в теме Re: Хитрости Joomla
Продолжаем тему. :)

Рассмотрим, как сделать:
  1. отображения модуля только на определённых страницах;
  2. отображения модуля по IP-адресу или диапазону адресов;
  3. отображение модуля только определённому типу пользователей;
  4. отображение модуля при полном просмотре текста или новости.
Все эти хитрости мы осуществляем с помощью кусочка кода, внедрённого в шаблон сайта. Итак, начнем:

Отображение модуля только на определённых страницах

Чтобы отображать модуль только на определённых страницах, потребуется вставить следующий код:
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 года 2 мес. назад пользователем Aleksej.
Спасибо сказали: vitas1978

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 10 мес. назад #3 от Damian
Damian ответил в теме Re: Хитрости Joomla
Добрый день.
Code:
<?php if (!$my->id) { mosLoadModules ( 'user1' ); } else { mosLoadModules ( 'user2' ); } ?>
Что-то не работает. Для Joomla 2.5 точно так же прописывается?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
11 года 10 мес. назад #4 от serge
serge ответил в теме Re: Хитрости Joomla
Вряд ли. Очень старая ветка форума, все изменилось.

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум