Новости Joomla

Вышел WT Quick links v.2.4.0 - релиз модуля для Joomla

Вышел WT Quick links v.2.4.0 - релиз модуля для Joomla.Это модуль-конструктор для быстрого создания набора элементов. Это могут быть ссылки на компоненты Joomla, пункт меню или пользовательская ссылка. Есть условия для исключений показа элементов списка. Вы можете создавать собственные макеты вывода модуля, создавая таким образом почти всё, что угодно: от простого списка ссылок до стены фотографий на главную страницу или ссылки-теги для перелинковки категорий интернет-магазина, список FAQ, табы или аккордеоны. Модуль позволяет выводить изображения, адаптивные изображения, видео, адаптивные видео.v.2.4.0. Что нового?Добавлена поддержка новых компонентов. Добавлены новые типы ссылок и исключений для них: - Phoca Download, - Phoca Gallery, - RadicalMart (@radicalmart).Joomla 6. Успешно протестирована работа модуля на Joomla 6-alpha2.РазработчикамПроведён большой рефакторинг кода. Для типов ссылок созданы классы-драйверы. Теперь для того, чтобы добавить новый тип ссылки в модуль достаточно скопировать класс-образец из
modules/mod_wt_quick_links/src/Driver/Collection и наполнить его данными по образцу, а так же добавить необходимые языковые константы в панели администратора Joomla.Модуль бесплатный. Страница расширенияGitHub расширенияJoomla Extensions Directory👩‍💻 Подпишись на @joomlafeed.#joomla #разработка

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

👩‍💻 Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути

libraries/src/Form/FormField.php, а так же в
libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note"     name="your_note_for_user"     label="Заголовок примечания"     title="Альтернативный способ для заголовка"     description="Текст примечания"     class="col-12 alert alert-info"     heading="h1"     close="true"/>
heading - указывать уровень заголовка.
close - позволяет закрыть это примечание. В классе поля
libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён.Поэтому берём и создаём свой класс поля, который мы унаследуем от
NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля
Note + то, что мы сами добавим. В XML-манифест добавляем наше поле
<field type="systempluginstatus"      name="systempluginstatus"     addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>
-
type - имя файла и класса,-
addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный-
name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла
modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:
<?php// namespace для атрибута addfieldprefixnamespace Joomla\Module\Wtquicklinks\Site\Fields;// нельзя напрямую обращаться к этому файлуdefined('_JEXEC') or die;// подключаем родительский класс для переопределенияuse Joomla\CMS\Form\Field\NoteField;use Joomla\CMS\Language\Text;use Joomla\CMS\Plugin\PluginHelper;// имя класса и имя файла точь-в-точьclass SystempluginstatusField extends NoteField{     protected $type = 'Systempluginstatus';     protected function getLabel()          {               // если плагин не включён               if(PluginHelper::isEnabled('system','wtquicklinks')) {                    // меняем свойства родительского класса                    $this->class = 'alert alert-danger w-100';                    $this->element['label'] = '⚠️ А-а-а-а!';                    $this->element['description'] = 'Плагин не включён!!';                    // и просто рендерим его с нашими свойствами                    return parent::getLabel();               }          // А иначе всё хорошо, скрываем поле из виду.          $this->parentclass = 'd-none';          return '';     }}
Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает.@webtolkru#joomla #php #webdev #разработка

Обновлена информация в Плане развития Joomla

👩‍💻 Обновлена информация в Плане развития Joomla.Здесь собрана информация о датах релизов, описаны принципы версионирования, указаны ответственные за релизы, а так же даты окончания поддержки релизов. Опираясь на эту информацию вы можете планировать развитие ваших интернет-проектов.👩‍💻 Что нового?⛔️ Joomla 4.Дата окончания исправления ошибок безопасности в версии 4.x - 14 октября 2025г. ⚠️ После этой даты Joomla 4 прекратит получать какие-либо обновления, в том числе безопасности - вообще. Рекомендуем обновить ваши сайты до актуальной Joomla 5.✅ Joomla 5.- Дата окончания исправления ошибок в версии 5.x - 13 октября 2026г.- Дата окончания исправления ошибок безопасности в версии 5.x - 12 октября 2027 года.- Текущая актуальная (на момент написания заметки) версия - 5.3.1.- Опубликовано расписание выхода релизов Joomla 5.4. Стабильный релиз ожидается 14 октября 2025 года.✅ Joomla 6.- Дата окончания исправления ошибок в версии 6.x - 17 октября 2028г.- Дата окончания исправления ошибок безопасности в версии 6.x - 16 октября 2029г.- Опубликовано расписание выхода релизов Joomla 6.0. Стабильный релиз ожидается 14 октября 2025 года.- Для разработчиков уже доступна Joomla 6.0.0-alpha1.✅ Joomla! Framework.Обновлена информация о Joomla! Framework - полноценном PHP-фреймворке для разработки. Он в версиях 1.х и 2.х был самостоятельным параллельным проектом, однако начиная с версии Joomla 4.0 стал её основой. Добавлена информация о Joomla! Framework 3.x, который вышел 6 октября 2023 года. Его можно использовать в тех случаях, когда вам в проекте не нужна CMS Joomla целиком.Подробнее на сайте Joomla-сообщества Joomlaportal.ru#joomla #community

0 Пользователей и 1 Гость просматривают эту тему.
  • 22 Ответов
  • 1600 Просмотров
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Всем привет!
Если я не ошибаюсь, то в старых версиях Joomla (1.5-2.5) была возможность загрузки сайта на нужном языке в зависимости от местоположения юзера. Сейчас же в настройках только две опции: язык сайта/настройки браузера.
Возможно я ошибаюсь, и те настройки, о которых я говорю были исключительно для JoomFish, которой я раньше пользовался.

Как бы там ни было, прошу помощу. Может кто знает, как такое реализовать.
Если подробнее: русский язык должен быть только для России, для остальных стран — английский.

Заранее всем спасибо!
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
здра. так было на форуме чего-то такое
[Решено] Смена языка сайта по IP
Там очень ограниченное количество запросов можно делать к тому сайту для определения страны по IP. После определённого количества запросов сайт будет отдавать код 429 или что-то такое...
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
effrit, Gerostrat
Спасибо за подсказки! Я находил тот пост, на который вы ссылаетесь, но не был уверен, что это именно то, что нужно мне.
К тому же, я не понял, что делать с этим кодом. Модифицировать какой-то стандартный плагин, или же это код отдельного плагина?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
можно сделать болванку и в неё вставить
http://ссылка вырезана, так как домен распространяет вирусы/sozdanie-plagina.html

или в любой системный плагин добавить
вот это и то, что внутри (если в нем нет одноименной функции. если есть, то добавить только сам код)
Код
public function onAfterInitialise(){
}
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Вот это уже понятнее! Спасибо. Буду пробовать.
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
ну так надо в сессию или куку записывать значение, а не злоупотреблять хорошими сервисами  ;)
Можно, это да. Но дело в том, что для каждого посетителя нужно заново определять страну, а если посещаемость 5к в сутки? 10к? 30к?
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Товарищи, в моём случае, если будет 100 посетителей в сутки, то это будет праздник.
Так что пока-что мне и этого будет достаточно, если смогу реализовать это решение с куками.
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Товарищи, в моём случае, если будет 100 посетителей в сутки, то это будет праздник.
А потом вас настигнет успех, посещалка вырастет до 500 и тут сайт загнется из-за невозможности работы с внешним сервисом )
Попробуйте SxGeo - он тоже определяет город/страну по IP, но ищет в своей локальной базе. Ее можно обновлять время от времени. Наберите это в поиске - первым же результатом будет Sypex Geo. Скрипт бесплатный и базы (раньше точно) тоже.

Упс. По ссылке выше именно про эту библиотеку и пишут. Ладно...
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Есть модуль, работающий с базами Maxmind GeoIP https://dev.maxmind.com/geoip/geoip2/geolite2/
Базы бесплатные, но нужно региться уже.
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Gerostrat, зарегился, но как скачать не понял пока что :dry:
И что за модуль такой, который с этими базами работает?
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
effrit
Не получилось у меня его задействовать.
Взял код плагина, вставил его в заглушку, предварительно сгенерированную на сайте по вашей ссылке.
После установки плагина, к сожалению, я им воспользоваться не смог.
Во-первых он устанавливается не в /system/ плагины а в /authentication/, из-за чего при попытке авторизации сразу ошибку выдаёт. Ну то ладно ) Авторизация не нужна будет.
Во-вторых, если я правильно понял, надо ещё как-то подключать SxGeo.php, а в нутри него ещё есть ссылка на SxGeo.dat. Как всё это слепить в кучу, я не понял, и написал в личку pavel2950, от которого пока что жду ответ  ^-^

Я нашёл другой, в чём-то аналогичный, плагин: https://github.com/betweenbrain/Freegeoip-Plugin/releases
До 10 000 запросов можно в час делать.
Вот его код:
[свернуть]
Вот доступные переменные, которые он возвращает:
[свернуть]

Я попробовал, по аналогии с плагином Павла, взять данные из переменной freegeoip_country_code и заменить $uri, но совершенно ничего не вышло.
Возможно я не в той функции пытаюсь это сделать. Буду благодарен, если подскажете, как сделать, чтоб этот плагин вывел где-нибудь хотябы код текущей страны. А дальше я уже буду сам копать.
« Последнее редактирование: 11.02.2020, 18:04:05 от goga_pgasovav »
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Не знаю зачем оно вам. Но я б делал вообще без плагинов. Сперва настроил бы стандартную многоязычность джумлы, чтоб в адресе добавлялось /en/, /ru/, /ua/ и т.д., а потом добавил бы в корень сайта файл defines.php - он запускается до инициализации джумлы (и раньше всех ее плагинов, соответственно). В этом файле подключил бы библиотеку sxGeo, чтоб не тянуть ничего извне и не иметь ограничений по запросам. Из нее получал бы код страны и подменял адресный uri через $_SERVER['REQUEST_URI'] - именно его потом парсит джумла, чтоб язык подключался на одних и тех же (визуально для пользователя) ссылках без языковой метки. Если метка в ссылках нужна, то последний пункт заменить на редирект на ту же ссылку, только с подмененным языком.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну камон!
в генераторе плагина жмем на События, в Группе выбираем System и ставим галку напротив onAfterInitialise.
там же не просто кнопка "сделать зашибись", а с опциями...  ;D
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
sivers, effrit,
Камрады, ещё раз спасибо за помощь! Вопрос считаю закрытым. Всё получилось.  :D

В общем, если кому-то ещё понадобится нечто подобное, то вот инструкция:
1. Идём сюда: Смена языка сайта по IP и берём код из поста.
2. Создаём пустой плагин и вставляем в него этот код. Плагин можно сгенерировать тут: http://ссылка вырезана, так как домен распространяет вирусы/sozdanie-plagina.html В "Событиях" обязательно выбрать группу 'system'.
3. В плагине меняем условия на те, которые вас будут устраивать.
4. Иждём сюда: https://sypexgeo.net/ru/download/ и качаем Sypex Geo API (Sypex Geo для PHP 5.2+) и Базы данных для Sypex Geo 2.2 (в моём случае — Sypex Geo Country, для определения страны)
5. В корень папки с плагином нужно положить эти два файла.
На этом всё.
« Последнее редактирование: 11.02.2020, 21:47:43 от goga_pgasovav »
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Не прошло и полгода, как я возвращаюсь к вам со своими бедами  ;D
Короче говоря, всё работало как часы, НО! Переключение языков перестало работать. Что логично, т.к. сколько бы мы не переключали язык, при загрузке страницы плагин всё равно подменит его в зависимости от местоположения.

Я в PHP совсем не силён, и кукиз тем более никогда не использовал с помощью PHP (хотя в JS постоянно ими пользуюсь).
Модифицировал код вот так:

Код: php
<?php
defined('_JEXEC') or die;

class PlgSystemAutochangelang extends JPlugin {
    public function onAfterInitialise() {
        $app = JFactory::getApplication();
        if ($app->isSite()) {
            $uri = $_SERVER['REQUEST_URI'];           

            include_once __DIR__.'/SxGeo.php';

            $SxGeo = new SxGeo( __DIR__ .'/SxGeo.dat', SXGEO_BATCH | SXGEO_MEMORY);
            $get_country = $SxGeo->getCountry($_SERVER['REMOTE_ADDR']);
           
            if (!isset($_COOKIE['jcountry'])) {
                setcookie('jcountry', $get_country, time() + 2592000, '/');
                if ($get_country != 'RU' && strpos($uri, '/ru/')!== false) {
                    $uri = str_replace('/ru/', '/en/', $uri);
                } elseif ($get_country == 'RU' && strpos($uri, '/en/')!== false) {
                    $uri = str_replace('/en/', '/ru/', $uri);
                }
            }

            if ($uri != $_SERVER['REQUEST_URI']) {
                header('HTTP/1.1 303 See Other');
                header('Location: '.$uri);
                exit();
            }
        }
    }
}
?>

После этого языки переключаются как положено, но местоположение Россия никогда не срабатывает, хотя в куках записывается код страны 'RU'.
Как только убираю из кода проверку куки, то определение местоположения снова работает, а переключение языков — нет.
Отсюда вопрос: что я делаю не так?  :o
« Последнее редактирование: 12.02.2020, 17:54:02 от goga_pgasovav »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
в момент переключения языков на js запиши куку "не_юзать_автомат".
код внутри плагина оберни в условие на проверку наличия этой куки...
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
effrit,
Ну так по логике моего кода и так проверка с условием (если я нигде не ошибся):

1. Проверяю, наличие куки, если её НЕТ то идём дальше
2. Устанавливаем куку, делаем принудительное переключение языка

Если кука существует, то и происходить дальше не должно ничего.
Или я не прав?  *ОХ-Х-Х*
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Ну это просто какое-то наваждение  :'(
Перенёс проверку в самое начало кода, но всё равно не работает.
Как только убираю !isset($_COOKIE['jcountry']) сразу заводится! :dry:
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Разробрался!
Вот финальный код
[свернуть]
Кроме этого, хотелось бы добавить, что на каждую ссылку языка в «переключателе» необходимо повесить установку кукис через JS.
Я это сделал так:
Код: js
$('#language a').on('click', function(e) {
        $.cookie('jcountry', '1', { expires: 30, path: '/' });
});

P.S.: Значение куки значения не имеет ) Пардон за каламбур. Без этого скрипта работать будет, но с глюками.
P.S.2: Само собой, для работы jQuery c кукис, надо подключить соответствующий плагин. Я уже много лет использую этот: https://github.com/carhartl/jquery-cookie
« Последнее редактирование: 12.02.2020, 18:51:51 от goga_pgasovav »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает мобильная версия сайта

Автор jeans

Ответов: 4
Просмотров: 543
Последний ответ 21.05.2025, 12:44:06
от jeans
Разные меню для мобильной и для ПК версии сайта

Автор jimka

Ответов: 7
Просмотров: 969
Последний ответ 24.03.2025, 20:03:01
от R31rus
Множество несуществующих ссылок при обходе сайта роботом Яндекс

Автор goga_pgasovav

Ответов: 7
Просмотров: 1164
Последний ответ 10.12.2024, 18:44:25
от goga_pgasovav
Антивирус нашел вредоносный код в двух файлах сайта polyfill

Автор buto

Ответов: 4
Просмотров: 916
Последний ответ 19.10.2024, 10:56:55
от wishlight
Шаблон для данной страницы недоступен. сообщите об этом Администратору сайта

Автор 62411

Ответов: 2
Просмотров: 1149
Последний ответ 30.03.2024, 13:15:16
от web1